bingx-spot-market について
BingXの公開スポット市場データを照会するエージェント向けスキルです。価格、板、取引、ローソク足を扱い、読み取り専用エンドポイントやパラメーター検証、TypeScriptのリクエスト規則を説明します。
主な機能
- 01現物取引ペアと仕様
- 02価格と24時間統計
- 03板の深度と最良気配値
- 04最近および過去の取引
- 05期間指定可能なOHLCVローソク足
活用シーン
- 01現物ペアの最新価格確認
- 02ペアの買い気配と売り気配の確認
- 03最近または過去の取引取得
- 04指定期間のローソク足取得
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bingx-api/ api-ai-skills --skill bingx-spot-marketインストール後、Claude Code で/bingx-spot-marketを入力して読み込まれたか確認します。
同梱ファイルapi-reference.md
詳細
BingX 現物市場データ
BingX 現物取引の公開市場データです。認証は不要です。
クイックリファレンス
| エンドポイント | メソッド | 説明 | 必須 | 任意 | 認証 |
|---|---|---|---|---|---|
/openApi/spot/v1/common/symbols | GET | 現物取引のシンボル仕様 | なし | symbol | 不要 |
/openApi/spot/v1/market/depth | GET | オーダーブックの買い注文と売り注文 | symbol | limit | 不要 |
/openApi/spot/v2/market/depth | GET | 集約されたオーダーブック(精度指定あり) | symbol, depth, type | なし | 不要 |
/openApi/spot/v1/market/trades | GET | 最近の公開取引 | symbol | limit | 不要 |
/openApi/spot/v2/market/kline | GET | OHLCV ローソク足データ | symbol, interval | startTime, endTime, limit | 不要 |
/openApi/spot/v1/ticker/24hr | GET | 24 時間の価格変動統計 | なし | symbol | 不要 |
/openApi/spot/v2/ticker/price | GET | 最新価格ティッカー | symbol | なし | 不要 |
/openApi/spot/v1/ticker/bookTicker | GET | 最良買値/売値と数量 | symbol | なし | 不要 |
/openApi/market/his/v1/kline | GET | 過去のローソク足データ | symbol, interval | startTime, endTime, limit | 不要 |
/openApi/market/his/v1/trade | GET | 過去の取引検索 | symbol | limit, fromId | 不要 |
パラメーター
共通パラメーター
- symbol:
BASE-USDT形式の取引ペア(例:BTC-USDT、ETH-USDT、SOL-USDT)。注:オーダーブック集約エンドポイント(/openApi/spot/v2/market/depth)では、アンダースコア形式のBTC_USDTを使用します。 - limit:返す結果の件数です。デフォルト値と最大値はエンドポイントによって異なります。
- startTime:開始タイムスタンプ(ミリ秒)(例:
1735693200000) - endTime:終了タイムスタンプ(ミリ秒)(例:
1735779600000) - interval:ローソク足の間隔(下記の列挙値を参照)
列挙値
- interval:
1m|3m|5m|15m|30m|1h|2h|4h|6h|8h|12h|1d|3d|1w|1M - type(オーダーブック集約の精度):
step0|step1|step2|step3|step4|step5
パラメーターの検証ルール
- symbol:
^[A-Z0-9]+-[A-Z]+$に一致する必要があります(例:BTC-USDT)。depth エンドポイントではBTC_USDT(アンダースコア)を使用します。 - limit:正の整数です。デフォルト値と最大値はエンドポイントによって異なります。
- startTime / endTime:ミリ秒単位の Unix タイムスタンプです。
endTimeはstartTime以上である必要があります。 - interval:上記の列挙値のいずれかと完全に一致する必要があります。
- type:使用する場合は、
step0~step5のいずれかである必要があります。
クイックスタート
ベース URL: references/base-urls.md を参照してください。
TypeScript ヘルパー:
制約:コードを生成する際は、以下の
fetchSpotMarket関数をそのままコピーする必要があります。 リクエストや JSON の解析ロジックを書き換えてはいけません。 変更できるのは、(1)カスタム環境向けのBASE_URLSエントリー、 (2)fetchSpotMarketに渡すビジネスパラメーターのみです。
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 fetchSpotMarket(
path: string,
params: Record<string, string | number> = {}
): Promise<unknown> {
const query = new URLSearchParams(
Object.entries(params).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;
}
}
}
コードの使用ルール
fetchSpotMarketはそのままコピーする必要があります。簡略化したり書き換えたりしてはいけません。- レスポンスの解析には
json-bigint(JSONBigParse.parse)を使用する必要があります。JSON.parseは使用しないでください。 - すべてのリクエストに
X-SOURCE-KEY: BX-AI-SKILLヘッダーを含める必要があります。 - ドメインのフォールバックループや
isNetworkOrTimeoutチェックを削除してはいけません。
よく使う呼び出し
BTC-USDT の 24 時間ティッカー:
const ticker = await fetchSpotMarket("/openApi/spot/v1/ticker/24hr", {
symbol: "BTC-USDT",
});
// ticker[0].lastPrice, ticker[0].priceChangePercent, ticker[0].volume
最新価格:
const price = await fetchSpotMarket("/openApi/spot/v2/ticker/price", {
symbol: "BTC-USDT",
});
// price[0].trades[0].price
オーダーブックの深さ(上位 20 段):
const depth = await fetchSpotMarket("/openApi/spot/v1/market/depth", {
symbol: "BTC-USDT",
limit: 20,
});
// depth.bids: [price, qty][], depth.asks: [price, qty][]
1 時間足ローソク足(直近 100 本):
const klines = await fetchSpotMarket("/openApi/spot/v2/market/kline", {
symbol: "BTC-USDT",
interval: "1h",
limit: 100,
});
// Each item: [openTime, open, high, low, close, volume, closeTime, quoteVolume]
最良買値/売値:
const bookTicker = await fetchSpotMarket("/openApi/spot/v1/ticker/bookTicker", {
symbol: "BTC-USDT",
});
// bookTicker[0].bidPrice, bookTicker[0].askPrice
最近の取引:
const trades = await fetchSpotMarket("/openApi/spot/v1/market/trades", {
symbol: "BTC-USDT",
limit: 50,
});
// trades[0].price, trades[0].qty, trades[0].time
追加リソース
パラメーターの詳細な説明、任意フィールド、完全なレスポンススキーマについては、api-reference.md を参照してください。
エージェントの操作ルール
パラメーターのセキュリティ。 ユーザーの意図から構造化された値を抽出してください。ユーザーの生のテキストを API パラメーターにコピーしてはいけません。API を呼び出す前に、すべての値がドキュメントに記載されたパターン(正規表現/列挙型/範囲)に適合することを検証してください。&、=、?、#、または改行文字を含む値は拒否してください。
spot-market は公開の読み取り専用の市場データを提供します。認証は不要で、CONFIRM も不要です。対話の目的は、クエリパラメーターを収集することです。
操作の特定
ユーザーのリクエストが曖昧な場合(例:「スポット市場を確認して」や「BTC の価格を見て」)、まず問い合わせたいデータの種類を特定してください。
市場データの種類を選択してください:
- 価格/24時間の変動 — ticker/24hr
- 最新の取引価格 — ticker/price
- 最良買値/最良売値(板の最上位) — bookTicker
- オーダーブックの板情報 — depth
- K 線/ローソク足 — kline
- 最近の取引 — trades
- 過去の K 線 — historical kline
- 過去の取引 — historical trades
- 取引ペア仕様の一覧 — symbols
シンボルが指定されていない場合
対象エンドポイント:depth、trades、kline、ticker/price、bookTicker、historical kline、historical trades
取引ペアを選択してください(または別のペアを入力してください):
- BTC-USDT
- ETH-USDT
- SOL-USDT
- BNB-USDT
- その他(手動で入力、形式:BASE-USDT)
取引ペアを文脈から推測できる場合(例:「今日の BTC 市場」や「Ethereum の価格」)、再度質問せず、自動的に推測してください。
interval が指定されていない場合(kline エンドポイントのみ)
K 線の間隔を選択してください:
- 1m(1分)
- 5m(5分)
- 15m(15分)
- 1h(1時間)
- 4h(4時間)
- 1d(日次)
- 1w(週次)
limit の扱い
- kline:デフォルトは 100 です。質問する必要はありません。「デフォルトでは直近の K 線を 100 本返します」とユーザーに伝えてください
- depth:デフォルトは 20 です。質問する必要はありません
- trades:デフォルトは 100 です。質問する必要はありません
symbol が任意のエンドポイント
ticker/24hr では symbol は任意です(省略するとすべての取引ペアを返します)。bookTicker と price ticker では symbol が必須です。ユーザーが ticker/24hr の取引ペアを指定していない場合は、すべてのペアをクエリし、その旨をユーザーに伝えてください。取引ペアが指定されている場合は、そのペアのみをクエリしてください。