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分経ったので今日はここまで。

↓次


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