Pythonで仮想通貨レート取得し各取引所を比較

皆さま、こんにちは。クリプトトレーダーです。本日のテーマは「Pythonで仮想通貨レート取得し各取引所を比較」です。

本年の1月後半は、海外と国内取引所のレート差がほとんどない状態です。コインチェックの仮想通貨流出という事件もあった中での複数の取引所を使った分析ですが、こういう時だからこそ冷静に構えることが大事です。

何をしたいのかの整理

まず、何をしたいのかを整理します。ここが実は一番重要です。今回は以下のアウトプットが得られるよう心がけます。

BTC
1158235 取引所名
——- 差分:20954円(1.8%)
1179189 取引所名

取引所はitBit、Bitstamp、コインチェック、ザイフを使います。為替レートはオアンダのデモ口座を使います。アスクビッドまで見ますのでかなり精緻な値です。これに手数料等を加味すると更に精度が増しますが、それは今後の課題ということでいいでしょう。

為替レートの取得

オアンダのデモ口座を開設し、「REST APIアクセスの管理 Personal Access Token」にてAPIを発行します。

[code lang=”js”]from pyoanda import Client, PRACTICE

client = Client(
environment=PRACTICE,
account_id="ここに口座IDを入力します。",
access_token="ここにAPIキーを入力します。"
)

pair_list =(‘EUR_JPY’,’USD_JPY’)
dataset = client.get_prices(instruments=’,’.join(pair_list),stream=False)

usd_jpy = [d for d in dataset[‘prices’] if d[‘instrument’] == ‘USD_JPY’]
usd_bid = [d[‘bid’] for d in usd_jpy][-1]
usd_ask = [d[‘ask’] for d in usd_jpy][-1]
print(usd_ask)
print(usd_bid)
[/code]

アウトプットはこんな感じです。
108.626
108.622

取引所のレートをチェック

以下のコードはコインチェックのティッカー取得です。

[code lang=”js”]
import requests, json
from time import sleep

URL =’https://coincheck.com/api/ticker’
r=requests.get(URL)
def getBitcoinAsk():
try:
priceFloat_ask=float(json.loads(r.text)[‘ask’])
return priceFloat_ask
except requests.ConnectionError:
print(‘接続エラー’)

def getBitcoinBid():
try:
priceFloat_bid=float(json.loads(r.text)[‘bid’])
return priceFloat_bid
except requests.ConnectionError:
print(‘接続エラー’)

while True:
print("{:,}".format(int(getBitcoinAsk())))
print("{:,}".format(int(getBitcoinBid())))
break
[/code]

例えば、BitstampのBTCUSDを比較する場合はURLを変えると同時に、以下のようにコードを変更します。

[code lang=”js”]while True:
print("{:,}".format(int(getBitcoinAsk()*usd_ask)))
print("{:,}".format(int(getBitcoinBid()*usd_bid)))
break
[/code]
これで、他の取引所についてもAPIティッカーを調べることで値を取得できると思います。プリント文で出している分は変数に格納すると便利です。

合計して、計算する

[code lang=”js”]
print(‘BTC’)
group_ask = { ‘Bitstamp’:bitstamp_ask, ‘itBIt’:itbit_ask, ‘コインチェック’:coincheck_ask , ‘ザイフ’:zaif_ask }
group_bid = { ‘Bitstamp’:bitstamp_bid, ‘itBIt’:itbit_bid, ‘コインチェック’:coincheck_bid , ‘ザイフ’:zaif_bid }

min_ask=min(group_ask[x] for x in group_ask)
max_bid=max(group_bid[x] for x in group_bid)
ask_name=min(group_ask, key=(lambda x: group_ask[x]))
bid_name=max(group_bid, key=(lambda x: group_bid[x]))

diff = int(min_ask) – int(max_bid)
print(‘{:,.0f}’.format(min_ask) + ‘ ‘ + ask_name)
print(‘ ——- 差分:{:,.0f}円’.format(diff) + ‘ ‘ + ‘({:,.1f}%)’.format(diff/min_ask*-100))
print(‘{:,.0f}’.format(max_bid) + ‘ ‘ + bid_name)
[/code]

BTC
1,163,109 コインチェック
——- 差分:-24,317円 (2.1%)
1,187,426 itBIt

詳しい説明は省きます。

まとめ

まだまだやるべきことはたくさんあります。取引所の選定、コードを短くすること、手数料の考慮、他の仮想通貨のチェック、データベースへの定期的な取り込みなど。ですが、このコードを参考に自分の思い通りのものが作れるとしたらそれは素晴らしいことです。

この記事をヒントに皆様の行動を促すことになれば幸いです。それではよい一日を!

Tags:

Comments are closed