チャネルブレイクアウトbotコード(by スナフキン氏)読解メモ15

の続きです。
題材コードは https://sshuhei.com/entry/channelbreakout/ です。

processCandleStickメソッドの続きから。

def processCandleStick(self, candleStick, timeScale):
  """
  1分足データから各時間軸のデータを作成.timeScaleには5T(5分),H(1時間)などの文字列を入れる
  """
  df_candleStick = self.fromListToDF(candleStick)
  processed_candleStick = df_candleStick.resample(timeScale).agg(
      {'open': 'first', 'high': 'max', 'low': 'min', 'close': 'last'})
  processed_candleStick = processed_candleStick.dropna()
  return processed_candleStick
  processed_candleStick = processed_candleStick.dropna()
  return processed_candleStick

`dropna()` はpandasのメソッドです。
欠損値を削除します。
参考: https://note.nkmk.me/python-pandas-nan-dropna-fillna/
ローソク足が歯抜けたとしても不十分な情報が含まれるよりは良いということでしょう。
最後に、欠損値を削除した値をreturnしています。

loopメソッドに戻ります。

if candleTerm == None:
  df_candleStick = self.fromListToDF(candleStick)
else:
  df_candleStick = self.processCandleStick(candleStick, candleTerm)

df_candleStick変数には、
candleTermが指定されている場合は指定された分足のローソク足情報が、
指定されていない場合は1分足のローソク足情報が含まれていることがわかりました。

entryLowLine, entryHighLine = self.calculateLines(df_candleStick,
                                                  entryTerm)

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)

コメントによると「期間高値・安値を計算する」メソッドです。
引数でdf_candleStick(ローソク足情報)を渡しているので、それを計算対象として高値・安値を抽出すると予想できます。
termは「安値,高値を計算する期間.(5ならローソク足5本文の安値,高値.)」ということで、整数が指定されるようです。

lowLine = []
highLine = []

for文内で入力するための空配列を作ります。

for i in range(len(df_candleStick.index)):

`len(df_candleStick.index)` でローソク足の数を求めます。
`for i in range(x)` でx回ループを回します。

       if i < term:
           lowLine.append(df_candleStick["high"][i])
           highLine.append(df_candleStick["low"][i])

iがtermより小さければ、
lowLineにはローソク足の高値を、
highLineにはローソク足の安値を入れています。
(これは直感的に不自然ですが、一旦このまま読み進んでみます。)

15分経ったので今日はここまで。

↓次


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