チャネルブレイクアウトbotコード(by スナフキン氏)読解メモ26
の続きです。
題材コードは https://sshuhei.com/entry/channelbreakout/ です。
describePLForNotificationメソッドの続きから。
def describePLForNotification(self, pl, df_candleStick):
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
close = df_candleStick["close"]
index = range(len(pl))
# figure
fig = plt.figure(figsize=(20, 12))
# for price
ax = fig.add_subplot(2, 1, 1)
ax.plot(df_candleStick.index, close)
ax.set_xlabel('Time')
# y axis
ax.set_ylabel('The price[JPY]')
# for PLcurve
ax = fig.add_subplot(2, 1, 2)
# plot
ax.plot(index, pl, color='b', label='The PL curve')
ax.plot(index, [0] * len(pl), color='b', )
# x axis
ax.set_xlabel('The number of Trade')
# y axis
ax.set_ylabel('The estimated Profit/Loss(JPY)')
# legend and title
ax.legend(loc='best')
ax.set_title('The PL curve(Time span:{})'.format(self.candleTerm))
# save as png
today = datetime.datetime.now().strftime('%Y%m%d')
number = "_" + str(len(pl))
fileName = today + number + ".png"
plt.savefig(fileName)
plt.close()
return fileName
# y axis
ax.set_ylabel('The price[JPY]')
グラフのy軸にも名前を付けます。
# for PLcurve
ax = fig.add_subplot(2, 1, 2)
figureに2行目のグラフをプロット番号2として用意します。
# plot
ax.plot(index, pl, color='b', label='The PL curve')
x軸にindex(損益履歴の要素個数)、y軸に損益を取り、青色のグラフを描画します。
labelの文字列はグラフの説明です。
ax.plot(index, [0] * len(pl), color='b', )
x軸にindex、y軸は0の直線を青色で引いて重ねます。
損益がマイナスになることもあると思うので、グラフをわかりやすくするためだと思われます。
# x axis
ax.set_xlabel('The number of Trade')
# y axis
ax.set_ylabel('The estimated Profit/Loss(JPY)')
x軸とy軸の説明を追加します。
# legend and title
ax.legend(loc='best')
グラフの凡例を表示します。
bestを指定するとグラフの空いているところに表示してくれます。
参考: http://www2.kaiyodai.ac.jp/~kentaro/materials/new_HP/python/12plot_data.html
ax.set_title('The PL curve(Time span:{})'.format(self.candleTerm))
グラフのタイトルを設定します。
'fugafuga: {}'.format("hoge")で"hoge"を中括弧の中に入れてくれます。便利。
15分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?