【初心者向け】CCXTの使い方を徹底解説!Pythonで仮想通貨取引所のAPIを操作する方法

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

仮想通貨の自動売買やbot開発に欠かせないライブラリとして、CCXTは非常に便利です。

CCXTを使うことで、複数の仮想通貨取引所のAPIに簡単にアクセスし、取引やデータの取得を自動化することができます。

この記事では、初心者向けにCCXTの基本的な使い方を解説し、Pythonで仮想通貨取引を効率化する方法を紹介します。

CCXTとは

CCXT(CryptoCurrency eXchange Trading Library)は、100箇所以上の仮想通貨取引所のAPIに統一されたインターフェースでアクセスできるライブラリです。

仮想通貨の自動売買に欠かせないAPIの仕様は、取引所事に異なります。このライブラリを使用することで、異なる取引所のAPIごとの仕様をを簡略化し、価格データの取得や注文の自動化が容易になります。

CCXTがサポートしている取引所

CCXTは、2024年10月現在で103箇所の暗号通貨取引市場と取引 API をサポートしています。

日本の仮想通貨取引所では、bitFlyerやCoincheck、bitbank、Zaifなどがあります。

海外では、BINANCEやbybitなどがあります。

その他の取引所については、公式サイトをご確認ください。

CCXTのインストール

まずは、PythonでCCXTをインストールします。

Bash
pip install ccxt

CCXTの基本的な使い方

取引所に接続する

取引所に接続して取引を開始するには、CCXTライブラリから取引所クラスをインスタンス化する必要があります。

まずは、当ブログでリピート系トレードbotの作成方法を紹介している、bitbankを例に取引所に接続する方法を紹介します。

Python
import ccxt

# Bitbank取引所のインスタンスを作成
exchange = ccxt.bitbank()

このように、対応する取引所の名前を指定するだけで、各取引所に接続できます。

対応するメソッドの確認

hasメソッドで取引所ごとに対応するメソッドの確認ができます。

Python
import ccxt
import pprint

# Bitbank取引所のインスタンスを作成
exchange = ccxt.bitbank()

# 対応するメソッドを出力
pprint.pprint(exchange.has)

メソッドの数は214種類ありましたが、bitbankに対応しているのは以下の21種類でした。

ティッカー情報の取得

ティッカー情報とは、ある特定の通貨ペアに関する価格情報(最新価格、最高値、最安値など)のことです。以下のコードでビットコインと日本円の価格情報を取得できます。

Python
import ccxt

# Bitbank取引所のインスタンスを作成
exchange = ccxt.bitbank()

# BTC/JPYのティッカー情報を取得
ticker = exchange.fetch_ticker('BTC/JPY')

# 取得したティッカー情報を表示
print(ticker)

出力されるデータには、現在の価格や24時間の最高値、最安値などが含まれています。

板情報の取得

板情報(Order Book)は、現在の買い注文と売り注文の価格と数量を確認するために使います。

Python
import ccxt

# Bitbank取引所のインスタンスを作成
exchange = ccxt.bitbank()

# BTC/JPYの板情報を取得
order_book = exchange.fetch_order_book('BTC/JPY')

# 取得した板情報を表示
print(order_book)

過去データの取得(OHLCVデータ)

CCXTを使って、取引ペアの過去の価格データ(OHLCV:Open, High, Low, Close, Volume)を取得することもできます。

Python
import ccxt

# Bitbank取引所のインスタンスを作成
exchange = ccxt.bitbank()

# 過去データを取得(時間足は1時間、データは最近100件)
ohlcv = exchange.fetch_ohlcv('BTC/JPY', timeframe='1h', limit=100)

# 取得したデータを表示
print(ohlcv)

注文の作成

CCXTを使えば、購入や売却の注文も簡単に行えます。まずは、成行注文でビットコインを購入する例です。

Python
import ccxt

# Bitbank取引所のインスタンスを作成
exchange = ccxt.bitbank()

exchange.apiKey = 'YOUR_API_KEY'
exchange.secret = 'YOUR_SECRET_KEY'

# BTC/JPYの成行注文で0.0001BTCを購入
order = exchange.create_market_buy_order('BTC/JPY', 0.0001)

# 注文結果を表示
print(order)

create_market_buy_orderの引数に、通貨ペアと数量を指定します。売却する場合は、create_market_sell_orderとなります。

次は、指値注文で購入する場合です。

Python
import ccxt

# Bitbank取引所のインスタンスを作成
exchange = ccxt.bitbank()

exchange.apiKey = 'YOUR_API_KEY'
exchange.secret = 'YOUR_SECRET_KEY'

# BTC/JPYの指値注文で0.0001BTCを購入
order = exchange.create_limit_buy_order('BTC/JPY', 0.0001, 9000000)

# 注文結果を表示
print(order)

指値注文での場合の引数は、通貨ペアと数量と購入価格です。売却する場合は、create_limit_sell_orderとなります。

注文のキャンセル

注文をキャンセルすることもできます。以下は、指定した注文IDの注文をキャンセルする例です。

Python
import ccxt

# Bitbank取引所のインスタンスを作成
exchange = ccxt.bitbank()

exchange.apiKey = 'YOUR_API_KEY'
exchange.secret = 'YOUR_SECRET_KEY'

# 注文IDを指定して注文をキャンセル
order_id = 'YOUR_ORDER_ID'
exchange.cancel_order(order_id, 'BTC/JPY')

その他のメソッド

symbol(通貨ペア)、amount(数量)、id(注文ID)などを指定して使用します。

  • fetchMarkets (): 取引所から利用可能なすべての仮想通貨のリストを取得します。
  • fetchTrades (symbol, since, limit, params): 指定した仮想通貨の最近の取引を取得します。
  • fetchBalance (): 残高を取得します。
  • createOrder (symbol, type, side, amount, price, params): 注文方法や買いか売りを指定して注文をします。
  • fetchOrder (id, symbol, params): 注文IDを指定して、注文情報を取得します。
  • fetchOpenOrders (symbol, since, limit, params): 注文IDを指定して、有効な注文を取得します。
  • fetchMyTrades (symbol, since, limit, params): 決済された取引の履歴を取得します。

おわりに

CCXTは、複数の仮想通貨取引所のAPIを簡単に操作できる強力なツールです。このライブラリを使うことで、価格データの取得や自動売買を簡単に実装でき、様々なトレード戦略を自動化することが可能です。

今回の記事では、CCXTの基本的な使い方を中心に解説しましたが、CCXTのドキュメントにはさらに多くの機能が掲載されていますので、興味がある方はぜひ活用してみてください。