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