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

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

# ローソク足の時間を指定
periods = [period]

ローソク足の時間を設定してます。
配列に入れるということは複数指定できるのかもしれません。

# クエリパラメータを指定
query = {"periods": ','.join(periods)}
# ローソク足取得
res = \
    json.loads(requests.get(
        "https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc",
         params=query).text)[
         "result"]

cryptowatchのAPIを参照しています。
cyrptowatchでは様々な取引所の情報を取得することができます。
ここで利用しているのはohlcAPIです。
主にopen, high, low, closeの価格を取得するために利用します。
参考: https://cryptowat.ch/docs/api#ohlc

cryptowatchのAPIでは `https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=60,180` というようにクエリパラメータのperiodsにカンマ区切りで複数のローソク足時間を指定することができます。
これを実現するためにperiodsが配列で表現されているようです。
`','.join(periods)` の処理によって、periods配列の中身がカンマで連結された文字列を生成しています。

# ローソク足のデータを入れる配列.
data = []
for i in periods:
   row = res[i]
   length = len(row)
   for column in row[:length - (number + 1):-1]:
       # dataへローソク足データを追加.
       if column[4] != 0:
           column = column[0:6]
           data.append(column)
return data[::-1]

APIで取得したデータを使ってローソク足データを生成します。

data = []

結果データを入れる配列を作っておきます。

for i in periods:

periods配列の要素を一つずつiに入れてforブロック内の処理を繰り返します。

row = res[i]

resにはcryptowatchAPIレスポンスが入っています。
iにはperiodsの要素が入っています(例えば `60` が入っています)。
`https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods=60` を参照してみると分かりますが、res[i] には下記のようなデータが入ってきます。

[
    [1534087140,708124,709096,708000,708935,200.0809,141760750],
    [1534087200,708934,709770,708649,709026,225.21214,159729820],
    [1534087260,709033,709797,708895,709318,156.52386,111034750],
    [1534087320,709336,709445,708246,708436,175.01132,124050104],
    ...,
    [1534117740,706950,707567,706911,707265,92.18739,65191696]
]

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

↓次


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