关于 bingx-dynamic-sl-tp
bingx-dynamic-sl-tp 是用于计算和管理 BingX swap 持仓止损与止盈的技能,支持建议、调整、移动止损和分批止盈;实盘订单需确认后执行。
主要功能
- 01ATR、波动率、结构和固定百分比策略
- 02获取持仓与 K 线数据
- 03计算止损和止盈价位
- 04调整、移动或拆分止盈订单
- 05实盘订单变更前要求确认
适用场景
- 01为未平仓持仓设置保护订单
- 02只估算止损和止盈价位而不交易
- 03将止损移至盈亏平衡点
- 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.mdscripts/calculator.pyrequirements.txt详细介绍
BingX 动态 SL/TP
**基础 URL:**参见 references/base-urls.md | **身份验证:**参见 references/authentication.md
快速参考
| 端点 | 方法 | 描述 | 身份验证 |
|---|---|---|---|
/openApi/swap/v3/quote/klines | GET | 用于 ATR 计算的 K 线数据 | 是 |
/openApi/swap/v2/trade/order | POST | 下达条件 SL/TP 订单 | 是 |
/openApi/swap/v2/trade/order | DELETE | 取消现有 SL/TP 订单 | 是 |
快速开始
**基础 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;
}
}
}
常见调用
获取用于 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 | 自动从当前仓位获取 | 交易对 |
| strategy | atr | 止损策略(atr/volatility/structure/fixed_pct) |
| atr_multiplier | 1.5 | ATR 倍数 |
| tp_mode | levels | 止盈模式(ratio/levels/trailing/breakeven/hybrid) |
| risk_reward | 2.0 | 风险回报比 |
步骤 2 — 获取仓位和市场数据
- 调用 bingx-swap-trade 查询当前仓位(方向、平均入场价、数量、杠杆)
- 调用 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