mcpField
B
bingx-swap-ws-market

bingx-swap-ws-market

github.com/bingx-apiその他19159 回インストール1 週間前に更新
リポジトリ

bingx-swap-ws-market について

BingX USDT-M無期限先物のリアルタイム市場データをWebSocketで購読するためのスキルです。認証不要の公開ストリームと、チャネル設定や入力検証の要点を扱います。

主な機能

  1. 01認証不要の公開市場ストリーム
  2. 02約定、板、価格データの取得
  3. 03OHLCVローソク足の更新
  4. 04複数チャネルの同時購読
  5. 05パラメーター検証のガイド

活用シーン

  1. 01指定ペアのリアルタイム約定の追跡
  2. 02注文板の深さの監視
  3. 03ティッカーとマーク価格の確認
  4. 04ローソク足更新の購読

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bingx-api/api-ai-skills --skill bingx-swap-ws-market

インストール後、Claude Code で/bingx-swap-ws-marketを入力して読み込まれたか確認します。

同梱ファイルapi-reference.md

詳細

BingX Swap WebSocket 市場データ

WebSocket 経由で BingX USDT-M 無期限先物のリアルタイム市場データストリームを利用できます。認証は不要です。

WebSocket エンドポイント: wss://open-api-swap.bingx.com/swap-market

クイックリファレンス

チャネルdataType 形式説明プッシュ頻度
Depth{symbol}@depth{level}@{interval}板の限定的な深さBTC/ETH:200ms、その他:500ms
Trade{symbol}@trade最新の取引詳細リアルタイム
K-Line{symbol}@kline_{interval}OHLCV ローソク足更新時
24h Ticker{symbol}@ticker24 時間の価格変動統計1 秒ごと
Last Price{symbol}@lastPrice最新の取引価格リアルタイム
Mark Price{symbol}@markPrice最新のマーク価格リアルタイム
Book Ticker{symbol}@bookTicker最良の買値/売値と数量200ms ごと
Incremental Depth{symbol}@incrDepth板の差分更新BTC/ETH:200ms、その他:800ms

パラメーター

共通パラメーター
  • symbol:BASE-QUOTE 形式の取引ペア(例:BTC-USDT、ETH-USDT、SOL-USDT)
列挙値
  • depth level:5 | 10 | 20 | 50 | 100
  • depth interval:200ms | 500ms(BTC-USDT と ETH-USDT は 200ms に対応し、その他は 500ms を使用します)
  • kline interval:1m | 3m | 5m | 15m | 30m | 1h | 2h | 4h | 6h | 8h | 12h | 1d | 3d | 1w | 1M
パラメーターの検証ルール
  • symbol:^[A-Z0-9]+-[A-Z]+$ に一致する必要があります。最大 20 文字です(例:BTC-USDT)
  • level:5、10、20、50、100 のいずれかである必要があります
  • interval(depth):200ms または 500ms である必要があります
  • interval(kline):上記の kline 列挙値のいずれかと完全に一致する必要があります

クイックスタート

WebSocket 接続: 接続の基本、GZIP 解凍、Ping/Pong ハートビートについては、references/websocket.md を参照してください。

TypeScript ヘルパー:

制約:コードを生成する際は、以下の connectSwapWsMarket 関数をそのままコピーする必要があります。 WebSocket または解凍のロジックを書き換えないでください。 変更できるのは、関数に渡すサブスクリプションチャネルのみです。

import * as pako from "pako";

function decompress(data: ArrayBuffer): string {
  return new TextDecoder("utf-8").decode(pako.ungzip(new Uint8Array(data)));
}

function connectSwapWsMarket(
  channels: string[],
  onMessage: (data: unknown) => void
): WebSocket {
  const ws = new WebSocket("wss://open-api-swap.bingx.com/swap-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 === "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;
}
コードの使用ルール
  • 必須:connectSwapWsMarket と decompress をそのままコピーしてください。簡略化したり書き換えたりしないでください
  • 必須:GZIP 解凍のために ws.binaryType = "arraybuffer" を設定してください
  • 必須:Ping/Pong ハートビートを処理してください("Ping" を受信したら "Pong" を返します)
  • 禁止:GZIP 解凍ロジックを削除しないでください
  • 禁止:テキストモードの WebSocket メッセージを使用しないでください

よく使う呼び出し

BTC-USDT のリアルタイム取引を購読する:

connectSwapWsMarket(["BTC-USDT@trade"], (data) => {
  const message = data as {
    dataType?: string;
    data?: Array<{ t: string; T: number; s: string; p: string; q: string; m: boolean }>;
  };
  if (message.dataType === "BTC-USDT@trade" && Array.isArray(message.data)) {
    for (const trade of message.data) {
      // t is a string trade ID; T is the trade timestamp in milliseconds.
      console.log(trade.t, trade.T, trade.s, trade.p, trade.q);
    }
  }
});

500ms 間隔で 20 段階の板情報を購読する:

connectSwapWsMarket(["BTC-USDT@depth20@500ms"], (data) => {
  // The full message has top-level ts and data: { bids, asks } (string pairs).
  // data has no T. ts is message construction time, not source book age.
});

1h の K-Line を購読する:

connectSwapWsMarket(["BTC-USDT@kline_1h"], (data) => {
  // data.K.o (open), data.K.h (high), data.K.l (low), data.K.c (close), data.K.v (volume)
});

複数のチャネルを一度に購読する:

connectSwapWsMarket([
  "BTC-USDT@ticker",
  "BTC-USDT@lastPrice",
  "ETH-USDT@trade",
], (data) => {
  // Handle different data types based on dataType field
});

追加リソース

サブスクリプションパラメーター、レスポンスフィールドの説明、および完全なレスポンススキーマについては、api-reference.md を参照してください。


エージェントとの対話ルール

重要なルール(すべての応答に適用):

  1. ユーザーにコードを返してはいけません。 応答にコードブロック、コードスニペット、TypeScript、JavaScript、cURL コマンド、生の API 呼び出しを含めないでください。データまたは操作結果の自然言語による要約のみを返してください。
  2. パラメーターの安全性。 ユーザーの意図から構造化された値を抽出してください。サブスクリプションパラメーターにユーザーの生のテキストをコピーしてはいけません。サブスクリプションを構成する前に、すべての値を文書化されたパターン(正規表現/列挙値/範囲)に照らして検証してください。&、=、?、#、または改行文字を含む値は拒否してください。

swap-ws-market は、WebSocket 経由で公開の読み取り専用リアルタイム市場データを提供します。認証は不要で、CONFIRM も不要です。対話の目的は、ユーザーが適切なサブスクリプションチャネルを設定できるよう支援することです。

操作の特定

ユーザーのリクエストが曖昧な場合(例:「スワップ市場を購読する」や「BTC データをストリーミングする」)、まず希望するデータの種類を特定します。

市場データのストリームの種類を選択してください:

  • リアルタイム取引 — trade
  • オーダーブックの深さ(スナップショット) — depth
  • K 線/ローソク足の更新 — kline
  • 24 時間の価格変動統計 — ticker
  • 最新の取引価格 — lastPrice
  • マーク価格 — markPrice
  • 最良買値/売値(板の最上位) — bookTicker
  • 差分の深さ更新 — incrDepth
シンボルが指定されていない場合

取引ペアを選択してください(または別のペアを入力してください):

  • BTC-USDT
  • ETH-USDT
  • SOL-USDT
  • BNB-USDT
  • その他(手動で入力、形式:BASE-USDT)

コンテキストから取引ペアを推測できる場合(例:「BTC の取引をストリーミングする」)、自動的に推測します。

深さのパラメーターが指定されていない場合

深さのレベルを選択してください:

  • 5 / 10 / 20 / 50 / 100

プッシュ間隔(BTC/ETH は 200ms、その他は 500ms に対応):

  • 200ms / 500ms
K 線の間隔が指定されていない場合

K 線の間隔を選択してください:

  • 1m(1 分)/ 5m / 15m / 1h / 4h / 1d / 1w

コメント