bot開発1.国内取引所BitflyerのパブリックAPIを使ってみよう

私は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自動売買トレードの始め方」をもとに開発・自分なりの解釈用備忘録としています。


Python勉強したいのであればこれ一択


AIの技術、データ分析を身につけるにはPythonが取り組みやすいです。専門コースもあるので、まずは、気軽に問い合わせしてみてください!
技術者も多くなってきていますが、世界と戦うにはまだまだ人材不足です。高い年収を狙うなら今がチャンス!


フリーランスエンジニアが登録して欲しいエージェント


長くお世話になっているengineer-route。
単価、稼働日数、稼働時間相談も親身にのってくれます。しっかりしたサポート・コミュニケーションを交わすことで「はいってみた違った」というエンジニアあるあるを極力回避できると思います。私は当たりしかないです。