チャネルブレイクアウト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分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?