チャネルブレイクアウトbotコード(by スナフキン氏)読解メモ21
の続きです。
題材コードは https://sshuhei.com/entry/channelbreakout/ です。
isRangeメソッドの続きから。
def isRange(self, df_candleStick, term, th):
"""
レンジ相場かどうかをTrue,Falseの配列で返す.termは期間高値・安値の計算期間.
thはレンジ判定閾値.
"""
# 値幅での判定.
if th != None:
priceRange = self.calculatePriceRange(df_candleStick, term)
isRange = [th > i for i in priceRange]
# 終値の標準偏差の差分が正か負かでの判定.
elif th == None and term != None:
df_candleStick["std"] = [
df_candleStick["close"][i - term + 1:i].std() for i in
range(len(df_candleStick.index))]
df_candleStick["std_slope"] = [
df_candleStick["std"][i] - df_candleStick["std"][i - 1] for i in
range(len(df_candleStick.index))]
isRange = [i > 0 for i in df_candleStick["std_slope"]]
else:
isRange = [False for i in df_candleStick.index]
return isRange
elif th == None and term != None:
レンジ判定閾値が指定されておらず、かつ、termが指定されている場合の処理に入ります。
df_candleStick["std"] = [
df_candleStick["close"][i - term + 1:i].std() for i in
range(len(df_candleStick.index))]
for以下は以前と同じでローソク足の要素数分iを加算して繰り返します。
`std()` することで対象期間内の終値の標準偏差を取得しています。
df_candleStick["std"]には、対象期間内の終値の標準偏差が入ります。
df_candleStick["std_slope"] = [
df_candleStick["std"][i] - df_candleStick["std"][i - 1] for i in
range(len(df_candleStick.index))]
for以下は上記と同じです。
slopeは傾きです。
上で作ったstd配列の各要素間の差分を計算して配列に入れています。
isRange = [i > 0 for i in df_candleStick["std_slope"]]
標準偏差の要素間差分が0より大きければTrueが入ります。
else:
isRange = [False for i in df_candleStick.index]
その他のケース(thもtermも指定されていない場合)は、Falseが詰められます。
return isRange
生成したisRange配列を返します。
loopメソッドに戻ります。
# 現在レンジ相場かどうか.
isRange = self.isRange(df_candleStick, rangeTerm, rangeTh)
isRangeメソッドで生成したisRange配列を変数isRangeに格納します。
15分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?