Pythonと本と子供と雑談と

いつからはじめても遅くない

PythonでBinanceのAPIを使って価格情報を取得する

PythonでBinanceのAPIを使って、価格情報を取得します。

こんな時はrequestsというライブラリを使うと簡単にデータが取得できます。

requests.readthedocs.io

Kenneth Ritzさんの作るパッケージたちはとても使いやすいですね。ちょっと前凄いなといって取り上げたrequests-htmlもKennethさんの作ったライブラリで、最近ちょっと調べていたらRequests3にバージョンアップするときに、requests-html的な機能がrequestsに取り込まれるみたいですね。PyCon US前のリリースを目指しているようで楽しみです。

github.com

github.com

なお、仮想通貨とかボラ高過ぎなので、投資しようとか思わない方が良いです。

BinanceのAPI使ってみる

BinanceのAPIの解説ページは次のリンク先にあります。

github.com

まず、APIの使い方のページには大体baseURLというものが載せられています。この解説ページだと次のリンク先にある https://api.binance.comがそれにあたります。

github.com

大体のAPIがbaseURLに何か文字列を加えてほしいデータを取得します。

Binanceの上場通貨などのデータの取得は次のリンク先にあるように、baseURLに/api/v3/exchangeInfoを付け加えるとデータが取得できます。データはJSONで返されるので、下の例だとr.json()とすると、データが観察できます。

import requests

base_url = "https://api.binance.com"
r = requests.get(base_url + "/api/v3/exchangeInfo")

github.com

f:id:mazarimono:20200221075320p:plain
こんな感じ

個別のデータを取る

個別のデータを取得するには、次のような感じのものを指定されたアドレスに付け加えます(リンク先はオーダーを出す方法ですがまぁ気にせずに)。

github.com

ここではBCHBTCの板情報を取得してみましょう。

板情報の取得は次のように/api/v3/depthと加えると取得できます。

github.com

ここで、symbolとlimitがパラメータとなっていると書かれています。symbolは銘柄名(ここで扱うBCHBTC)、limitは板情報を何本取得するとかです。BCHBTCの板情報を10本取得するのが次のスクリプトです。

import requests 

r =requests.get(base_url + "/api/v3/depth" + "?symbol=BCHBTC&limit=10")

データはjsonで返されるのでこれまたjson()を加えると表示できます。

f:id:mazarimono:20200221080536p:plain
取得される板情報

かんたーん

板を日本円表示したい場合

binanceのデータはビットコイン建て価格なので分かり難いです。円建てが良い場合、日本国内の取引所のAPIを使うと良いです。例えば、bitbankのビットコインの価格を取得は次のように行います。

bitbank = "https://public.bitbank.cc"
   d = requests.get(bitbank + "/btc_jpy/depth")

ここで取得したデータをbinanceの価格にかけてください。

github.com

まとめ

こんな感じで、データが取れます。簡単です。一方株価は・・・

ちょっと前にAPI作成の調査で、amazonAPIを上手く使って伸びた事例みたいな記事があって、面白いなぁと思いました。現在の取引所は価格販売ビジネスでホクホクですが、この辺りにディスラプトされるのかもしれません。日本でこの辺りを上手く使っているのは楽天くらいですかね?ほかにもあると教えていただけると幸いです。

qiita.com

APIエコノミーみたいな本もあるので読んでみたいです。

APIエコノミー 勝ち組企業が取り組むAPIファースト

APIエコノミー 勝ち組企業が取り組むAPIファースト