チャネルブレイクアウトbotコード(by スナフキン氏)読解メモ33
の続きです。
題材コードは https://sshuhei.com/entry/channelbreakout/ です。
readDataFromFileメソッドの続きから。
# csvファイル(ヘッダなし)からohlcデータを作成.
def readDataFromFile(self, filename):
for i in range(1, 10, 1):
with open(filename, 'r', encoding="utf-8") as f:
reader = csv.reader(f)
header = next(reader)
for row in reader:
candleStick = [row for row in reader if row[4] != "0"]
dtDate = [datetime.datetime.strptime(data[0], '%Y-%m-%d %H:%M:%S') for
data in candleStick]
dtTimeStamp = [dt.timestamp() for dt in dtDate]
for i in range(len(candleStick)):
candleStick[i][0] = dtTimeStamp[i]
candleStick = [[float(i) for i in data] for data in candleStick]
return candleStick
dtDate = [datetime.datetime.strptime(data[0], '%Y-%m-%d %H:%M:%S') for
data in candleStick]
ローソク足配列から各行の0列目を取り出し、datetime型にしてdDate配列に入れます。
dtTimeStamp = [dt.timestamp() for dt in dtDate]
さらにそれをtimestampにしたものをdtTimestamp配列に入れます。
for i in range(len(candleStick)):
candleStick[i][0] = dtTimeStamp[i]
ローソク足データの0列目をtimestampに変更します。
candleStick = [[float(i) for i in data] for data in candleStick]
ローソク足配列内の情報を全てfloat型に変換します。
return candleStick
生成したローソク足配列を返します。
describeResultメソッドに戻ります。
else:
candleStick = self.readDataFromFile(fileName)
fileNameが指定されているときはファイルからローソク足データを取得しました。
if candleTerm != None:
df_candleStick = self.processCandleStick(candleStick, candleTerm)
candleTermが指定されていない場合、processCandleStickメソッドの処理をします。
processCandleStickメソッドについては↓辺りで見たので割愛します。
デフォルトでは、
channelBreakOut.candleTerm = "5T"
が指定されているので、5分足のローソク足が生成されます。
else:
df_candleStick = self.fromListToDF(candleStick)
candleTermが指定されていない場合はfromListToDFメソッドを実行します。
fromListToDFメソッドは↓辺りで見たので割愛します。
candleTermが指定されていない場合は渡されたローソク足の分足でpandasデータを作ります。
entryLowLine, entryHighLine = self.calculateLines(df_candleStick,
entryTerm)
closeLowLine, closeHighLine = self.calculateLines(df_candleStick,
closeTerm)
calculateLinesメソッドを実行します。
calculateLinesメソッドは↓辺りで見たので割愛します。
15分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?