Channel Breakout Bot for bitflyer-FX (by Connie-Wild氏)読解メモ51
の続きです。
題材は https://github.com/Connie-Wild/ChannelBreakoutBot です。
optimizationメソッドの続きから。
space = [hp.choice('i',entryAndCloseTerm), hp.choice('j',rangeThAndrangeTerm), hp.choice('k',waitTermAndwaitTh), hp.choice('l',rangePercentList), hp.choice('m',candleTerm), cost, mlMode, fileName]
spaceにはchoiceで得たパラメータのグラフたちとcost, mlMode, fileNameが入ります。
result = fmin(describe,space,algo=tpe.suggest,max_evals=hyperopt)
fminはある関数の結果が最小になるパラメータの組み合わせを探索する処理です。
参考: https://qiita.com/kenchin110100/items/ac3edb480d789481f134#hyperopt%E3%81%AE%E8%A8%88%E7%AE%97
第一引数に最小化したい関数、
第二引数に探索するパラメータのリスト、
第三引数に利用するアルゴリズム、
第四引数に探索回数を渡しています。
describeメソッドを見てみます。
def describe(params):
i, j, k, l, m, cost, mlMode, fileName = params
配列で渡したパラメータparamsを分解して受け取ります。
channelBreakOut = channel.ChannelBreakOut()
channelBreakOut.entryTerm = i[0]
channelBreakOut.closeTerm = i[1]
channelBreakOut.rangeTh = j[0]
channelBreakOut.rangeTerm = j[1]
channelBreakOut.waitTerm = k[0]
channelBreakOut.waitTh = k[1]
channelBreakOut.rangePercent = l[0]
channelBreakOut.rangePercentTerm = l[1]
channelBreakOut.candleTerm = str(m) + "T"
channelBreakOut.cost = cost
channelBreakOut.fileName = fileName
ChannelBreakOutインスタンスを生成し、受け取ったパラメータを設定します。
logging.info("===========Test pattern===========")
logging.info('candleTerm:%s',channelBreakOut.candleTerm)
logging.info('entryTerm:%s closeTerm:%s',channelBreakOut.entryTerm,channelBreakOut.closeTerm)
logging.info('rangePercent:%s rangePercentTerm:%s',channelBreakOut.rangePercent,channelBreakOut.rangePercentTerm)
logging.info('rangeTerm:%s rangeTh:%s',channelBreakOut.rangeTerm,channelBreakOut.rangeTh)
logging.info('waitTerm:%s waitTh:%s',channelBreakOut.waitTerm,channelBreakOut.waitTh)
logging.info("===========Backtest===========")
テストするパラメータの組み合わせを出力します。
15分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?