#はじめに
前回では「/account/get」APIを使用して、NEMのアドレスからXEMの枚数などを取得しました。
今回は応用技で、XEMの枚数を取得して価格を日本円で表示するプログラムを紹介します。
処理の流れは以下の通りです。
1.NEMのアドレスからXEMの枚数を取得する
2.取引所のAPIを使ってXEMの日本円価格を取得する
3.1と2を掛け算する
1は前回やりましたね。取引所のAPIはZAIFを使用します。
#使うAPI
ZAIFのAPIを使って、XEMの日本円価格を取得しようと思います。
以下のURLを開くと、
https://api.zaif.jp/api/1/ticker/xem_jpy
以下のJSONデータが返ってきます。
※2018年3月17日時点の価格です
{"last": 35.91, "high": 40.9876, "low": 35.5209, "vwap": 37.2726, "volume": 38072152.9, "bid": 35.95, "ask": 35.987}
このデータを活用します。サンプル1でコードと解説を載せますね。
#サンプル1:ZAIFからXEMの日本円価格を取得する
##コード
実行環境が無い方はpaizaで試せます。
https://paiza.io/ja
import requests
import json
zaif_xem_api = 'https://api.zaif.jp/api/1/ticker/xem_jpy'
xem_jpy = requests.get(zaif_xem_api).json()
print(json.dumps(xem_jpy,indent=4))
##結果の例
{
"high": 40.9599,
"volume": 37915944.3,
"ask": 35.9,
"bid": 35.83,
"last": 35.9,
"vwap": 37.255,
"low": 35.5209
}
##解説
APIの仕様はZaif Exchange APIドキュメントで解説されていますが、それぞれの値の意味を引用します。
| キー | 詳細 | 型 |
|:--|:--|:--|
| last | 終値 | float |
| high | 過去24時間の高値 | float |
| low | 過去24時間の安値 | float |
| vwap | 過去24時間の加重平均 | float |
| volume | 過去24時間の出来高 | float |
| bid | 買気配値 | float |
| ask | 売気配値 | float |
(引用元)http://techbureau-api-document.readthedocs.io/ja/latest/public/2_individual/4_ticker.html
XEMの価格を知りたいので、過去24時間の加重平均が分かる「vwap」を使いましょう。サンプル2で「vwap」を使って、XEMの枚数を掛け算します。
#サンプル2:XEMの価格を日本円で表示する
##コード
実行環境が無い方はpaizaで試せます。
https://paiza.io/ja
import requests
import json
# 1.NEMのアドレスからXEMの枚数を取得する
node = 'http://104.128.226.60:7890' #テストネットのノードです
api = '/account/get'
parameter = 'address=TCJC5VFBIYF5TKEUS273XS7IXUKJ36I3JCJQ7WOH'
url = str(node + api + '?' + parameter)
nem_account = requests.get(url).json()
# 2.取引所のAPIを使ってXEMの日本円価格を取得する
zaif_xem_api = 'https://api.zaif.jp/api/1/ticker/xem_jpy'
xem_rate = requests.get(zaif_xem_api).json()
# 3.1と2を掛け算する
xem_jpy = (nem_account['account']['balance'] / 1000000) * xem_rate['vwap']
# 結果表示
print('xemの価格:' + str(xem_jpy) + '円')
print('↓参考↓')
print('xemの枚数:' + str(nem_account['account']['balance'] / 1000000) + 'xem')
print('xemの1枚あたりの価格:' + str(xem_rate['vwap']) + '円')
##結果の例
xemの価格:3065.00259円
↓参考↓
xemの枚数:82.7xem
xemの1枚あたりの価格:37.0617円
##解説
サンプル1でAPIの使い方を解説したので、あまり解説することはありませんが、、、
xemの枚数が小数点付きで返ってこないので、xemの枚数を割る1000000してから1枚あたりの日本円価格と掛け算しています。
# 3.1と2を掛け算する
xem_jpy = (nem_account['account']['balance'] / 1000000) * xem_rate['vwap']