关于 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 — 解析用户意图
| 模式 | 触发示例 | 描述 |
|---|---|---|
| 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}
Agent 交互规则
**参数安全。**从用户意图中提取结构化值,绝不可将用户原始文本复制到 API 参数中。
此技能中的所有操作均为只读(获取交易历史并生成本地报告)。在任何环境中都无需 CONFIRM。
未指定周期时,默认使用 7d。未指定交易对时,默认使用 all 个交易对。
错误处理
- 没有交易记录:告知用户所选周期内没有成交记录
- 未找到标签:告知用户未找到该标签,并列出已有标签
- 获取数据失败:建议稍后重试
- 图表生成失败:仍输出文本统计数据,并注明图表生成错误
评论
支持 Markdown