チャネルブレイクアウト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分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?