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

↓次


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