+------------+-----------+----------+-----------+ | | binance | mexc | coinex | +============+===========+==========+===========+ | ETH/USDT | 359172.74 | 359176.2 | 359175 | +------------+-----------+----------+-----------+ | SOL/USDT | 15625.29 | 15638.84 | 15631.8 | +------------+-----------+----------+-----------+ | ADA/USDT | 131.81 | 131.93 | 131.58 | +------------+-----------+----------+-----------+ | GALA/USDT | 35.18 | 35.2 | 35.16 | +------------+-----------+----------+-----------+ | TOWN/USDT | --- | --- | 65.48 | +------------+-----------+----------+-----------+ | ONE/USDT | 31.59 | 31.6 | 31.99 | +------------+-----------+----------+-----------+ | JEWEL/USDT | --- | 2019.82 | 1991.77 | +------------+-----------+----------+-----------+
このような感じで仮想通貨の価格を見たいと思いませんか?
取引所、通貨の組み合わせを自由に選んで。
この記事では、上記のように表示する方法を解説します。
自分だけのアルトコイン価格一覧を作りましょう。
本記事の内容
- GameFi関連の仮想通貨の価格をまとめて見たい
- アルトコイン価格一括取得機能のシステム要件
- アルトコイン価格一括取得機能のコード
それでは、上記に沿って解説していきます。
GameFi関連の仮想通貨の価格をまとめて見たい
GameFiとは、次のブロックチェーンゲーム(NFTゲーム)です。
- Town Star
- DeFi Kingdoms
個人的には、この2つに注目しています。
これらに関連する仮想通貨には、それぞれ以下が存在します。
Town Star
- GALA
- TOWN
DeFi Kingdoms
- ONE
- JEWEL
それぞれ2つ存在しているのは、意味があります。
ここでは、簡単に説明しておきます。
GALAとONEは、それぞれのゲームに参加する際に必要となります。
TOWNとJEWELは、それぞれのゲーム内で得ることができます。
そうすると、次のように考えるようになります。
「これら4つの仮想通貨の価格をまとめて見たい」
まとめて見ることで比較することが可能になります。
しかし、これらのアルトコインの価格をまとめて確認できるツールはありません。
少なくとも見つけることが、できませんでした。
そもそも、それほど人気のある仮想通貨ではありませんからね。
それに頑張って探すぐらいなら、作った方が早いです。
勉強にもなりますからね。
ということで、自作することにしました。
「アルトコイン価格一括取得機能」
自作するプログラムをこのように呼びます。
以上、GameFi関連の仮想通貨の価格をまとめて見たいことについて説明しました。
次は、アルトコイン価格一括取得機能のシステム要件を確認します。
アルトコイン価格一括取得機能のシステム要件
アルトコイン価格一括取得機能のシステム要件は、以下となります。
- Python
- ccxt
- pandas-datareader
- tabulate
それぞれを下記で説明します。
Python
Pythonで開発します。
Pythonが動けば、OSは何でも構いません。
つまり、以下を含むクロスプラットフォーム対応ということです。
- Windows
- macOS
- Linux
ただし、Pythonのバージョンには気をつけてください。
Python 3.7以降をオススメします。
Python 3.7以降というのは、理由があります。
以下のPython公式開発サイクルを見てください。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
Python 3.6は、2021年末でサポートが切れています。
そのため、Python 3.7以降としています。
まあ、Python 3.6でも動くとは思いますけどね。
最新のPython 3.10系をインストールする場合は、次の記事を参考にしてください。
さらにそれをアップグレードするなら、こちらの記事が参考となります。
いきなり3.10.1のインストールでもいいかもしれません。
ccxt
ccxtは、Pythonで仮想通貨を扱う際には必須と言えます。
ccxtの詳細は、次の記事で解説しています。
ccxtさえあれば、各取引所のAPIは不要です。
価格取得に関しては、不要と言う意味です。
pandas-datareader
pandas-datareaderは、為替レートを取得するために利用します。
pandas-datareaderの詳細は、次の記事をご覧ください。
pandas-datareaderを利用して、円ドルの為替レートを取得します。
tabulate
tabulateを使えば、次のような表形式でデータを表示できます。
+----------+----------+---------------------+ | Planet | R (km) | mass (x 10^29 kg) | +==========+==========+=====================+ | Sun | 696000 | 1.9891e+09 | +----------+----------+---------------------+ | Earth | 6371 | 5973.6 | +----------+----------+---------------------+ | Moon | 1737 | 73.5 | +----------+----------+---------------------+ | Mars | 3390 | 641.85 | +----------+----------+---------------------+
tabulateの詳細は、次の記事をご覧ください。
まとめ
上記で挙げたライブラリは、インストールしておきます。
プログラムを動かすためには、それぞれをインストールしておく必要があります。
以上、アルトコイン価格一括取得機能のシステム要件の説明でした。
次は、アルトコイン価格一括取得機能のコードを確認しましょう。
アルトコイン価格一括取得機能のコード
アルトコイン価格一括取得機能のコードは、以下。
import ccxt import pandas as pd from tabulate import tabulate from pandas_datareader.data import get_quote_yahoo EXCHANGES = ["binance", "mexc", "coinex"] SYMBOLS = ["ETH/USDT", "SOL/USDT", "ADA/USDT", "GALA/USDT", "TOWN/USDT", "ONE/USDT", "JEWEL/USDT"] def get_exchange_result(exchange_id, symbols): # 取引所ID→クラス→インスタンス exchange_class = getattr(ccxt, exchange_id) exchange = exchange_class() result_dic = {} # 取扱い通貨の情報取得 tickers = exchange.fetch_tickers() for symbol in symbols: data = tickers.get(symbol) if data: ask = data["ask"] result_dic[symbol] = ask else: result_dic[symbol] = None return result_dic if __name__ == '__main__': all_result = {} # 取引所毎に通貨価格を取得 for exchange_id in EXCHANGES: exchange_result = get_exchange_result(exchange_id, SYMBOLS) all_result[exchange_id] = exchange_result # 辞書型からDataFrameに変換 df = pd.DataFrame(data=all_result) # 為替レート取得 rate_result = get_quote_yahoo('JPY=X') ary_rate_result = rate_result["price"].values exchange_rate = ary_rate_result[0] # 円換算 df_yen = df * exchange_rate # 小数の丸め処理 df_yen = df_yen.round(2) # NaNの置き換え→「---」 df_yen = df_yen.fillna("---") # テーブル形式で表示 tbl = tabulate(df_yen, showindex="always", headers="keys", tablefmt="grid") print(tbl)
システム要件を満たしていれば、上記コードは動くはずです。
実行すると、冒頭の表形式のデータを表示します。
各自で修正する必要があるのは、次の部分です。
EXCHANGES = ["binance", "mexc", "coinex"] SYMBOLS = ["ETH/USDT", "SOL/USDT", "ADA/USDT", "GALA/USDT", "TOWN/USDT", "ONE/USDT", "JEWEL/USDT"]
EXCHANGESには、取引所IDをリスト形式で設定しています。
SYMBOLSには、通貨ペアをリスト形式で設定します。
通貨ペアは、大体イメージできると思います。
今回は、テザー(USDT)とペアになるように設定しています。
そうすれば、円ドルの為替レートを組み合わせることができます。
組み合わせて、日本円で仮想通貨の価格を表示できるようになります。
取引所IDに関しては、次のコードで確認できます。
import ccxt # 取引所一覧 exchanges = ccxt.exchanges print(len(exchanges)) print(exchanges)
実行した結果は、以下。
115 ['aax', 'ascendex', 'bequant', 'bibox', 'bigone', 'binance', 'binancecoinm', 'binanceus', 'binanceusdm', 'bit2c', 'bitbank', 'bitbay', 'bitbns', 'bitcoincom', 'bitfinex', 'bitfinex2', 'bitflyer', 'bitforex', 'bitget', 'bithumb', 'bitmart', 'bitmex', 'bitpanda', 'bitrue', 'bitso', 'bitstamp', 'bitstamp1', 'bittrex', 'bitvavo', 'bl3p', 'blockchaincom', 'btcalpha', 'btcbox', 'btcmarkets', 'btctradeua', 'btcturk', 'buda', 'bw', 'bybit', 'bytetrade', 'cdax', 'cex', 'coinbase', 'coinbaseprime', 'coinbasepro', 'coincheck', 'coinex', 'coinfalcon', 'coinmate', 'coinone', 'coinspot', 'crex24', 'cryptocom', 'currencycom', 'delta', 'deribit', 'digifinex', 'eqonex', 'equos', 'exmo', 'flowbtc', 'ftx', 'ftxus', 'gateio', 'gemini', 'hitbtc', 'hitbtc3', 'hollaex', 'huobi', 'huobijp', 'huobipro', 'idex', 'independentreserve', 'indodax', 'itbit', 'kraken', 'kucoin', 'kucoinfutures', 'kuna', 'latoken', 'latoken1', 'lbank', 'liquid', 'luno', 'lykke', 'mercado', 'mexc', 'ndax', 'novadax', 'oceanex', 'okcoin', 'okex', 'okex3', 'okex5', 'paymium', 'phemex', 'poloniex', 'probit', 'qtrade', 'ripio', 'stex', 'therock', 'tidebit', 'tidex', 'timex', 'upbit', 'vcc', 'wavesexchange', 'whitebit', 'xena', 'yobit', 'zaif', 'zb', 'zipmex', 'zonda']
現時点(2022年1月中旬)では、115個の取引所を確認できます。
また、次のページでも取引所IDを確認することが可能です。
https://github.com/ccxt/ccxt
アルトコイン価格一括取得機能のコードを実行した結果は、本記事の冒頭のモノとなります。
もちろん、実行するタイミングで価格は異なります。
なお、行と列を入れ替えたい場合は、次のようにコードを変更します。
# テーブル形式で表示 tbl = tabulate(df_yen.T, showindex="always", headers="keys", tablefmt="grid")
データフレームのdf_yenを転置させるだけです。
データフレームの転置は、変数に「.T」を加えるだけです。
+---------+------------+------------+------------+-------------+-------------+------------+--------------+ | | ETH/USDT | SOL/USDT | ADA/USDT | GALA/USDT | TOWN/USDT | ONE/USDT | JEWEL/USDT | +=========+============+============+============+=============+=============+============+==============+ | binance | 359121 | 15651.4 | 131.73 | 35.27 | --- | 31.71 | --- | +---------+------------+------------+------------+-------------+-------------+------------+--------------+ | mexc | 359088 | 15664.8 | 131.82 | 35.29 | --- | 31.7 | 2006.5 | +---------+------------+------------+------------+-------------+-------------+------------+--------------+ | coinex | 359124 | 15654.5 | 131.61 | 35.27 | 65.1 | 32.09 | 1965.01 | +---------+------------+------------+------------+-------------+-------------+------------+--------------+
こちらの方が見やすいという人もいるでしょう。
その辺は、各自で自由に調整してください。
ちなみに、JEWELは取引所間でそこそこ差異があります。
裁定取引も面白いかもしれません。
ただ、手数料を考慮するとあまり儲けはないかもです。
以上、アルトコイン価格一括取得機能のコードの説明でした。