LoginSignup
3
1

More than 5 years have passed since last update.

Python3でNEMのAPIを叩く-005-XEMの価格を日本円で表示する

Last updated at Posted at 2018-03-17

はじめに

前回では「/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日時点の価格です

json
{"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

Python3
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))

結果の例

json
{
    "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

Python3
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枚あたりの日本円価格と掛け算しています。

Python3
# 3.1と2を掛け算する
xem_jpy = (nem_account['account']['balance'] / 1000000) * xem_rate['vwap']

次回

Python3でNEMのAPIを叩く-006-アカウントが作成したモザイク定義を取得<準備編>

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1