チャネルブレイクアウト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分経ったので今日はここまで。

↓次


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