ビットコイン 仮想通貨 仮想通貨取引

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

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

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

何をしたいのかの整理

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

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

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

為替レートの取得

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

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)

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

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

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


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

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

while True:
print("{:,}".format(int(getBitcoinAsk()*usd_ask)))
print("{:,}".format(int(getBitcoinBid()*usd_bid)))
break

これで、他の取引所についてもAPIティッカーを調べることで値を取得できると思います。プリント文で出している分は変数に格納すると便利です。

合計して、計算する

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)

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

詳しい説明は省きます。

まとめ

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

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

crypto トレーダー

crypto トレーダー

都内在住の農耕型・堅実派のリアルトレーダー。1978年生まれ。ギャンブル嫌いでカジノに行っても冷ややか。確率的に勝てる勝負が好き。トレード全般、簡単なプログラムからPC組み立てまですべて自分でできるバランスタイプ。とんかつ好き。尊敬する人は瀬良明正社長。
crypto トレーダー