今回はCoinExchangeのAPIとPythonを使って価格情報を取得するプログラムをご紹介いたします!
CoinExchangeのAPIは
URL「https://www.coinexchange.io/api/v1/getmarkets」の様な形でブラウザから
投げて価格を取得する方法が紹介されておりますが
より利用しやすいようにPythonを使って取得することにしました。
コインエクスチェンジで公開されているAPI
CoinExchangeにて公開されているAPIはこちらから見ることが出来ます。
紹介文にはこう書かれております。
バージョンV1
CoinExchange.io APIへようこそ! APIを使用してCoinExchange.io APIエンドポイントにアクセスすることができます。このAPIエンドポイントは、当社のデータベースからマーケット情報を取得するために使用できます。
現在、認証を使用しないパブリックAPIのみを提供しています。
私たちは、フルトレードとコインコントロール機能を備えたAPI V2を後でリリースする予定です。
APIコールの応答の例は、右側の画面に表示されております。
この内容から、CEでは現在、価格の取得や取引量などのデータ取得だけで
現在はBinanceのようにAPIを使ってトレードするまでの機能は提供していないようです。
しかし、価格情報や取引量を取得することは可能なので
APIを利用することによって、取引を有利にすることは出来そうです!
というわけでBinanceの時と同じくPythonという言語を用いて
情報を取得してみましょう!!
Windowsを使っている方で、まだPythonの環境を用意されていない方は
こちらを参考にしてみてください。
また、BinanceトレードのAPIを使って実際のトレードまでを
ブログに書きましたのでご覧になりたい方は
・準備編はこちら
・実践編はこちら
からどうぞ。
Pythonを使ってデータを取得
今回はCEから1つの銘柄の
・「ペア名」
・「最終取引価格」
・「24h中の最高価格」
・「24h中の最低価格」
・「24h中の取引量」
を取得するプログラムを作成します。
※他の情報を取ることも可能ですが、今回は主に使用されると思われる
5項目に絞りました。
コードはGithubのこちらの「src/getMarket.py」に公開しておりますので、
ご自由にご利用ください。
最初にも書きましたが、CEのAPIはウェブリクエストの形で
「https://www.coinexchange.io/api/v1/getmarkets」というURLを
ブラウザから投げて情報を取得することが可能です。
ただし、プログラムから呼んであげると
データを保存したりする事が可能になり
汎用性が高くなりますのでPythonから取得します。
まずはPythonにてウェブリクエストを投げられるように、
・「urllib.request」
をimportします。
また、CEから受け取るデータがJson形式なので
・「json」
もimportします。
メモ帳等のテキストエディタを使って下のようにコードを記述し
ファイルを保存します。
今回は「getMarket.py」というファイル名で保存することにしました。
import urllib.request import json
次に、コードからURLをリクエストして帰ってきたデータを変数に
格納します。
import urllib.request import json # マーケットデータ market = json.loads(urllib.request.urlopen("https://www.coinexchange.io/api/v1/getmarkets").read()) # マーケット 概要、ID summary = json.loads(urllib.request.urlopen("https://www.coinexchange.io/api/v1/getmarketsummaries").read())
「urllib.request.urlopen…」ではURLをリクエストしています。
帰ってくるデータがJSON形式なので、
load 関数を使って JSON オブジェクトとして保存します。これで JSON を行うことが出来ます。
次にPrintにて先ほどの5項目を出力するように
記載します。
import urllib.request import json # マーケットデータ market = json.loads(urllib.request.urlopen("https://www.coinexchange.io/api/v1/getmarkets").read()) # マーケット 概要、ID summary = json.loads(urllib.request.urlopen("https://www.coinexchange.io/api/v1/getmarketsummaries").read()) print( "ticker: ", market['result'][0]['MarketAssetCode'], market['result'][0]['BaseCurrencyCode'], "LastPrice: ", summary['result'][0]['LastPrice'], "HighPrice: ", summary['result'][0]['HighPrice'], "LowPrice: ", summary['result'][0]['LowPrice'], "Volume: ", summary['result'][0]['Volume'] )
このようにJson要素を指定してあげれば取得することが可能になります。
ここまでのコードを保存し、
コマンドプロンプトで保存したディレクトリに移動して
下記のコマンドを打ってみてください。
すると情報を取得して表示されるはずです。
おわりに
お疲れ様でした。
CEのAPIは現在、登録なしで使うことが可能ですので、
一度使い方を覚えてしまえば使いやすいことがメリットです。
今回は1つの銘柄のみの取得データを表示するプログラムでしたが、
こちらの「getMarket-2.py」を参照いただければ
全ての銘柄のデータを取得できますので
チャレンジされる方は参考にしていただければと思います。
自分の環境で、実際に試してみた所、
無事に実行ができました。
ありがとうございます。
しかし、実際の価格などの数字と実際のサイトの数字が
全く違います。
API側の不具合で、IDと、銘柄の価格の紐付が
うまくいってないのでは?と考えています。
せっかくなのに、残念です。
EnuZettoさん
情報を共有頂きありがとう御座います。
実際の数字が違ったのですね。。
私の調査不足もあり、
そこまで把握しておりませんでした。
APIの今後の更新に期待するしかなさそうです。。
また何かありましたら、私も情報発信させて頂きます!
有益な情報を、本当にありがとうございます。
自分一人では、全くの不可能からの
貴重な第一歩となりました。
これからの、ひたらくさんの良い続報に
期待してます!