暗号資産の取引を自動化するために、苦しんでいませんか?
各取引所ごとに異なるAPI仕様・・・
これらAPIに対応するために、プログラムがスパゲッティ状態ではありませんか?
もしそうなら、そんなスパゲッティコードは捨ててしまいましょう。
スパゲッティコードでなくても、捨てましょう。
もっと便利なモノが用意されています。
それが、ccxtです。
本記事の内容
- ccxtとは?
- ccxtのシステム要件
- ccxtのインストール
- ccxtの動作確認
それでは、上記に沿って解説していきましょう。
ccxtとは?
ccxtとは、暗号資産(仮想通貨)取引を行うためのライブラリです。
このライブラリは、取引所ごとに提供されているAPIを取りまとめたモノです。
現在(2021年3月末時点)、ccxtは全部で124個の取引所のAPIに対応しています。
もしccxtを利用しなければ、それぞれのAPI仕様に対応する必要があります。
それを実際にやろうとしたら、ぞっとします。
しかし、ccxtを使えば、その骨の折れるような苦労から解放されるのです。
ccxtの仕様に対応すれば、取引所ごとのAPI仕様に対応する必要がありません。
もうccxtを使わない理由がありませんよね。
ccxtは、以下の人々に利用されることが想定されています。
- コーダー
- 開発者
- 技術者
- トレーダー
- データサイエンティスト
- 金融アナリスト
暗号資産の取引に関わるすべての人々と言えます。
なお、ccxtはその対応言語も注目です。
- JavaScript
- Python
- PHP
上記3つの言語に対応しています。
それぞれの言語用にライブラリが用意されているのです。
個人的には、選択した言語にセンスを感じます。
まあ、私が好きな言語というだけですけどね。
以上、ccxtに関するおおまかな説明でした。
次は、ccxtを動かすために必要なシステム要件を見ていきます。
ccxtのシステム要件
Python版のcctxに関するシステム要件を見ていきましょう。
現時点(2021年3月22日)におけるccxtの最新バージョンは、1.43.87となります。
この最新バージョンは、2021年3月22日にリリースされています。
とにかく、常時メンテナンスされている感じです。
この更新頻度の多さは、取扱い対象となる仮想通貨が日々増えているからでしょう。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
Pythonが動けば、OSを問わないということでしょう。
また、Pythonのサポート対象となるPythonのバージョンは以下です。
- Python 2.7
- Python 3.6
- Python 3.7
- Python 3.8
- Python 3.9
Python 2を完全に切り捨てていません。
なかなか、珍しい状況です。
それなら、Python 3.5以前も対象にするのが一般的ですけどね。
でも、新しいPythonを使うようにしましょう。
私は、以下のバージョンで検証しています。
>python -V Python 3.9.1
以上、特に注意すべきポイントはありませんでした。
Pythonが動けば、基本的にはどんなOSでも問題ないという感じです。
では、次にccxtのインストールしていきます。
ccxtのインストール
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.0.1 setuptools 54.1.2
次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip
では、ccxtのインストールです。
ccxtのインストールは、以下のコマンドとなります。
pip install ccxt
インストールは、少しだけ待たされました。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ----------------- ----------- aiodns 2.0.0 aiohttp 3.7.4.post0 async-timeout 3.0.1 attrs 20.3.0 ccxt 1.43.87 certifi 2020.12.5 cffi 1.14.5 chardet 4.0.0 cryptography 3.4.6 idna 2.10 multidict 5.1.0 pip 21.0.1 pycares 3.1.1 pycparser 2.20 requests 2.25.1 setuptools 54.1.2 typing-extensions 3.7.4.3 urllib3 1.26.4 yarl 1.1.0
結構多くのパッケージが、インストールされました。
ただし、上記のままでは動きません。
Python 2と3の互換性ライブラリーのSixがインストールされていないのです。
これがないと、以下のエラーが出ます。
ModuleNotFoundError: No module named 'six'
そのため、sixをインストールします。
pip install six
Python 2.7に対応しているから、sixが必要ということです。
もう、Python 3.6以降しかサポートしないと割り切ってもいいでしょうけどね。
以上、ccxtのインストールでした。
最後に、ccxtの動作確認を行います。
ccxtの動作確認
cctxの動作確認は、以下のコードで行います。
import ccxt.async_support as ccxt # link against the asynchronous version of ccxt print(len(ccxt.exchanges)) print(ccxt.exchanges) # print a list of all available exchange classes
対応している取引所の総数とその一覧を表示するプログラムです。
上記コードを実行すると、以下のように表示されます。
124 ['aax', 'acx', 'aofex', 'bequant', 'bibox', 'bigone', 'binance', 'binanceus', 'bit2c', 'bitbank', 'bitbay', 'bitcoincom', 'bitfinex', 'bitfinex2', 'bitflyer', 'bitforex', 'bitget', 'bithumb', 'bitkk', 'bitmart', 'bitmax', 'bitmex', 'bitpanda', 'bitso', 'bitstamp', 'bitstamp1', 'bittrex', 'bitvavo', 'bitz', 'bl3p', 'bleutrade', 'braziliex', 'btcalpha', 'btcbox', 'btcmarkets', 'btctradeua', 'btcturk', 'buda', 'bw', 'bybit', 'bytetrade', 'cdax', 'cex', 'chilebit', 'coinbase', 'coinbaseprime', 'coinbasepro', 'coincheck', 'coinegg', 'coinex', 'coinfalcon', 'coinfloor', 'coingi', 'coinmarketcap', 'coinmate', 'coinone', 'coinspot', 'crex24', 'currencycom', 'delta', 'deribit', 'digifinex', 'dsx', 'equos', 'eterbase', 'exmo', 'exx', 'fcoin', 'fcoinjp', 'flowbtc', 'foxbit', 'ftx', 'gateio', 'gemini', 'gopax', 'hbtc', 'hitbtc', 'hollaex', 'huobijp', 'huobipro', 'idex', 'independentreserve', 'indodax', 'itbit', 'kraken', 'kucoin', 'kuna', 'lakebtc', 'latoken', 'lbank', 'liquid', 'luno', 'lykke', 'mercado', 'mixcoins', 'ndax', 'novadax', 'oceanex', 'okcoin', 'okex', 'paymium', 'phemex', 'poloniex', 'probit', 'qtrade', 'rightbtc', 'ripio', 'southxchange', 'stex', 'surbitcoin', 'therock', 'tidebit', 'tidex', 'timex', 'upbit', 'vbtc', 'vcc', 'wavesexchange', 'whitebit', 'xbtce', 'xena', 'yobit', 'zaif', 'zb']
全部で124の取引所があるということです。
確かに、この値は公式で表示してある取引所の数と一致します。
(※ccxtのバージョンにより、この値は異なります)
以上、ccxtの動作確認でした。