bingx-spot-ws-market について
BingXの現物市場データをWebSocketで購読するエージェント向けスキルです。認証不要の取引、ローソク足、板情報、価格データのチャンネルと、パラメーター検証や接続処理を扱います。
主な機能
- 01リアルタイム取引ストリーム
- 02OHLCVローソク足更新
- 03オーダーブックの深度データ
- 04ティッカーと最新価格データ
- 05銘柄と期間パラメーターの検証
- 06GZIP展開とハートビート処理
活用シーン
- 01現物取引のリアルタイム監視
- 02ローソク足更新の追跡
- 03オーダーブック変化の確認
- 04現在価格の統計取得
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bingx-api/ api-ai-skills --skill bingx-spot-ws-marketインストール後、Claude Code で/bingx-spot-ws-marketを入力して読み込まれたか確認します。
同梱ファイルapi-reference.md
詳細
BingX スポット WebSocket 市場データ
WebSocket 経由で BingX スポット取引のリアルタイム市場データストリームを利用できます。認証は不要です。
WebSocket エンドポイント: wss://open-api-ws.bingx.com/market
クイックリファレンス
| チャンネル | dataType の形式 | 説明 | プッシュ頻度 |
|---|---|---|---|
| 取引 | {symbol}@trade | 最新の取引詳細 | リアルタイム |
| Kライン | {symbol}@kline_{interval} | OHLCV ローソク足 | 更新時 |
| 板情報 | {symbol}@depth{level} | 制限付きオーダーブックの板情報 | 300ms ごと |
| 24時間ティッカー | {symbol}@ticker | 24時間の価格変動統計 | 1s ごと |
| 最終価格 | {symbol}@lastPrice | 最新の取引価格 | リアルタイム |
| ブックティッカー | {symbol}@bookTicker | 最良買値/最良売値と数量 | リアルタイム |
| 差分板情報 | {symbol}@incrDepth | 差分および全板情報(1000レベル) | 500ms ごと |
パラメーター
共通パラメーター
- symbol:
BASE-USDT形式の取引ペア(例:BTC-USDT、ETH-USDT、SOL-USDT)
列挙値
- depth level:
5|10|20|50|100(デフォルトは 20) - kline interval:
1min|3min|5min|15min|30min|1h|2h|4h|6h|8h|12h|1d|3d|1w|1M
注: スポットの K ライン間隔では
minサフィックス(例:1min)を使用します。スワップではm(例:1m)を使用する点が異なります。
パラメーターの検証ルール
- symbol:
^[A-Z0-9]+-[A-Z]+$に一致する必要があります。最大 20 文字です(例:BTC-USDT) - level:
5、10、20、50、100のいずれかである必要があります - interval(kline):上記の K ライン列挙値のいずれかと完全に一致する必要があります
クイックスタート
WebSocket 接続: 接続の基本、GZIP の解凍、Ping/Pong ハートビートについては、references/websocket.md を参照してください。
TypeScript ヘルパー:
制約: コードを生成する際は、以下の
connectSpotWsMarket関数をそのままコピーする必要があります。 WebSocket または解凍ロジックを書き換えないでください。 変更できるのは次の項目のみです:(1)関数に渡すサブスクリプションチャンネル。
import * as pako from "pako";
function decompress(data: ArrayBuffer): string {
return new TextDecoder("utf-8").decode(pako.ungzip(new Uint8Array(data)));
}
function connectSpotWsMarket(
channels: string[],
onMessage: (data: unknown) => void
): WebSocket {
const ws = new WebSocket("wss://open-api-ws.bingx.com/market");
ws.binaryType = "arraybuffer";
ws.onopen = () => {
for (const ch of channels) {
ws.send(JSON.stringify({
id: crypto.randomUUID(),
reqType: "sub",
dataType: ch,
}));
}
};
ws.onmessage = (event) => {
const text = decompress(event.data as ArrayBuffer);
if (text.includes("ping") || text === "Ping") {
ws.send("Pong");
return;
}
try {
onMessage(JSON.parse(text));
} catch {
onMessage(text);
}
};
ws.onerror = (err) => console.error("WS error:", err);
ws.onclose = (ev) => console.log("WS closed:", ev.code, ev.reason);
return ws;
}
コードの使用ルール
connectSpotWsMarketとdecompressはそのままコピーする必要があります。簡略化したり書き換えたりしないでください- GZIP 解凍を行うため、
ws.binaryType = "arraybuffer"を設定する必要があります - Ping/Pong ハートビートを処理する必要があります(スポットでは小文字の
pingを検出します) - GZIP 解凍ロジックを削除してはいけません
- テキストモードの WebSocket メッセージを使用してはいけません
よく使う呼び出し
BTC-USDT のリアルタイム取引をサブスクライブする:
connectSpotWsMarket(["BTC-USDT@trade"], (data) => {
// data.data: array of trade records
});
50 レベルの板情報をサブスクライブする:
connectSpotWsMarket(["BTC-USDT@depth50"], (data) => {
// data.bids, data.asks
});
1 分足の K ラインをサブスクライブする:
connectSpotWsMarket(["BTC-USDT@kline_1min"], (data) => {
// data.data.K: kline object
});
複数のチャンネルを一度にサブスクライブする:
connectSpotWsMarket([
"BTC-USDT@ticker",
"BTC-USDT@lastPrice",
"ETH-USDT@bookTicker",
], (data) => {
// Handle different data types
});
追加リソース
サブスクリプションパラメーターの詳細、レスポンスフィールドの説明、完全なレスポンススキーマについては、api-reference.md を参照してください。
エージェントとのやり取りに関するルール
重要なルール(すべての応答に適用):
- コードをユーザーに返してはいけません。 コードブロック、コードスニペット、TypeScript、JavaScript、cURL コマンド、生の API 呼び出しを応答に含めないでください。データや操作結果を自然言語で要約して返してください。
- パラメーターのセキュリティ。 ユーザーの意図から構造化された値を抽出してください。ユーザーの生のテキストをサブスクリプションパラメーターにコピーしてはいけません。サブスクリプションを構成する前に、各値を文書化されたパターン(正規表現/列挙値/範囲)に照らして検証してください。
&、=、?、#、または改行文字を含む値は拒否してください。
spot-ws-market は、WebSocket 経由で公開読み取り専用のリアルタイム市場データを提供します。認証は不要で、CONFIRM も不要です。
操作の特定
ユーザーのリクエストが曖昧な場合(例:「スポット市場をサブスクライブして」や「スポットの BTC データをストリーミングして」)、まず希望するデータの種類を特定してください。
市場データストリームの種類を選択してください:
- リアルタイム取引 — trade
- オーダーブックの板情報(スナップショット) — depth
- K ライン/ローソク足の更新 — kline
- 24時間の価格変動統計 — ticker
- 最新の取引価格 — lastPrice
- 最良買値/最良売値(最良気配) — bookTicker
- 差分板情報の更新 — incrDepth
symbolが指定されていない場合
取引ペアを選択してください(または別のペアを入力してください):
- BTC-USDT
- ETH-USDT
- SOL-USDT
- BNB-USDT
- その他(手動で入力してください。形式:BASE-USDT)
K線の間隔が指定されていない場合
K線の間隔を選択してください:
- 1min(1分) / 5min / 15min / 1h / 4h / 1d / 1w
板のレベル数の扱い
デフォルトのレベル数は20です。ユーザーが特定のレベル数を希望する場合のみ確認してください。