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

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

backtestメソッドの続きから。

        for i in range(len(judgement)):

judgement配列をfor文で回します。

            if i > 0:
               lastPL = pl[-1]
               pl.append(lastPL)

最初のループ以外の場合は、lastPL にplの最後の要素を入れます。
その後plにlastPLを入れます。
plにlastPLが2つずつ入ってしまいそうですが、何かしら意味があるものと思って一旦前に進みます。

           # エントリーロジック
           if pos == 0 and not isRange[i]:

ポジションを持っておらずかつレンジでない場合の分岐です。

               # ロングエントリー
               if judgement[i][0] != 0:
                   pos += 1
                   buy_entry.append(judgement[i][0])
                   buyEntrySignals.append(df_candleStick.index[i])

judgement配列の0列目が0でない場合はエントリーします。
エントリーした場合ポジションを1増やします。
buy_entry配列にjudgement結果をいれます。
buyEntrySignals配列にローソク足データを入れます。

               # ショートエントリー
               elif judgement[i][1] != 0:
                   pos -= 1
                   sell_entry.append(judgement[i][1])
                   sellEntrySignals.append(df_candleStick.index[i])

judgement配列の1列目が0でない場合はショートエントリーします。
ショートエントリーした際はポジションを1減らします。
ロングエントリー時と同様に、sell_entry配列にjudgement結果を入れ、
sellEntrySignals配列にローソク足データを入れます。

           # ロングクローズロジック
           elif pos == 1:

正のポジションがある場合は、ロングクローズを試みます。

               # ロングクローズ
               if judgement[i][2] != 0:

judgement配列の2列目が0でない場合の分岐です。

                   nOfTrade += 1
                   pos -= 1
                   buy_close.append(judgement[i][2])

nOfTradeに1追加します。
おそらくこの変数はトレード回数といった趣旨の変数でしょうか。
ポジションを1減らします。
buy_close配列にjudgement結果を追加します。

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

↓次


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