Exchanges¶
対応取引所における pybotters の個別の仕様について説明します。
コード例などについては Examples をご覧ください。
bitFlyer¶
https://lightning.bitflyer.com/docs
Authentication¶
- API 認証情報
{"bitflyer": ["API_KEY", "API_SERCRET"]}
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
- WebSocket 認証
WebSocket 接続時に取引所が定める認証情報の WebSocket メッセージが自動送信されます (JSON-RPC 2.0 over WebSocket のみ) 。
WebSocket¶
bitFlyer の WebSocket には Socket.IO と JSON-RPC 2.0 over WebSocket がありますが、 pybotters の認証と DataStore は JSON-RPC 2.0 over WebSocket のみ対応しています。
DataStore¶
bitFlyerDataStore(JSON-RPC 2.0 over WebSocket のみ)
- 以下の DataStore に格納される値は pybotters による独自実装です。 また特定のキーのみが更新されます。
bitFlyerDataStore.positionssizeキーのみが更新されます。
bitFlyerDataStore.collateralcollateralキーのみが更新されます。
bitFlyerDataStore.balanceamountキーのみが更新されます。
警告
bitFlyer の WebSocket チャンネル
child_order_eventsは各種データを提供しておらず、計算の元となる約定情報のみを提供しています。 その為bitFlyerDataStoreは約定情報から独自に各種データを計算しています。 値が正確になるよう努めていますが、端数処理などの影響で実データとズレが生じる可能性があることに注意してください。 正確な値を必要とする場合は、HTTP API によるbitFlyerDataStore.initialize()を利用してください。
対応している WebSocket チャンネルはリファレンスの ATTRIBUTES をご覧ください。
GMO Coin¶
Authentication¶
- API 認証情報
{"gmocoin": ["API_KEY", "API_SERCRET"]}
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
- WebSocket 認証
GMO Coin はトークン認証方式です。
https://api.coin.z.com/docs/#authentication-private-ws
helpers.GMOCoinHelperには「アクセストークン」を管理する機能があります。helpers.GMOCoinHelperを利用すると「アクセストークンを延長」と「アクセストークンを取得」を自動で実行します。 さらに取得したアクセストークンから Private WebSocket URL を構築してWebSocketApp.urlを自動で更新します。 通常、 GMO コインの定期メンテナンス 後はアクセストークンは失効して Private WebSocket の再接続は失敗してしまいます。 このヘルパーを使うと、失効したアクセストークンを自動で再取得するので、メンテナンス後の再接続を確立するのに便利です。利用可能なコードは Examples GMOCoinHelper をご覧ください。
WebSocket¶
- レート制限
pybotters は GMO コインの WebSocket API の購読レート制限に対応しています。
https://api.coin.z.com/docs/#restrictions
Client.ws_connect()でメッセージを送信する際、レート制限が自動適用されます。
DataStore¶
対応している WebSocket チャンネルはリファレンスの ATTRIBUTES をご覧ください。
bitbank¶
https://github.com/bitbankinc/bitbank-api-docs
Authentication¶
- API 認証情報
{"bitbank": ["API_KEY", "API_SERCRET"]}
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。 認証方式は
ACCESS-TIME-WINDOWを採用します。https://github.com/bitbankinc/bitbank-api-docs/blob/master/rest-api_JP.md#%E8%AA%8D%E8%A8%BC
- PubNub 認証
pybotters.helpers.bitbankのヘルパー関数を利用して、自動的に PubNub の認証を行います。
WebSocket¶
- Socket.IO
bitbank の Public WebSocket は Socket.IO で実装されています。 pybotters は Socket.IO にネイティブでは対応していない為、低レベルで URL の指定と購読リクエストを送信をする必要があります。
低レベルで Socket.IO の購読リクエストには
Client.ws_connect()の引数send_strを'42["join-room","depth_whole_btc_jpy"]'のように指定します。また pybotters は Socket.IO v4 に対応していません。 接続するには URL で v3
EIO=3を指定する必要があります。利用可能なコードは Examples をご覧ください。
- Ping-Pong
Socket.IO の Ping-Pong が自動で送信されます。
PubNub¶
- PubNub クライアント
bitbank の Private Stream API は PubNub によって配信されています。 これは WebSocket のようなプロトコルではありません。
pybotters はヘルパー関数として組み込みの PubNub クライアント
pybotters.helpers.bitbankを提供しています。 このヘルパー関数群では Private Stream API のサブスクライブをできます。 さらにトークンの自動取得・トークンの自動更新を行います。 またbitbankPrivateDataStoreを簡単に利用することができます。 (Examples)別途、ファースト・パーティの PubNub SDK を利用することもできます。 これより高機能ですが、ただし pybotters の HTTP セッションとは互換性がありません。 組み込みのヘルパー関数を利用することで、イベントループをより適切に管理することができます。
DataStore¶
対応している WebSocket チャンネルはリファレンスの ATTRIBUTES をご覧ください。
Coincheck¶
https://coincheck.com/ja/documents/exchange/api
Authentication¶
- API 認証情報
{"coincheck": ["API_KEY", "API_SERCRET"]}
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
- WebSocket 認証
WebSocket 接続時に取引所が定める認証情報の WebSocket メッセージが自動送信されます。
https://coincheck.com/ja/documents/exchange/api#private-channels
DataStore¶
注釈
CoincheckDataStore の orderbook は、ドキュメントで説明されていない
[pair]-limit-range-orderbook / GET /api/order_books?version=1.0 にも対応しています。
こちらの payload には sequence_number が含まれるため、REST snapshot と WebSocket 更新を
安全に同期したい場合はこちらの組み合わせを利用してください。
警告
新規注文イベントは WebSocket からは送信されません。
POST /api/exchange/orders のレスポンスを別途再利用する必要があります。
またオープンオーダーに関して Coincheck のデータ形式には未約定数量が含まれていません。
CoincheckPrivateDataStore ではオープンオーダーの未約定数量が追跡できるように pending_amount
および pending_market_buy_amount をイベントごとに計算してキーとして追加しています。
詳しくは CoincheckPrivateDataStore.order をご覧ください。
対応している WebSocket チャンネルはリファレンスの ATTRIBUTES をご覧ください。
OKJ¶
Authentication¶
- API 認証情報
{"okj": ["API_KEY", "API_SERCRET", "API_PASSPHRASE"]}
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
- WebSocket 認証
WebSocket 接続時に取引所が定める認証情報の WebSocket メッセージが自動送信されます。
WebSocket¶
- Ping-Pong
取引所が定める Ping-Pong メッセージが自動送信されます。
DataStore¶
未サポート。
BitTrade¶
https://api-doc.bittrade.co.jp/
Authentication¶
- API 認証情報
{"bittrade": ["API_KEY", "API_SERCRET"]}
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
- WebSocket 認証
WebSocket 接続時に取引所が定める認証情報の WebSocket メッセージが自動送信されます。
WebSocket¶
- Ping-Pong
取引所が定める Ping-Pong メッセージが自動送信されます。
DataStore¶
未サポート。
Bybit¶
https://bybit-exchange.github.io/docs/v5/intro
V5 API のみ対応しています。 V3 API には対応していません。
Authentication¶
- API 認証情報
{"bybit": ["API_KEY", "API_SERCRET"]}{"bybit_demo": ["API_KEY", "API_SERCRET"]}{"bybit_testnet": ["API_KEY", "API_SERCRET"]}
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
https://bybit-exchange.github.io/docs/v5/guide#authentication
- WebSocket 認証
WebSocket 接続時に取引所が定める認証情報の WebSocket メッセージが自動送信されます。
https://bybit-exchange.github.io/docs/v5/ws/connect#authentication
また Websocket Trade API におけるメッセージ送信では
headerオブジェクトにタイムスタンプX-BAPI-TIMESTAMPが自動付与されます。https://bybit-exchange.github.io/docs/v5/websocket/trade/guideline
WebSocket¶
- Ping-Pong
取引所が定める Ping-Pong メッセージが自動送信されます。
https://bybit-exchange.github.io/docs/v5/ws/connect#how-to-send-the-heartbeat-packet
DataStore¶
対応している WebSocket チャンネルはリファレンスの ATTRIBUTES をご覧ください。
Binance¶
https://developers.binance.com/docs/binance-spot-api-docs/CHANGELOG
pybotters は Binance API において Spot /USDⓈ-M / COIN-M / WebSocket API (Spot) で動作確認をしています。
Authentication¶
- API 認証情報
{"binance": ["API_KEY", "API_SERCRET"]}(Mainnet: Spot/USDⓈ-M/COIN-M){"binancespot_testnet": ["API_KEY", "API_SERCRET"]}(Testnet: Spot){"binancefuture_testnet": ["API_KEY", "API_SERCRET"]}(Testnet: USDⓈ-M/COIN-M)
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
- WebSocket 認証
Binance はトークン認証方式の為、ユーザーコードで URL に
listenKey含める必要があります。https://developers.binance.com/docs/binance-spot-api-docs/user-data-stream
https://developers.binance.com/docs/derivatives/usds-margined-futures/user-data-streams/Connect
https://developers.binance.com/docs/derivatives/coin-margined-futures/user-data-streams/Connect
ただし Binance 系 DataStore に
listenKeyを管理する機能があります。Binance 系 DataStore の
initialize()は「Create a ListenKey」系の POST リクエストに対応しています。 これによりlistenKeyが DataStore の属性listenkeyに格納されます。 この属性を利用するとlistenKey付き URL を構築するのに便利です。また DataStore 側で「Ping/Keep-alive a ListenKey」系の定期リクエストが有効になる為、ユーザーコードでの延長処理は不要です。
- WebSocket 認証 (WebSocket API)
pybotters では Binance で WebSocket API と表されるタイプの API 認証に対応しています。 これは WebSocket メッセージで注文の作成などを可能にするもので、現時点では Spot のみ対応しています。
https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api
送信する WebSocket メッセージに対して、取引所が定める認証情報が自動設定されます。
これを利用するには、
WebSocketApp.current_wsからsend_json()メソッドを利用して引数auth=pybotters.Authを設定します。
WebSocket¶
- レート制限
pybotters は Binance Spot のみにある WebSocket API の購読レート制限に対応しています。
https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#websocket-limits
Client.ws_connect()でメッセージを送信する際、レート制限が自動適用されます。
DataStore¶
BinanceSpotDataStore(Spot)BinanceUSDSMDataStore(USDⓈ-M)BinanceCOINMDataStore(COIN-M)
対応している WebSocket チャンネルはリファレンスの ATTRIBUTES をご覧ください。
OKX¶
https://www.okx.com/docs-v5/en/
Authentication¶
- API 認証情報
{"okx": ["API_KEY", "API_SERCRET", "API_PASSPHRASE"]}(Live trading){"okx_demo": ["API_KEY", "API_SERCRET", "API_PASSPHRASE"]}(Demo trading)
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
https://www.okx.com/docs-v5/en/#overview-rest-authentication
- WebSocket 認証
WebSocket 接続時に取引所が定める認証情報の WebSocket メッセージが自動送信されます。
WebSocket¶
- Ping-Pong
取引所が定める Ping-Pong メッセージが自動送信されます。
DataStore¶
対応している WebSocket チャンネルはリファレンスの ATTRIBUTES をご覧ください。
Phemex¶
https://phemex-docs.github.io/
Authentication¶
- API 認証情報
{"phemex": ["API_KEY", "API_SERCRET"]}(Mainnet){"phemex_testnet": ["API_KEY", "API_SERCRET"]}(Testnet)
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
- WebSocket 認証
WebSocket 接続時に取引所が定める認証情報の WebSocket メッセージが自動送信されます。
WebSocket¶
- Ping-Pong
取引所が定める Ping-Pong メッセージが自動送信されます。
DataStore¶
対応している WebSocket チャンネルはリファレンスの ATTRIBUTES をご覧ください。
Bitget¶
https://www.bitget.com/api-doc/common/intro
Authentication¶
- API 認証情報
{"bitget": ["API_KEY", "API_SERCRET", "API_PASSPHRASE"]}
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
- WebSocket 認証
WebSocket 接続時に取引所が定める認証情報の WebSocket メッセージが自動送信されます。
WebSocket¶
- Ping-Pong
取引所が定める Ping-Pong メッセージが自動送信されます。
https://www.bitget.com/api-doc/common/websocket-intro#connect
DataStore¶
MEXC¶
https://mexcdevelop.github.io/apidocs/spot_v3_en/
警告
MEXC Future は注文系 API が maintenance となっているので、実質的に API トレードできません。
https://mexcdevelop.github.io/apidocs/contract_v1_en/#update-log
また Spot についても一部銘柄 (なんと BTC/USDT を含む) は同じく注文系 API が利用停止になっています。
Authentication¶
- API 認証情報
{"mexc": ["API_KEY", "API_SERCRET"]}
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
- WebSocket 認証
MEXC はトークン認証方式の為、ユーザーコードで URL に
listenKey含める必要があります。https://mexcdevelop.github.io/apidocs/spot_v3_en/#websocket-user-data-streams
WebSocket¶
- Ping-Pong
取引所が定める Ping-Pong メッセージが自動送信されます。
https://mexcdevelop.github.io/apidocs/spot_v3_en/#websocket-market-streams
DataStore¶
注文系 API が利用できないことを鑑みて、サポート対象外としています。
KuCoin¶
https://www.kucoin.com/docs/beginners/introduction
Authentication¶
- API 認証情報
{"kucoin": ["API_KEY", "API_SERCRET", "API_PASSPHRASE"]}
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
https://www.kucoin.com/docs/basic-info/connection-method/authentication/creating-a-request
- WebSocket 認証
KuCoin はトークン認証方式の為、ユーザーコードで URL と
tokenの発行をする必要があります。ただし KuCoin 系 DataStore には発行された URL と
tokenを管理する機能があります。KuCoin 系 DataStore の
initialize()は上記/api/v1/bullet-privateの POST リクエストに対応しています。 これにより発行された URL とtokenが DataStore の属性endpointに格納されます。 この属性を利用すると KuCoin の WebSocket URL を構築するのに便利です。また同様に
initialize()は/api/v1/bullet-publicの POST リクエストにも対応しています。 https://www.kucoin.com/docs/websocket/basic-info/apply-connect-token/public-token-no-authentication-required-
WebSocket¶
- Ping-Pong
取引所が定める Ping-Pong メッセージが自動送信されます。
DataStore¶
対応している WebSocket チャンネルはリファレンスの ATTRIBUTES をご覧ください。
BitMEX¶
https://www.bitmex.com/app/apiOverview
警告
BitMEX Mainnet は日本国内からは利用できません。 Testnet のみ利用可能です。
Authentication¶
- API 認証情報
{"bitmex": ["API_KEY", "API_SERCRET"]}(Mainnet){"bitmex_testnet": ["API_KEY", "API_SERCRET"]}(Testnet)
- HTTP 認証
HTTP リクエスト時に取引所が定める認証情報が自動設定されます。
https://www.bitmex.com/app/apiKeysUsage#Authenticating-with-an-API-Key
- WebSocket 認証
WebSocket 接続時に取引所が定める認証情報が自動設定されます。
DataStore¶
対応している WebSocket チャンネルはリファレンスの ATTRIBUTES をご覧ください。
Hyperliquid¶
https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api
Authentication¶
- API 認証情報
{"hyperliquid": ["PRIVATE_KEY"]}(Mainnet){"hyperliquid_testnet": ["PRIVATE_KEY"]}(Testnet)
- HTTP 認証
Exchange endpoint (
/exchange) へのリクエストに対して以下の Request Body を省略することができます。 省略した場合、以下の値が自動設定されます。nonce: 現在時刻のミリ秒signature:actionをハッシュ化し秘密鍵で署名した値
実際の利用方法は Examples を参照してください。
- WebSocket 認証
Post requests の
actionタイプのメッセージ送信に対して以下の認証情報が自動設定されます。nonce: 現在時刻のミリ秒signature:actionをハッシュ化し秘密鍵で署名した値
手動で署名をする必要がある場合は、より低レベルな署名ヘルパー pybotters.helpers.hyperliquid を利用してください。
WebSocket¶
- Ping-Pong
取引所が定める Ping-Pong メッセージが自動送信されます。
https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/websocket
DataStore¶
対応している WebSocket チャンネルはリファレンスの ATTRIBUTES をご覧ください。