見出し画像

覚書 bitMEXのwebsocket

かぴぱらです。

いよいよもってbitMEXと真面目に向き合おうと思ったので、手始めにwebsocketを触りました。その覚書。

ドキュメント

リファレンス

git(python)


導入

驚いたことに、ライブラリがある。

pip install bitmex-ws

サンプルコードを流してみる。

from bitmex_websocket import BitMEXWebsocket
ws = BitMEXWebsocket(endpoint="https://testnet.bitmex.com/api/v1", symbol="XBTUSD", api_key=None, api_secret=None)
ws.get_instrument()
→とれる
ws.get_ticker()
→とれる
ws.funds()
→とれない。(authだよね)
ws.market_depth()
→とれる
ws.open_orders()
→とれない。(同上)
ws.recent_trades()
→とれる。(自分の以外もでるやつね)

フルサンプルだよと書かれていた「main.py」は単純にpublicのデータをsubscribeしてloggerで吐くというだけ。

socketを使って注文とかできるという噂だったが、MEX禁制のライブラリでできることは上記の5コマンドだけの模様。

本番ネットに接続してみる

import json
from bitmex_websocket import BitMEXWebsocket

api_key = ""
api_secret = ""
with open("key.json", "r") as f:
   key_info = json.load(f)
   api_key = key_info.get("key")
   api_secret = key_info.get("secret")
   
#ws = BitMEXWebsocket(endpoint="https://testnet.bitmex.com/api/v1", symbol="XBTUSD", api_key=None, api_secret=None)
ws = BitMEXWebsocket(endpoint="https://www.bitmex.com/api/v1", symbol="XBTUSD", api_key=api_key, api_secret=api_secret)

これで本番につながる。

禁制ライブラリでできることが少ない。→つまらない


websocketでできること一覧

public

"announcement", // サイトのお知らせ
"chat", // Trollbox チャット
"connected", // 接続ユーザー/ボットの統計
"funding", // 最新のスワップ資金調達率。 資金調達間隔ごとに送信 (通常8時間)
"instrument", // 取引高とビッド/アスクなどの最新商品情報
"insurance", // デイリーの保険基金に関する最新情報
"liquidation", // ブックに記入される清算注文
"orderBookL2_25", // レベル 2 のオーダーブックの上位 25 レベル
"orderBookL2", // フルレベル 2 のオーダーブック
"orderBook10", // 従来のフルブックプッシュを使用する上位 10 レベル
"publicNotifications", // システム全体への通知 (短期公開メッセージ用)
"quote", // ブックの上位レベル
"quoteBin1m", // 1 分足クォートビン
"quoteBin5m", // 5 分足クォートビン
"quoteBin1h", // 1 時間足クォートビン
"quoteBin1d", // 1 日足クォートビン
"settlement", // 決済
"trade", // ライブ取引
"tradeBin1m", // 1 分足取引ビン
"tradeBin5m", // 5 分足取引ビン
"tradeBin1h", // 1 時間足取引ビン
"tradeBin1d", // 1 日足取引ビン

auth

"affiliate", // アフィリエイトの状況 (合計紹介ユーザーや支払い率等)
"execution", // 個別執行 (注文ごとに複数の可能性)
"order", // リアルタイムでの注文の最新状況
"margin", // 最新アカウント残高と証拠金必要額に関する最新情報
"position", // ポジションに関する最新情報
"privateNotifications", // 個人的通知 - 現在未使用
"transact" // 入金/出金に関する最新情報
"wallet" // ビットコインアドレス残高データ (合計入金・出金額等)

mm..socketでなんでもできるよ。っていうのは気のせいか..?

できないことも多いけど、ライブラリを使うとサクッと開発できそうなので、ひとまずライブラリでbotを組んでみる。

次回に続く!





この記事が気に入ったらサポートをしてみませんか?