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

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

optimizationメソッドの続きから。

    total = len(entryAndCloseTerm) * len(rangeThAndrangeTerm) * len(waitTermAndwaitTh) * len(rangePercentList) * len(candleTerm)

設定の組み合わせ数をtotalに入れておきます。

    paramList = []
    params = []
    for i, j, k, l, m in itertools.product(entryAndCloseTerm, rangeThAndrangeTerm, waitTermAndwaitTh, rangePercentList, candleTerm):
        params.append([i, j, k, l, m, cost, fileName, core, useBlackList])

再びitertool.productを使って、設定の組み合わせを列挙します。
params配列に設定組み合わせ配列を全てappendします。

   black_list = read_blacklist()

read_blacklistメソッドでblacklistを読み込みます。
read_blacklistメソッドを見てみます。

def read_blacklist():
    if os.path.exists('blacklist.csv'):
        return pd.read_csv('blacklist.csv', header=0, sep=',')
    else:
        return pd.read_csv('blacklist_default.csv', header=0, sep=',')

blacklist.csvが存在する場合はそれを読み込みます。
存在しない場合はblaclist_default.csvを読み込みます。
defaultファイルはcsvヘッダだけのファイルのようです。
https://raw.githubusercontent.com/Connie-Wild/ChannelBreakoutBot/master/blacklist_default.csv

optimizationメソッドに戻ります。

    if core == 1:
        # 同期処理
        for param in params:
            result = describe(param)
            paramList.append(result)
            logging.info('[%s/%s]',len(paramList),total)

core数が1の場合は同期処理でテストを実行します。
describeメソッドにパラメータを渡します。

describeメソッドを見てみます。

def describe(params):
    i, j, k, l, m, cost, fileName, core, useBlackList = params

受け取ったパラメータをi, j, 以下の変数に入れます。

    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インスタンスを作り、受け取ったパラメータをそれぞれインスタンスに設定します。

    if core == 1:
        logging.info('================================')
        logging.info('entryTerm:%s closeTerm:%s rangePercent:%s rangePercentTerm:%s rangeTerm:%s rangeTh:%s waitTerm:%s waitTh:%s candleTerm:%s',i[0],i[1],l[0],l[1],j[1],j[0],k[0],k[1],m)
    else:
        pass

core指定が1の場合はパラメータのログを出力します。
それ以外の場合は出力しません。

    # ブラックリスト判定
    is_blacklist = False
    if useBlackList:
        bl = read_blacklist()

useBlackListフラグが立っている場合はブラックリスト判定を行います。
blacklistをread_blacklistメソッドで読み込みます。
blはpandas dataframeです。
dataframe.columns.valuesで列ラベルを取得します。

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

↓次


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