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

↓次


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