チャネルブレイクアウトbotコード(by スナフキン氏)読解メモ16
の続きです。
題材コードは https://sshuhei.com/entry/channelbreakout/ です。
calculateLinesメソッドの続きから。
def calculateLines(self, df_candleStick, term):
"""
期間高値・安値を計算する.
candleStickはcryptowatchのローソク足.termは安値,高値を計算する期間.(5ならローソク足5本文の安値,高値.)
"""
lowLine = []
highLine = []
for i in range(len(df_candleStick.index)):
if i < term:
lowLine.append(df_candleStick["high"][i])
highLine.append(df_candleStick["low"][i])
else:
low = min(
[price for price in df_candleStick["low"][i - term:i]])
high = max(
[price for price in df_candleStick["high"][i - term:i]])
lowLine.append(low)
highLine.append(high)
return (lowLine, highLine)
else:
low = min(
[price for price in df_candleStick["low"][i - term:i]])
high = max(
[price for price in df_candleStick["high"][i - term:i]])
lowLine.append(low)
highLine.append(high)
iがterm以上の場合。
[price for price in df_candleStick["low"][i - term:i]]
ローソク足の安値の `i-term` から `i` 未満の配列番号のpriceが入った配列を生成しています。
これを `min()` で囲っているので、この範囲の安値の中で一番小さい値がlowに入ります。
逆にこの範囲の高値の中で一番大きい値がhighに入ります。
low, highそれぞれlowLine, highLineにappendされます。
こう見ると `if i < term:` ブロックの `lowLine.append(df_candleStick["high"][i])` は本来 `df_candleStick["low"]` を入れるべきなのかもしれません。
最後に `return (lowLine, highLine)` で lowLine と highLineをまとめて返しています。
loopメソッドに戻ります。
entryLowLine, entryHighLine = self.calculateLines(df_candleStick,
entryTerm)
closeLowLine, closeHighLine = self.calculateLines(df_candleStick,
closeTerm)
entryTerm毎の安値リスト・高値リストとcloseTerm毎の安値リスト・高値リストを取得できました。
15分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?