mcpField
B
bingx-dynamic-sl-tp

bingx-dynamic-sl-tp

github.com/bingx-api其他1970 次安装6 天前更新
代码仓库

关于 bingx-dynamic-sl-tp

bingx-dynamic-sl-tp 是用于计算和管理 BingX swap 持仓止损与止盈的技能,支持建议、调整、移动止损和分批止盈;实盘订单需确认后执行。

主要功能

  1. 01ATR、波动率、结构和固定百分比策略
  2. 02获取持仓与 K 线数据
  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-dynamic-sl-tp

安装后在 Claude Code 中输入/bingx-dynamic-sl-tp确认已加载。

包含的文件

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

api-reference.md
scripts/
calculator.py
requirements.txt

详细介绍

BingX 动态 SL/TP

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

快速参考

端点方法描述身份验证
/openApi/swap/v3/quote/klinesGET用于 ATR 计算的 K 线数据是
/openApi/swap/v2/trade/orderPOST下达条件 SL/TP 订单是
/openApi/swap/v2/trade/orderDELETE取消现有 SL/TP 订单是

快速开始

**基础 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;
    }
  }
}

常见调用

获取用于 ATR / 支撑阻力位计算的 K 线(200 根,4 小时):

const klines = await fetchSigned("prod-live", API_KEY, SECRET, "GET",
  "/openApi/swap/v3/quote/klines", { symbol: "BTC-USDT", interval: "4h", limit: 200 }
);

触发条件

当用户提出以下任一请求时,启用此技能:

  • “帮我设置 SL/TP”、“设置止损”、“下达止损订单”
  • “动态止损”、“追踪止盈”、“追踪止损”、“追踪止损”
  • “部分止盈”、“分 3 批止盈”
  • “我的止损应该设在哪里”、“ATR 止损”、“波动率止损”
  • “将止损移至盈亏平衡点”

执行步骤

步骤 1 — 解析用户意图
模式触发示例描述
set“帮我设置 SL/TP”计算并为当前仓位设置 SL/TP
adjust“将止损移至盈亏平衡点”调整现有 SL/TP
trailing“启用追踪止损”设置追踪止损
partial“部分止盈”分批平仓
recommend“我的止损应该设在哪里”仅计算建议价位,不执行操作

参数提取:

参数默认值描述
symbol自动从当前仓位获取交易对
strategyatr止损策略(atr/volatility/structure/fixed_pct)
atr_multiplier1.5ATR 倍数
tp_modelevels止盈模式(ratio/levels/trailing/breakeven/hybrid)
risk_reward2.0风险回报比

步骤 2 — 获取仓位和市场数据
  1. 调用 bingx-swap-trade 查询当前仓位(方向、平均入场价、数量、杠杆)
  2. 调用 bingx-swap-market 获取 K 线(4 小时,200 根,用于计算 ATR 和支撑阻力位)

如果没有仓位:提示“未发现未平仓位。是否要预先计算 SL/TP 价位?”并切换到 recommend 模式。 如果有多个仓位:让用户选择一个,或逐个设置 SL/TP。


步骤 3 — 计算 SL/TP
python3 scripts/calculator.py \
  --direction {long/short} \
  --entry-price {price} \
  --strategy {strategy} \
  --atr-multiplier {multiplier} \
  --tp-mode {tp_mode} \
  --risk-reward {rr} \
  --klines '{klines_json}'

步骤 4 — 安全确认

向用户展示:

  • 当前仓位详情
  • 计算出的 SL/TP 价位及预估 PnL 金额
  • 将要下达的条件订单类型

仅在用户确认后执行。未经确认不得下达订单。


步骤 5 — 下达订单

通过 bingx-swap-trade:

  • 下达新订单前自动取消现有条件订单,避免重复
  • 止损:条件订单(市价触发)
  • 止盈:条件订单或追踪止损
  • 部分止盈:多个条件订单(不同价格和不同数量)

步骤 6 — 输出结果(遵循输出模板)

输出模板

Set 模式
**Smart SL/TP Plan**

Current Position: {symbol} {direction}
Entry Price: ${entry_price} | Qty: {qty} | Leverage: {leverage}x

**Stop-Loss** ({strategy} x {atr_multiplier})
- Level: ${sl_price} ({sl_pct}%)
- Estimated loss: -${risk_amount}

**Take-Profit** ({tp_mode})
TP1  ${tp1_price} ({tp1_pct}%)  {tp1_split}% of position  +${tp1_reward}
TP2  ${tp2_price} ({tp2_pct}%)  {tp2_split}% of position  +${tp2_reward}
TP3  {trailing/price}            {tp3_split}% of position  let profits run

Risk-Reward Ratio: 1:{risk_reward}
{if applicable} Stop-loss will be moved to break-even (${entry_price}) after TP1 fills.

**Confirm execution? (yes/no)**
Recommend 模式
**SL/TP Recommended Levels**

{symbol} {direction} (entry ${entry_price})

Strategy         Stop-Loss     Distance  Notes
ATR x 1.5       ${sl_atr15}   {pct}%    Standard, recommended
ATR x 1.0       ${sl_atr10}   {pct}%    Tight stop
Structure stop  ${sl_struct}  {pct}%    Beyond prior low/high

Take-Profit  Level    R:R
1R           ${tp1}   1:1
2R           ${tp2}   1:2
3R           ${tp3}   1:3

For reference only. Say "help me set SL/TP" to place the orders.

Agent 交互规则

参数安全。 从用户意图中提取结构化值——切勿将用户的原始文本直接复制到 API 参数中。使用前请验证交易标的和数值参数。

K 线查询为只读操作,无需 CONFIRM。所有订单下单(SL/TP 条件单)都需要用户明确确认。

  • prod-live:下单或取消任何 SL/TP 订单前,要求用户输入 CONFIRM。
  • prod-vst:无需 CONFIRM。告知用户当前处于模拟环境。

当模式为 recommend 时,只计算并显示价位,不要下任何订单。

错误处理

  • 无持仓:告知用户并切换到推荐模式
  • 下单失败:显示错误代码,并建议重试
  • 持仓已平仓:告知用户该持仓已不存在
  • K 线数据不足:建议切换到更长的时间间隔

评论

支持 Markdown