私はBitflyerでアカウントを保有しているので、BitflyerのパブリックAPIを使っていきたいと思います。
実はAPIには、「パブリックAPI」と「プライベートAPI」があります。
パブリックAPIとは、誰でも利用できる使えるAPIのことです。(簡単に説明すると)
以前、cryptowatのAPIを叩いて取引所の仮想通貨の価格データを取得したかと思います。まさにあのAPIが該当します。
プライベートAPIとは、個人アカウントに紐づく形で利用するAPIです。(簡単に説明すると)
個人アカウントを認証値、認証キーや秘密のパスワードを発行して利用します。
Contents
BitflyerのパブリックAPIを使ってみよう
早速ですが、以下のURLをブラウザに貼り付けて実行してください。
https://api.bitflyer.jp/v1/ticker/
ブラウザに以下の結果が返ってくると思います。
こちらはBitflyerの
- 「BTC現物」の買い気配値(best_bid)
- 売り気配値(best_ask)
- それぞれの注文サイズ(単位:BTC)
- 最終取引価格(LTP)
- 24時間の取引量
などを取得しています。
PythonでAPIからデータを取得してみよう
https://api.bitflyer.jp/v1/ticker/
は単なるURLです。アクセスすれば表示されるだけの代物です。Pythonのプログラムで取得してみましょう。以下のコードをテキストエディタに記述して保存し、実行してみましょう。
import requests response = requests.get("https://api.bitflyer.jp/v1/ticker/") print(response.json())
VScodeで実行してみます。大まかな手順は以下の通りです。
- 上記プログラムを記述し、sample01.pyで保存する
- VScodeを立ち上げて、ファイルを保存しているディレクトリまで移動する
- python3 sample01.pyを入力し、実行する
VScodeの画面サンプルです。
プログラムを実行すると以下の結果ができました。
ソースコード{'product_code': 'BTC_JPY', 'state': 'RUNNING', 'timestamp': '2022-08-25T06:42:44.307', 'tick_id': 20440859, 'best_bid': 2966368.0, 'best_ask': 2966414.0, 'best_bid_size': 0.67, 'best_ask_size': 0.001, 'total_bid_depth': 542.57243868, 'total_ask_depth': 690.42691242, 'market_bid_size': 0.0, 'market_ask_size': 0.0, 'ltp': 2966368.0, 'volume': 8954.10644803, 'volume_by_product': 1657.84390537}
APIのリンクをブラウザで叩いたのと同じような形式が取得できたと思います。これでPythonでAPIを取得するプログラムもバッチリです。
コード解説
少しだけプログラム(コード)の説明をさせていただきます。
1.import requests
requestsというライブラリをインポートしています。
Pythonで外部のURLにアクセスするときには、大抵このライブラリを最初にインポートします。スクレイピングでHTMLやXMLファイルからデータを取得するのにも使われます。
2.response = requests.get(“URL”)
requests.get()というメゾットでサーバーから情報を取得しています。
外部のURLにアクセスしてその結果を「response」という変数という箱にセットします。変数(今回はresponse)は好きに決めてもらって構いません。
.get()部分は他にも種類があるので、参考までに記載しておきます。
メゾット | 説明 |
---|---|
get() | サーバから情報を取得するのに使用 |
post() | サーバへ情報を登録する時に使用 |
put() | サーバの情報を更新する時に使用 |
delete() | サーバの情報を削除する時に使用 |
3.print(response.json())
さっきWEBから取得したレスポンスのJSONデータをパースして、printしています。つまり、表示させるということです。
bitFlyerのパブリックAPIで情報を様々な取得する
https://api.bitflyer.jp/v1をカスタマイズするだけで、bitflyerから様々な情報を取得可能です。
例を挙げておきます。
板情報を取得するAPI
https://api.bitflyer.jp/v1/board/
直近からの約定履歴を取得するAPI
https://api.bitflyer.jp/v1/executions/
取引所の稼働状況が正常かどうかを確認するAPI
https://api.bitflyer.jp/v1/gethealth/
他にどんな情報が取得できるのかはbitFlyerのAPI仕様書を確認してみてください。
最後に
いかがでしょうか?
これでみなさんもプログラマーの仲間入りです。
ただ、情報は取得したけど、「データがごちゃごちゃしていて何をみたらいいかわからない」「数字の羅列取得して何に使うの?」となっているはずです。正直、私もそうでした。
この取得した形式はJSON形式といい、人間は読みにくいのですが、システムは読みやすいデータ形式なのです。多くの開発でこのJSON形式は利用されています。もちろんbitflyer以外でも利用されています。
このJSON形式で必要なデータを取得できるようになると、開発の幅も広がるので、ぜひ覚えておいてください。
※注意:本bot開発は「文系でもわかる!BitcoinのBOT自動売買トレードの始め方」をもとに開発・自分なりの解釈用備忘録としています。