PythonでBinanceのAPIを使って、価格情報を取得します。
こんな時はrequestsというライブラリを使うと簡単にデータが取得できます。
Kenneth Ritzさんの作るパッケージたちはとても使いやすいですね。ちょっと前凄いなといって取り上げたrequests-htmlもKennethさんの作ったライブラリで、最近ちょっと調べていたらRequests3にバージョンアップするときに、requests-html的な機能がrequestsに取り込まれるみたいですね。PyCon US前のリリースを目指しているようで楽しみです。
なお、仮想通貨とかボラ高過ぎなので、投資しようとか思わない方が良いです。
BinanceのAPI使ってみる
BinanceのAPIの解説ページは次のリンク先にあります。
まず、APIの使い方のページには大体baseURLというものが載せられています。この解説ページだと次のリンク先にある https://api.binance.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")
個別のデータを取る
個別のデータを取得するには、次のような感じのものを指定されたアドレスに付け加えます(リンク先はオーダーを出す方法ですがまぁ気にせずに)。
ここではBCHBTCの板情報を取得してみましょう。
板情報の取得は次のように/api/v3/depthと加えると取得できます。
ここで、symbolとlimitがパラメータとなっていると書かれています。symbolは銘柄名(ここで扱うBCHBTC)、limitは板情報を何本取得するとかです。BCHBTCの板情報を10本取得するのが次のスクリプトです。
import requests r =requests.get(base_url + "/api/v3/depth" + "?symbol=BCHBTC&limit=10")
データはjsonで返されるのでこれまたjson()を加えると表示できます。
かんたーん
板を日本円表示したい場合
binanceのデータはビットコイン建て価格なので分かり難いです。円建てが良い場合、日本国内の取引所のAPIを使うと良いです。例えば、bitbankのビットコインの価格を取得は次のように行います。
bitbank = "https://public.bitbank.cc" d = requests.get(bitbank + "/btc_jpy/depth")
ここで取得したデータをbinanceの価格にかけてください。
まとめ
こんな感じで、データが取れます。簡単です。一方株価は・・・
ちょっと前にAPI作成の調査で、amazonはAPIを上手く使って伸びた事例みたいな記事があって、面白いなぁと思いました。現在の取引所は価格販売ビジネスでホクホクですが、この辺りにディスラプトされるのかもしれません。日本でこの辺りを上手く使っているのは楽天くらいですかね?ほかにもあると教えていただけると幸いです。
APIエコノミーみたいな本もあるので読んでみたいです。