前回、https://api.cryptowat.ch/markets/bitflyer/btcjpy/ohlc?periods=86400&after=1661299200のデータを確認しました。after=1661299200を人間でもわかる日時に直すと
タイムスタンプ=1661299200
↓
日時(Tokyo)=2022/08/24 09:00:00
でした。
after=**********以降のデータを取得しています。少し期間を伸ばしてデータを取得してみましょう。
2022/04/01 09:00:00をUNIXタイムスタンプに変更して、データを取得してみてください。
https://api.cryptowat.ch/markets/bitflyer/btcjpy/ohlc?periods=86400&after=1648771200
データ量が多くなったはずです。JSON形式の見方を忘れてしまった方はこちら(JSON形式のデータから欲しい情報を取得しよう)を参照してください。
このデータから指定した日時の最安値の値を取得してみましょう。
Contents
指定した日時の最安値の値を取得してみよう
JSONデータから、2022年4月27日の始値を目視でさっと探すのは難しいです。
このような場合にプログラムでデータを探します。
取得するためのコードは以下の通りです。
import requests response = requests.get("https://api.cryptowat.ch/markets/bitflyer/btcjpy/ohlc?periods=86400&after=1648771200") data = response.json() for item in data["result"]["86400"]: if item[0] == 1651017600: print(item[1])
結果として、5169873が取得できたと思います。
JSONデータの中身
[xx,xx,xx,xx….]から始値ってどうやって見つけるの?となっているはずです。[xx,xx,xx,xx….]の順番で[ 取引時間(クローズ), 始値 , 高値 , 安値 , 終値 , 出来高 , 不明(ごめんなさい)]となっています。
ですので、始値を取得したい場合、pyrhonのリストの型で順番を表現するのであれば[1]となります。
また、今後OHLCという言葉を聞くことが多くなると思います。
- OpenPrice (始値)
- HighPrice (高値)
- LowPrice (安値)
- ClosePrice (終値)
を指します。
JSONデータから取得できますね。
コードの中身を簡単に解説
JSONデータから目視で探すのは非常に大変です。
ですので、2022年4月27日の始値を自動的に見つけて、ヒットしたら表示させるということを行なっています。
この処理を書き出してみます。
- bitflyerのデータを取得する
- 変数に代入する
- 取引時間(クローズ)が2022年4月27日を見つける
- 2022年4月27日がみつかったら、始値を取得する
- 取得した始値を表示させる
上記の流れをプログラムで表現すればOKです。
処理1,2は以前にも説明させていただいたので割愛します。3からが問題です。botを作る上でというより、システムを開発する上で、必要なfor文とif文のプログラミングが必要になります。とはいえ、やっていることを理解できればそんな難しいことではありません。
for文とif文
今回のコードベースで話を進めます。
for item in data[“result”][“86400”]:部分ですが、data[“result”][“86400”]の数だけitemに値を入れるということを繰り返しております。
if文ではitem[0]が1651017600であった場合、item[1]を表示するとなっています。逆に考えれば、item[0]が1651017600でなければ何も表示されません。
最後に
CryptowatchのAPIで取得したJSONデータから欲しい数字を取り出すことができました。
今回、取得日を1651017600としてしているので、この部分を変数にして、プログラム的に取得することも可能です。カスタマイズは幅広いです。みなさんが思うとおりにチャレンジしてみてください。
※注意:本bot開発は「文系でもわかる!BitcoinのBOT自動売買トレードの始め方」をもとに開発・自分なりの解釈用備忘録としています。