CCXTライブラリでは、どの取引所でも共通で使える関数が用意されています。
例えば、create_order()という注文を出すための関数は、Bitflyerだけでなく、Coincheck、Zaif、Bitmexなどでも共通で使えます。これはCCXTが各取引所ごとのAPIの仕様の違いを、見えない裏側で処理してまとめてくれているからです。
しかし一方で、各取引所にしか存在しない独自のAPIを使いたい場合は、CCXTの共通の関数ではカバーされていない場合があります。
例:Bitflyerの特殊注文
例えば、ご存知のように、Bitflyerでは「特殊注文」ができます。これは、例えば、100万円の買い注文と同時に条件付で110万円の売り注文を出すIFD注文や、110万円の利確注文と90万円の損切注文を同時に出し、どちらか1つが通ればもう片方を自動的にキャンセルするOCO注文などです。
しかしこれらの特殊注文は、CCXTの共通の関数からは出すことができないため、BitflyerのAPIを直接使う必要があります。
各取引所のAPIを直接使う方法
最初にまず結論からいいます。
CCXTでは、基本的に取引所のすべてのAPIが「明示されない関数」として内部で実装されています。すべての取引所のAPIは、以下のようなルールで関数を作れば、CCXT経由でも使用することができます。
例)BitflyerのAPI
APIの種類 : プライベートAPI
APIのメソッド : GET方式
APIのパス : /v1/me/getcollateral
例)CCXTの内部で実装されている関数名
bitflyer.private_get_getcollateral()
つまり各取引所のAPIをCCXT経由で直接使いたい場合は、以下の3つの情報を調べればいいことになります。この3つの情報がわかれば、以下のルールで関数名を組み立てられます。
X)プライベートAPIかパブリックAPIか?
Y)メソッドはGET方式か?POST方式か?
Z)APIのリクエストURL(パス)は?
関数名 : .X_Y_Z()
例えば、今回の例であげたBitflyerのFXの証拠金や維持率を取得するためのAPI(v1/me/getcollateral)の場合、公式ドキュメントを調べれば、以下のように記載されています。
個人アカウントの残高を取得するAPIが、プライベートAPIなのは明らかなので、上記のドキュメントから「.private_get_getcollateral()」が使えるんだろうな、とアタリをつけることができます。(/v1/me/ の部分は無視して構いません)
なお、どのようなパラメーターを渡すことができるか(または、どのようなパラメーターが必須か?)は、各取引所のAPIドキュメントで調べる必要があります。
プログラム初心者向けの流れ
何かやりたいことがある場合、まずはそれがCCXTの共通の関数で対応できないかを調べます。前の記事でも説明しましたが、各取引所がどのような共通の関数に対応しているかは、「.has」で調べることができます。
▽ 取引所で対応している共通関数を調べるためのコード
import ccxt bitflyer = ccxt.bitflyer() method_list = bitflyer.has for key,value in method_list.items() : if value == True: print( key )
これを実行してみると、Bitflyerでは以下の共通の関数に対応していることがわかります。
共通の関数一覧
cancelOrder()
createOrder()
createMarketOrder()
createLimitOrder()
fetchBalance()
fetchL2OrderBook()
fetchMarkets()
fetchOrder()
fetchOrderBook()
fetchOrders()
fetchTicker()
fetchTrades()
withdraw()
もしこれらの関数で、やりたいことができなさそうであれば、上記の方法を使って Bitflyer のAPIを直接利用することを検討します。
なお、今回説明した内容はすべてCCXTの公式マニュアルに記載されています。プログラムのAPI仕様書や英語を読むことが苦手でない方は、そちらを読んだ方がいいと思います。公式マニュアルは以下です。