チャネルブレイクアウトbotコード(by スナフキン氏)読解メモ34

の続きです。
題材コードは https://sshuhei.com/entry/channelbreakout/ です。

describeResultメソッドの続きから。

        judgement = self.judge(df_candleStick, entryHighLine, entryLowLine,
                              closeHighLine, closeLowLine, entryTerm)

judgeメソッドを見ていきます。
実取引部分ではjudgeForLoopメソッドでした。
おそらくバックテストのコードを書いてから実取引のコードを書いていることがうかがえます。
素晴らしい。

    def judge(self, df_candleStick, entryHighLine, entryLowLine, closeHighLine,
             closeLowLine, entryTerm):
       """
       売り買い判断.ローソク足の高値が期間高値を上抜けたら買いエントリー.
       (2)ローソク足の安値が期間安値を下抜けたら売りエントリー.
       judgementリストは[買いエントリー,売りエントリー,買いクローズ(売り),売りクローズ(買い)]
       のリストになっている.
       (二次元リスト)リスト内リストはの要素は,0(シグナルなし),価格(シグナル点灯)を取る.
       """
       judgement = [[0, 0, 0, 0] for i in range(len(df_candleStick.index))]
       for i in range(len(df_candleStick.index)):
           # 上抜けでエントリー
           if df_candleStick["high"][i] > entryHighLine[i] and i >= entryTerm:
               judgement[i][0] = entryHighLine[i]
           # 下抜けでエントリー
           if df_candleStick["low"][i] < entryLowLine[i] and i >= entryTerm:
               judgement[i][1] = entryLowLine[i]
           # 下抜けでクローズ
           if df_candleStick["low"][i] < closeLowLine[i] and i >= entryTerm:
               judgement[i][2] = closeLowLine[i]
           # 上抜けでクローズ
           if df_candleStick["high"][i] > closeHighLine[i] and i >= entryTerm:
               judgement[i][3] = closeHighLine[i]
           #
           else:
               pass
       return judgement

引数は、
df_candleStick=ローソク足配列、
entryHighLine=entryTerm毎の高値配列、
entryLowLine=entryTerm毎の安値配列、
closeHighLine=closeTerm毎の高値配列、
closeLowLine=closeTerm毎の安値配列、
entryTerm=entry判断に使う期間、
です。

       judgement = [[0, 0, 0, 0] for i in range(len(df_candleStick.index))]

最初にjudgement配列に[0,0,0,0]をローソク足配列の行数分入れておきます。

       for i in range(len(df_candleStick.index)):

ローソク足の数ぶんforブロックの処理を実行します。

           # 上抜けでエントリー
           if df_candleStick["high"][i] > entryHighLine[i] and i >= entryTerm:
               judgement[i][0] = entryHighLine[i]
df_candleStick["high"][i] > entryHighLine[i]

ローソク足の高値がentryTerm毎の高値よりも大きく、

and i >= entryTerm:

かつforのループ回数がentryTerm以上であれば、

                judgement[i][0] = entryHighLine[i]

judgement配列のi行0列にentryTerm毎の高値を入れます。

            # 下抜けでエントリー
            if df_candleStick["low"][i] < entryLowLine[i] and i >= entryTerm:
                judgement[i][1] = entryLowLine[i]

同様に、ローソク足の安値がentryTerm毎の安値よりも下かつループの回数がentryTerm以上であれば、
judgement配列のi行1列にentryTerm毎の安値を入れます。

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

↓次


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