3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?