Channel Breakout Bot for bitflyer-FX (by Connie-Wild氏)読解メモ39

の続きです。
題材は https://github.com/Connie-Wild/ChannelBreakoutBot です。

describeResultメソッドの続きから。

            candle_plot.save(df_candleStick, pl, buyEntrySignals, sellEntrySignals, buyCloseSignals, sellCloseSignals, fileName)

candle_plotのsaveメソッドを実行します。
saveメソッドを見てみます。

def save(df_candleStick, plofits, buy_entry_signals, sell_entry_signals, buy_close_signals, sell_close_signals, file_name):
    import matplotlib
    matplotlib.use('Agg')
    plot(df_candleStick, plofits, buy_entry_signals, sell_entry_signals,
         buy_close_signals, sell_close_signals, False, file_name)

グラフをsaveするのでmatplotlibをimportします。
グラフをファイルに保存するときは matplotlib.use('Agg') を書きます。
plotメソッドを実行します。
plotメソッドは前に見た通りです。
これでグラフが画像ファイルとして保存されます。
describeResultメソッドに戻ります。

            candle_plot.save(df_candleStick, pl, buyEntrySignals, sellEntrySignals, buyCloseSignals, sellCloseSignals, fileName)
            self.statusNotify("Result of backtest",fileName)

グラフを画像ファイルとして保存し、
文字列とそのファイル名を指定してLINEまたはdiscordに通知します。

        else:
            pass

showFigureもsendFigureも指定されていない場合は何もしません。

        #各統計量の計算および表示.
        winTrade = sum([1 for i in plPerTrade if i > 0])
        loseTrade = sum([1 for i in plPerTrade if i < 0])

勝ちトレード数と負けトレード数を集計します。
トレード毎損益が正であれば勝ちトレード、負であれば負けトレードとします。

        try:
            winPer = round(winTrade/(winTrade+loseTrade) * 100,2)
        except:
            winPer = 100

勝率をパーセンテージ表記で小数点第二位まで出します。
例外が起きた場合は勝率100%です。

        winTotal = sum([i for i in plPerTrade if i > 0])
        loseTotal = sum([i for i in plPerTrade if i < 0])

利益総額と損失総額を集計します。
損益が正のものを全て加算してwinTotalに入れ、
損益が負のものを全て加算してloseTotalに入れます。

        try:
            profitFactor = round(winTotal/-loseTotal, 3)
        except:
            profitFactor = float("inf")

profitfactorを計算します。
利益総額を損失総額で割って小数点第三位まで出します。
例外が飛んだ場合はprofitfactorは∞です。

15分経ったので今日はここまで。

↓次


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