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分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?