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

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

for column in row[:length - (number + 1):-1]:

row配列の後ろから順番にnumber個分の要素を取得してforブロックの処理を実行します。

# dataへローソク足データを追加.
if column[4] != 0:
    column = column[0:6]
    data.append(column)

columnには下記のようなデータが入っています。

[1534087140,708124,709096,708000,708935,200.0809,141760750]

column[4]は上記配列の5つめの要素を意味するので上の例だと `708935` です。
これはclose priceを意味します。
コメントにもあったように「cryptowatchはときどきおかしなデータ(price=0)が含まれるのでそれを除く.」ようです。
おかしなデータというのは、0が入ってくるということのようです。
column[0:6]でcolumn配列の0番目から5番目までの値を取ってきます。
これは順番に、時刻・open price・high price・low price・close priceです。
これを、用意しておいたdata配列に追加します。

return data[::-1]

for文のloopでdata配列を仕上げたら、上記処理でdata配列を逆順にしてreturnします。
ということでgetCandlestickで返される情報は下記のような構造です。

[
   [1534087140,708124,709096,708000,708935],
   [1534087200,708934,709770,708649,709026],
   [1534087260,709033,709797,708895,709318],
   [1534087320,709336,709445,708246,708436],
   ...,
   [1534117740,706950,707567,706911,707265]
]

getCandlestickの解明が終わったので、loopメソッドの下記処理まで戻ります。

try:
    candleStick = self.getCandlestick(50, "60")
except:
    print("Unknown error happend when you requested candleStick")

getCandlestickにnumber=50, period="60"を指定しています。
ここまで読解してきたことを振り返ると、直近50本の1分足のローソク足を取得するということになります。
例外が飛んだ場合は標準出力だけ出して処理は終わりません。

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

↓次


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