チャネルブレイクアウトbotコード(by スナフキン氏)読解メモ18
の続きです。
題材コードは https://sshuhei.com/entry/channelbreakout/ です。
# 直近約定件数30件の高値と安値
high = max([self.executions[-1 - i]["price"] for i in range(30)])
low = min([self.executions[-1 - i]["price"] for i in range(30)])
これも以前出てきた処理です。
コメント通り、直近約定30件の高値と安値を取得します。
judgement = self.judgeForLoop(high, low, entryHighLine,
entryLowLine, closeHighLine,
closeLowLine)
judgeForLoopメソッドを呼んでいます。
def judgeForLoop(self, high, low, entryHighLine, entryLowLine,
closeHighLine, closeLowLine):
"""
売り買い判断.入力した価格が期間高値より高ければ買いエントリー
期間安値を下抜けたら売りエントリー.judgementリストは
[買いエントリー,売りエントリー,買いクローズ(売り),売りクローズ(買い)]のリストになっている.
(値は0or1)
ローソク足は1分ごとに取得するのでインデックスが-1のもの(現在より1本前)をつかう.
"""
judgement = [0, 0, 0, 0]
# 上抜けでエントリー
if high > entryHighLine[-1]:
judgement[0] = 1
# 下抜けでエントリー
if low < entryLowLine[-1]:
judgement[1] = 1
# 下抜けでクローズ
if low < closeLowLine[-1]:
judgement[2] = 1
# 上抜けでクローズ
if high > closeHighLine[-1]:
judgement[3] = 1
return judgement
引数には
high=直近約定30件の高値、
low=直近約定30件の安値、
entryHighLine=entryTerm毎の高値リスト、
entryLowLine=entryTerm毎の安値リスト、
closeHighLine=closeTerm毎の高値リスト、
closeLowLine=closeTerm毎の安値リスト
が渡されています。
judgement = [0, 0, 0, 0]
最初にjudgementを定義します。
コメントにある通り、「judgementリストは[買いエントリー,売りエントリー,買いクローズ(売り),売りクローズ(買い)]のリスト」になっています。
それぞれ0か1が入ります。
# 上抜けでエントリー
if high > entryHighLine[-1]:
judgement[0] = 1
`entryHighLine[-1]` で直近のentryTerm期間の高値を取得できます。
その値を直近約定30件の高値が超えていれば、買いエントリーを1にします。
# 下抜けでエントリー
if low < entryLowLine[-1]:
judgement[1] = 1
`entryLowLine[-1]` で直近のentryTerm期間の安値を取得できます。
その値を直近約定30件の安値が下回っていれば、売りエントリーを1にします。
# 下抜けでクローズ
if low < closeLowLine[-1]:
judgement[2] = 1
`closeLowLine[-1]` で直近のcloseTerm期間の安値を取得できます。
その値を直近約定30件の安値が下回っていれば、買いクローズ(売り)を1にします。
# 上抜けでクローズ
if high > closeHighLine[-1]:
judgement[3] = 1
`closeHighLine[-1]` で直近のcloseTerm期間の高値を取得できます。
その値を直近約定30件の高値が超えていれば、売りクローズ(買い)を1にします。
return judgement
作ったjudgementを返します。
entryTermとcloseTermを分けているところが工夫ポイントに見えます。
パラメータをそれぞれで変更できることでトレードの柔軟性が向上しています。
15分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?