チャネルブレイクアウト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分経ったので今日はここまで。

↓次


この記事が気に入ったらサポートをしてみませんか?