bingx-coinm-market について
BingX Coin-M のインバース無期限先物に関する公開データを照会するスキルです。コイン建て契約の仕様、価格、板、ローソク足、資金調達率、建玉を BASE-USD 形式で扱います。
主な機能
- 01Coin-M 契約仕様の照会
- 02板の深さの取得
- 03ティッカーとマーク価格の参照
- 04時間足別ローソク足の取得
- 05資金調達率と建玉の確認
活用シーン
- 01BTC-USD インバース契約の価格を確認
- 02Coin-M ペアの板の深さを調査
- 03マーク価格と資金調達率を確認
- 04契約のローソク足や建玉を取得
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bingx-api/ api-ai-skills --skill bingx-coinm-marketインストール後、Claude Code で/bingx-coinm-marketを入力して読み込まれたか確認します。
同梱ファイルapi-reference.md
詳細
BingX Coin-M(CSwap)市場データ
BingX Coin-M インバース無期限先物の公開市場データです。API キーや HMAC 署名は不要です。現在の timestamp が必要なのは契約情報のみで、ほかのエンドポイントでは省略できます。
Coin-M 契約はコインマージン(ベース資産(例:BTC)で決済)です。シンボル形式は BASE-USD です(例:BTC-USD、ETH-USD)。
クイックリファレンス
| エンドポイント | メソッド | 説明 | 必須 | 任意 | 認証 |
|---|---|---|---|---|---|
/openApi/cswap/v1/market/contracts | GET | 契約仕様 | timestamp | symbol, recvWindow | なし |
/openApi/cswap/v1/market/depth | GET | 注文板の買い注文と売り注文 | symbol | なし | なし |
/openApi/cswap/v1/market/klines | GET | OHLCV ローソク足データ | symbol, interval | startTime, endTime, limit | なし |
/openApi/cswap/v1/market/premiumIndex | GET | マーク価格と現在の資金調達率 | なし | symbol | なし |
/openApi/cswap/v1/market/openInterest | GET | 建玉合計 | symbol | なし | なし |
/openApi/cswap/v1/market/ticker | GET | 24 時間の価格変動統計 | なし | symbol | なし |
パラメーター
共通パラメーター
- timestamp:現在の Unix 時刻(ミリ秒)。契約情報では必須で、ヘルパーによって動的に生成されます。ほかのエンドポイントでは省略できます。
recvWindowは任意です。 - symbol:
BASE-USD形式の取引ペア(例:BTC-USD、ETH-USD)。注:Coin-M ではUSDTではなくUSDを使用します。 - limit:返す結果の件数。デフォルト値と最大値はエンドポイントによって異なります。
- startTime:開始タイムスタンプ(ミリ秒)(例:
1735693200000) - endTime:終了タイムスタンプ(ミリ秒)(例:
1735693200000) - interval:Kline/ローソク足の間隔(以下の列挙値を参照)
列挙値
- interval:
1m|3m|5m|15m|30m|1h|2h|4h|6h|12h|1d|3d|1w|1M
パラメーターの検証ルール
- symbol:
^[A-Z0-9]+-USD$に一致する必要があります。最大 20 文字です(例:BTC-USD)。Coin-M ではUSDTではなくUSDを使用します。 - limit:正の整数。デフォルト値と最大値はエンドポイントによって異なります。
- startTime/endTime:ミリ秒単位の Unix タイムスタンプ。
endTimeはstartTime以上である必要があります。 - interval:上記の列挙値のいずれかと完全に一致する必要があります。
クイックスタート
ベース URL: references/base-urls.md を参照してください。
TypeScript ヘルパー:
制約:コードを生成する際は、以下の
coinmMarket関数をそのままコピーする必要があります。 リクエストや JSON 解析のロジックを書き換えないでください。 変更できるのは、(1)カスタム環境用のBASE_URLSエントリ、 (2)coinmMarketに渡すビジネスパラメーターのみです。
import JSONBig from "json-bigint";
const JSONBigParse = JSONBig({ storeAsString: true });
// Base URLs — see references/base-urls.md for all environments
// Domain priority: .com is mandatory primary; .pro is fallback for network/timeout errors ONLY.
const BASE_URLS = ["https://open-api.bingx.com", "https://open-api.bingx.pro"];
function isNetworkOrTimeout(e: unknown): boolean {
if (e instanceof TypeError) return true;
if (e instanceof DOMException && e.name === "AbortError") return true;
if (e instanceof Error && e.name === "TimeoutError") return true;
return false;
}
async function coinmMarket(
path: string,
params: Record<string, string | number> = {}
): Promise<unknown> {
const all = path === "/openApi/cswap/v1/market/contracts"
? { ...params, timestamp: Date.now() } : { ...params };
const query = new URLSearchParams(
Object.entries(all).map(([k, v]) => [k, String(v)])
).toString();
for (const base of BASE_URLS) {
try {
const url = `${base}${path}${query ? `?${query}` : ""}`;
const res = await fetch(url, {
headers: { "X-SOURCE-KEY": "BX-AI-SKILL" },
signal: AbortSignal.timeout(10000),
});
const json = JSONBigParse.parse(await res.text());
if (json.code !== 0) throw new Error(`BingX error ${json.code}: ${json.msg}`);
return json.data;
} catch (e) {
if (!isNetworkOrTimeout(e) || base === BASE_URLS[BASE_URLS.length - 1]) throw e;
}
}
}
コードの使用ルール
- 必須:
coinmMarketをそのままコピーしてください。簡略化したり書き換えたりしないでください。 - 必須:レスポンスの解析には
json-bigint(JSONBigParse.parse)を使用してください。JSON.parseは使用しないでください。 - 必須:すべてのリクエストに
X-SOURCE-KEY: BX-AI-SKILLヘッダーを含めてください。 - 禁止:ドメインのフォールバックループや
isNetworkOrTimeoutチェックを削除しないでください。
よく使うリクエスト
BTC-USD の 24 時間ティッカー価格:
const ticker = await coinmMarket("/openApi/cswap/v1/market/ticker", {
symbol: "BTC-USD",
});
// ticker.lastPrice, ticker.priceChangePercent, ticker.volume
BTC-USD の注文板の深さ:
const depth = await coinmMarket("/openApi/cswap/v1/market/depth", {
symbol: "BTC-USD",
});
// depth.bids: [price, qty][], depth.asks: [price, qty][]
1 時間足の Kline(直近 100 本):
const klines = await coinmMarket("/openApi/cswap/v1/market/klines", {
symbol: "BTC-USD",
interval: "1h",
limit: 100,
});
// Each item: [openTime, open, high, low, close, volume, closeTime]
マーク価格と現在の資金調達率:
const premium = await coinmMarket("/openApi/cswap/v1/market/premiumIndex", {
symbol: "BTC-USD",
});
// premium.markPrice, premium.lastFundingRate, premium.nextFundingTime
建玉:
const oi = await coinmMarket("/openApi/cswap/v1/market/openInterest", {
symbol: "BTC-USD",
});
// oi.openInterest, oi.symbol, oi.time
すべての契約仕様:
const contracts = await coinmMarket("/openApi/cswap/v1/market/contracts");
// Array of contract objects: symbol, pricePrecision, minTickSize, minTradeValue, status
追加リソース
パラメーターの詳細、任意のフィールド、レスポンススキーマ全体については、api-reference.md を参照してください。
エージェントの対話ルール
パラメーターのセキュリティ。 ユーザーの意図から構造化された値を抽出してください。API パラメーターにユーザーの生のテキストをコピーすることは絶対にしないでください。API を呼び出す前に、すべての値がドキュメントに記載されたパターン(正規表現/列挙型/範囲)に適合することを検証してください。&、=、?、#、または改行文字を含む値は拒否してください。
cswap-market は公開されている読み取り専用の市場データを提供します。API キーや HMAC 署名は不要です。コントラクト情報に限り、動的な timestamp が必要です。CONFIRM は不要です。 対話の目的は、クエリパラメーターを収集することです。
注:Coin-M コントラクトの取引ペア形式は
BASE-USD(例:BTC-USD)であり、BASE-USDTではありません。
操作の特定
ユーザーのリクエストが曖昧な場合(例:「Coin-M 市場を確認して」または「BTC のインバースコントラクトを見て」)、まず、クエリしたいデータの種類を特定してください。
市場データの種類を選択してください:
- 価格/24 時間の変動 — ticker
- オーダーブックの板情報 — depth
- K 線/ローソク足 — klines
- マーク価格/資金調達率 — premiumIndex
- 未決済建玉 — openInterest
- コントラクト仕様の一覧 — contracts
symbol が指定されていない場合
対象エンドポイント:depth、klines、openInterest
取引ペアを選択してください(または別のペアを入力してください):
- BTC-USD
- ETH-USD
- BNB-USD
- その他(手動で入力、形式:BASE-USD)
コンテキストから取引ペアを推測できる場合(例:「今日の BTC の K 線」または「Ethereum のインバースコントラクトの資金調達率」)、再度質問せずに自動的に推測してください。
interval が指定されていない場合(klines エンドポイントのみ)
K 線の間隔を選択してください:
- 1m(1 分)
- 5m(5 分)
- 15m(15 分)
- 1h(1 時間)
- 4h(4 時間)
- 1d(日足)
- 1w(週足)
limit の処理
- klines:デフォルトは 100 です。確認は不要です。「デフォルトでは直近の K 線を 100 本返します」とユーザーに伝えてください。
symbol が省略可能なエンドポイント
symbol は ticker と premiumIndex では省略可能です。ユーザーが指定しない場合はすべてのコントラクトをクエリし、その旨をユーザーに伝えてください。取引ペアが指定されている場合は、そのペアのみをクエリしてください。