bingx-trade-review について
BingX のスワップ取引を振り返るスキルです。取引履歴の集計や詳細分析を行いたいトレーダー向けに、注文・約定履歴を取得し、ローカルのタグや振り返りデータと合わせて統計とチャートを生成します。
主な機能
- 01スワップ注文・約定履歴の取得
- 02期間と銘柄によるレビューの絞り込み
- 03タグ別のパフォーマンス分析
- 04ローカルのタグと振り返りの保存
- 05統計データとチャートファイルの生成
活用シーン
- 01週次取引パフォーマンスのレビュー
- 02期間ごとの結果比較
- 03タグ付き取引の成績測定
- 04取引から得た教訓の振り返り
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bingx-api/ api-ai-skills --skill bingx-trade-reviewインストール後、Claude Code で/bingx-trade-reviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
api-reference.mdscripts/requirements.txtreview.pystorage.pytags.py詳細
BingX 取引レビュー
ベース URL: references/base-urls.md を参照 | 認証: references/authentication.md を参照
クイックリファレンス
| エンドポイント | メソッド | 説明 | 認証 |
|---|---|---|---|
/openApi/swap/v2/trade/allOrders | GET | 過去のスワップ注文を取得 | はい |
/openApi/swap/v2/trade/allFillOrders | GET | 過去の約定記録を取得 | はい |
クイックスタート
ベース URL: references/base-urls.md を参照
TypeScript ヘルパー:
制約:コードを生成する際は、以下の
fetchSigned関数をそのままコピーする必要があります。署名、リクエスト、JSON 解析のロジックを書き換えてはいけません。変更できるのは、(1) カスタム環境向けのBASEURL エントリ、(2)fetchSignedに渡すビジネスパラメーターのみです。
import * as crypto from "crypto";
import JSONBig from "json-bigint";
const JSONBigParse = JSONBig({ storeAsString: true });
const BASE = {
"prod-live": ["https://open-api.bingx.com", "https://open-api.bingx.pro"],
"prod-vst": ["https://open-api-vst.bingx.com", "https://open-api-vst.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;
}
function validateParams(params: Record<string, unknown>): void {
const FORBIDDEN = /[&=?#\r\n]/;
for (const [k, v] of Object.entries(params)) {
const s = String(v);
if (FORBIDDEN.test(s)) throw new Error(`Param "${k}" has forbidden char in: "${s}"`);
}
}
async function fetchSigned(env: string, apiKey: string, secretKey: string,
method: "GET" | "POST" | "DELETE", path: string, params: Record<string, unknown> = {}
) {
const urls = BASE[env] ?? BASE["prod-live"];
const all = { ...params, timestamp: Date.now() };
validateParams(all);
const qs = Object.keys(all).sort().map(k => `${k}=${all[k]}`).join("&");
const sig = crypto.createHmac("sha256", secretKey).update(qs).digest("hex");
const signed = `${qs}&signature=${sig}`;
for (const base of urls) {
try {
const url = method === "POST" ? `${base}${path}` : `${base}${path}?${signed}`;
const res = await fetch(url, {
method,
headers: { "X-BX-APIKEY": apiKey, "X-SOURCE-KEY": "BX-AI-SKILL",
...(method === "POST" ? { "Content-Type": "application/x-www-form-urlencoded" } : {}) },
body: method === "POST" ? signed : undefined,
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 === urls[urls.length - 1]) throw e;
}
}
}
よく使う呼び出し
レビュー用にスワップ取引履歴を取得する:
const history = await fetchSigned("prod-live", API_KEY, SECRET, "GET",
"/openApi/swap/v2/trade/allOrders", { symbol: "BTC-USDT", limit: 100 }
);
起動条件
ユーザーが次のいずれかを述べた場合、このスキルを起動します。
- 「取引レビュー」「最近のパフォーマンス」「週間 PnL」「取引サマリー」
- 「勝率はどのくらい」「取引をレビューして」「取引日誌」
- 「取引にタグを付ける」「ブレイクアウト取引の勝率」「利益が出ている取引はどれか」
- 「振り返りを書く」「学んだことを要約する」
- 「今週と先週を比較する」
実行手順
ステップ 1 — ユーザーの意図を解析する
| mode | トリガーの例 | 説明 |
|---|---|---|
| summary | 「取引レビュー」「最近のパフォーマンス」「週間 PnL」 | 統計サマリーとチャート |
| detail | 「BTC の取引を分析して」 | シンボル別または取引ごとの詳細分析 |
| tag | 「この取引にタグを付けて」「ブレイクアウト取引の勝率」 | タグ管理とタグ別統計 |
| reflect | 「振り返りを書く」「学んだことを要約する」 | 取引の振り返りを追加/表示 |
| compare | 「今週と先週を比較する」 | 期間をまたいだ比較 |
パラメーターの抽出:
| パラメーター | デフォルト | 説明 |
|---|---|---|
| period | 7d | レビュー期間(1d/7d/30d/90d/all) |
| symbol | all | 取引ペアで絞り込み |
| tag_filter | - | タグで絞り込み |
ステップ 2 — 取引履歴を取得する
bingx-swap-account を呼び出して、次の情報を取得します。
- 過去の約定(開始/終了時刻、価格、数量、方向)
- 実現 PnL
- 手数料
~/.bingx-skills/trade-review/trades.json のローカルタグおよび振り返りデータと統合します。
ステップ 3 — 分析を実行する
python3 scripts/review.py \
--mode {mode} \
--period {period} \
--symbol {symbol} \
--trades '{trades_json}' \
--output-dir ~/.bingx-skills/trade-review/charts
出力:統計 JSON とチャート PNG ファイル。
ステップ 4 — 出力を整形する(出力テンプレートに従う)
ステップ 5 — チャートを表示する
チャートはローカルの PNG ファイルとして保存されます。ユーザーにファイルパスを伝えてください。
出力テンプレート
サマリーモード
**Trade Review (Last {period})**
Total Trades {total_trades}
Win Rate {win_rate}% ({wins} wins / {losses} losses)
Total PnL {total_pnl}
Profit Factor {profit_factor}
Avg per Trade {avg_pnl}
Best Trade {max_win}
Worst Trade {max_loss}
Avg Hold Time {avg_hold_time}
Max Drawdown {max_drawdown}
Total Fees {total_fees}
Long: {long_count} trades, win rate {long_win_rate}%, PnL {long_pnl}
Short: {short_count} trades, win rate {short_win_rate}%, PnL {short_pnl}
Best Symbol: {best_symbol} ({best_pnl})
Worst Symbol: {worst_symbol} ({worst_pnl})
Charts saved:
- PnL curve: ~/.bingx-skills/trade-review/charts/pnl_curve.png
- Win/loss dist: ~/.bingx-skills/trade-review/charts/win_loss_dist.png
- Symbol breakdown: ~/.bingx-skills/trade-review/charts/symbol_breakdown.png
タグモード
**Tag Analysis: {tag}**
{count} trades tagged with this label
Win Rate {win_rate}% ({wins} wins / {losses} losses)
Total PnL {total_pnl}
Avg PnL {avg_pnl}
Conclusion: {one-line analysis}
比較モード
**{period_a} vs {period_b}**
{period_a} {period_b} Change
Win Rate {wr_a}% {wr_b}% {wr_delta}
Total PnL {pnl_a} {pnl_b} {pnl_delta}
Profit Factor {pf_a} {pf_b} {pf_delta}
Trade Count {cnt_a} {cnt_b} {cnt_delta}
Max Drawdown {dd_a} {dd_b} {dd_delta}
Summary: {one-line comparison conclusion}
エージェントとのやり取りに関するルール
パラメーターのセキュリティ。 ユーザーの意図から構造化された値を抽出してください。ユーザーの生のテキストを API パラメーターにコピーしてはいけません。
このスキルのすべての操作は読み取り専用です(取引履歴の取得とローカルレポートの生成)。どの環境でも CONFIRM は不要です。
期間が指定されていない場合、デフォルトは 7d です。シンボルが指定されていない場合、デフォルトは all シンボルです。
エラー処理
- 取引記録がない場合:選択した期間に約定がないことをユーザーに伝える
- タグが見つからない場合:タグが見つからなかったことを伝え、既存のタグを一覧表示する
- データ取得に失敗した場合:後でもう一度試すよう提案する
- チャート生成に失敗した場合:テキストの統計情報は出力し、チャート生成エラーについて注記する