mcpField
B
bingx-trade-review

bingx-trade-review

github.com/bingx-api数据与数据库1967 次安装6 天前更新
代码仓库

关于 bingx-trade-review

用于复盘 BingX 永续合约交易的技能,适合需要汇总或细查历史表现的交易者。它获取历史订单和成交记录,与本地标签及反思数据合并,并生成统计信息和图表文件。

主要功能

  1. 01获取历史合约订单与成交记录
  2. 02按周期和交易对筛选复盘
  3. 03按标签分析表现
  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-trade-review

安装后在 Claude Code 中输入/bingx-trade-review确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

api-reference.md
scripts/
requirements.txt
review.py
storage.py
tags.py

详细介绍

BingX 交易复盘

**基础 URL:**参见 references/base-urls.md | **身份验证:**参见 references/authentication.md

快速参考

端点方法描述身份验证
/openApi/swap/v2/trade/allOrdersGET获取历史合约订单是
/openApi/swap/v2/trade/allFillOrdersGET获取历史成交记录是

快速开始

**基础 URL:**参见 references/base-urls.md

TypeScript 辅助函数:

约束:生成代码时,必须原样复制以下 fetchSigned 函数。不得重写签名、请求或 JSON 解析逻辑。仅可修改:(1)自定义环境的 BASE URL 条目;(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“比较本周和上周”跨周期比较

参数提取:

参数默认值描述
period7d复盘周期(1d/7d/30d/90d/all)
symbolall按交易对筛选
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