Channel Breakout Bot for bitflyer-FX (by Connie-Wild氏)読解メモ38
の続きです。
題材は https://github.com/Connie-Wild/ChannelBreakoutBot です。
plotメソッドの続きから。
ax.vlines([df.index.get_loc(s) for s in sell_entry_signals],
ymin, ymax, "red", linestyles='dashed', linewidth=1)
ax.vlines([df.index.get_loc(s) for s in buy_close_signals],
ymin, ymax, "black", linestyles='dashed', linewidth=1)
ax.vlines([df.index.get_loc(s) for s in sell_close_signals],
ymin, ymax, "green", linestyles='dashed', linewidth=1)
sell_entry_signals, buy_close_signals, sell_close_signalsについても同様にvlineを引きます。
# 2つ目のグラフ(収益グラフ)
ax2 = plt.subplot(2, 1, 2)
ax2.plot(xdate, plofits)
# 0に横線
ax2.hlines(y=0, xmin=ax.get_xticks()[0], xmax=ax.get_xticks()[-1],
colors='k', linestyles='dashed')
2行1列のグラフの2番目のグラフを描画します。
x軸に日付、y軸に損益を描画します。
hlinesで横線を引きます。
収益の補助線なのでy軸は0、xminに日時の先頭データ、
xmaxに日時の末尾データを入れます。
# X軸の範囲を合わせる(candlestick2_ohlc内でxlimが指定されている為)
ax2.set_xlim(ax.get_xlim())
ax2.xaxis.set_major_locator(ticker.MaxNLocator(locate_size))
ax2.xaxis.set_major_formatter(ticker.FuncFormatter(dateformat))
ax2.autoscale_view()
ax2.grid()
ax2.set_ylabel("PL(JPY)")
1つめのグラフとx軸の範囲をあわせます。
set_major_locatorとset_major_formatterも1つめのグラフと同等のものを指定します。
グラフにgridを施し、y軸のラベルを設定します。
if is_show:
plt.show()
else:
plt.savefig(file_name)
plt.close(fig)
is_showフラグがtureの場合はグラフを表示します。
falseの場合はグラフ画像を保存します。
describeResultメソッドに戻ります。
elif self.sendFigure:
from src import candle_plot
# save as png
today = datetime.datetime.now().strftime('%Y%m%d')
number = "_" + str(len(pl))
fileName = "png/" + today + number + ".png"
sendFigreフラグが立っている場合の処理です。
現在の日付の文字列をtoday変数に入れます。
それと損益配列の長さを組みわせたものに png拡張子を付けたものをfileNameとします。
15分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?