From coinos-skills
Places spot and perpetual futures orders on CEX exchanges (Binance, OKX, Bybit, Bitget) via a two-step preview-confirm script. Handles order creation, position closing, and leverage/margin configuration with strict safety rules.
How this skill is triggered — by the user, by Claude, or both
Slash command
/coinos-skills:aicoin-tradingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **运行脚本**: 从 SKILL.md 所在目录运行 `node scripts/exchange.mjs <action>`. 三引擎(OpenClaw / Hermes / Claude Code)容器自动加载 skill, 直接 `cd` 到 skill 目录即可.
运行脚本: 从 SKILL.md 所在目录运行
node scripts/exchange.mjs <action>. 三引擎(OpenClaw / Hermes / Claude Code)容器自动加载 skill, 直接cd到 skill 目录即可.
import ccxt、new ccxt.okx()、fetch("https://...") 或任何自定义代码来下单。所有订单只能通过 node scripts/exchange.mjs create_order 执行。create_order / close_position 第一次调用返回预览(含风险提示),你必须把预览完整展示给用户,等用户回复"确认"或"yes"后,才能第二次调用加 "confirmed":"true" 执行。close_position。 禁止用 create_order 构建平仓单(容易开反向单)。set_trading_params 和 set_leverage 不是只读操作 — 它们改交易所账户的合约配置,直接影响后续所有订单的保证金占用、爆仓价、强平距离。100x 杠杆和 5x 杠杆的爆仓距离差 20 倍,用户没明确说改之前不准 silent set。调用前必须:用自然语言告诉用户你准备把哪个交易所、哪个交易对的杠杆 / margin_mode 从什么改成什么、影响是什么,等用户回复"确认"或"yes"才能执行。反例 ❌:用户说"开 100x 多 BTC",你不反问杠杆是不是写错了直接
set_trading_params leverage=100然后下单 — 用户可能是口误想说 10x,100x 直接 silent 设了风险极高。 正确 ✅:先回"100x 杠杆爆仓距离只有约 0.95%(不算手续费),BTC 一根 5 分钟 K 线就能扫掉。确认是 100x 还是想说 10x?",等用户明确回答再 set。
步骤1: node scripts/exchange.mjs create_order '{"exchange":"okx","symbol":"BTC/USDT:USDT","type":"market","side":"buy","amount":1,"market_type":"swap"}'
→ 返回预览(交易对、方向、数量、价格、杠杆、保证金、风险提示)
→ 你必须把所有字段展示给用户
步骤2: 用户确认后
node scripts/exchange.mjs create_order '{"exchange":"okx","symbol":"BTC/USDT:USDT","type":"market","side":"buy","amount":1,"market_type":"swap","confirmed":"true"}'
→ 实际下单
平仓必须用 close_position,禁止用 create_order 手动构建平仓单(容易开反向单)。
步骤1: node scripts/exchange.mjs close_position '{"exchange":"okx","market_type":"swap"}'
→ 返回所有持仓预览(交易对、方向、张数、盈亏)
→ 展示给用户
步骤2: 用户确认后
node scripts/exchange.mjs close_position '{"exchange":"okx","market_type":"swap","confirmed":"true"}'
→ 市价平掉所有持仓(自动 reduceOnly)
步骤3: 执行后必须验证 + 总结(不可省略)
node scripts/exchange.mjs positions '{"exchange":"okx","market_type":"swap"}'
→ 确认仓位已清空,然后用一句话告诉用户结果(平了什么、盈亏多少)
指定交易对只平部分:加 "symbol":"BTC/USDT:USDT"
为什么有步骤3: close_position 的返回有时被 streaming 截断,用户看不到结果。多查一次 positions 既能确认平仓成功,又能把结论写进最终消息让用户看到。
给已有仓位挂止损 / 止盈,必须用 set_stop,禁止手搓 create_order 的 STOP_MARKET+原始 params。set_stop 会从交易所真实持仓自动推导方向、reduceOnly / posSide / positionSide(币安双向持仓、OKX、Bybit 各自适配),并校验触发价在现价正确一侧——手搓极易开成反向单或方向搞反。
步骤1: node scripts/exchange.mjs set_stop '{"exchange":"binance","symbol":"HYPE/USDT:USDT","market_type":"swap","stop_loss":63.5,"take_profit":66.5}'
→ 返回预览(持仓方向、触发价、触发后动作、平仓模式、方向校验结果)
→ 你必须把预览展示给用户
步骤2: 用户确认后
node scripts/exchange.mjs set_stop '{"exchange":"binance","symbol":"HYPE/USDT:USDT","market_type":"swap","stop_loss":63.5,"take_profit":66.5,"confirmed":"true"}'
→ 实际挂条件单
步骤3: 执行后复核(不可省略)
node scripts/exchange.mjs stop_orders '{"exchange":"binance","symbol":"HYPE/USDT:USDT","market_type":"swap"}'
→ 确认条件单已挂上,再把结论告诉用户
stop_loss(止损触发价)/ take_profit(止盈触发价)至少给一个,可同时给;只给单一 trigger_price 会按方向自动归类为止损或止盈。amount 可选,默认全仓,超过持仓自动 clamp。side(long/short):当同一交易对同时持有多空两个仓(双向持仓)时必须指定,否则 set_stop 会报错让你选边,绝不替你猜。set_stop 拦下报错(防瞬间触发)。拿不到当前价时默认中止(无法校验方向),确需跳过校验可传 "force":true 自负风险。positionSide、OKX posSide、Bybit positionIdx),止损/止盈/平仓从真实持仓推导方向 —— 币安/OKX/Bybit/Bitget/HTX 双向账户都无需手动指定。其中 Bitget/HTX 平仓由 ccxt 翻成 tradeSide:Close/offset:close(纯 reduceOnly 在它们的双向模式会被当反向开仓,已专门处理);Bitget 持仓模式万一识别不出会中止并报错而非冒险反向开仓。set_stop 挂的止损/止盈是交易所条件/算法单(stop_orders 可查),平仓后用 cancel_order 可一并清掉残留条件单。set_stop 会再读一次持仓把数量校准到当前仓位;若确认期间仓位已被平掉/反手,会直接报告“持仓已不存在”而不挂废单。open_orders 列表,只能用 stop_orders 或交易所 APP 的「条件委托」栏查到。别用 open_orders 误判“没挂上”。set_stop 某条返回失败,如实告诉用户失败原因,并建议去交易所 APP 手动挂——不要谎报已挂上。placeOrder 会直接拒绝而非误下单。每次升级 ccxt 后跑 npm run verify-orders(请求体黄金矩阵)确认没漂移。Hyperliquid 走 trigger、属边角(USDC,多路由到 aicoin-onchain),以实盘为准。| 步骤 | 命令 | 是否需要确认 |
|---|---|---|
| 设置杠杆+保证金模式 | node scripts/exchange.mjs set_trading_params '{"exchange":"okx","symbol":"BTC/USDT:USDT","leverage":10,"margin_mode":"isolated","market_type":"swap"}' | 需要(见铁律 #6) |
| 单独设杠杆 | node scripts/exchange.mjs set_leverage '{"exchange":"okx","symbol":"BTC/USDT:USDT","leverage":10,"market_type":"swap"}' | 需要(见铁律 #6) |
| 查合约信息 | node scripts/exchange.mjs markets '{"exchange":"okx","market_type":"swap","base":"BTC"}' | 不需要(只读) |
杠杆 / 保证金确认模板(直接照抄换数字):
"我准备把 OKX BTC/USDT 永续杠杆改为 {N}x,margin_mode = {isolated/cross}。这会影响后续这个交易对所有订单的保证金占用和爆仓距离({N}x 杠杆爆仓约 {1/N*100}% 不计手续费)。确认改吗?"
确认后再实际调 set_trading_params / set_leverage。如果用户说"算了"、"先别"、"我再想想",不要调脚本。
| 操作 | 命令 |
|---|---|
| 平仓(全部或指定) | node scripts/exchange.mjs close_position '{"exchange":"okx","market_type":"swap"}' — 加 "symbol":"BTC/USDT:USDT" 只平单个 |
| 止盈止损(给已有仓位挂保护单) | node scripts/exchange.mjs set_stop '{"exchange":"binance","symbol":"HYPE/USDT:USDT","market_type":"swap","stop_loss":63.5,"take_profit":66.5}' — 两步确认,见上方「止盈止损流程」 |
| 查条件单/算法委托 | node scripts/exchange.mjs stop_orders '{"exchange":"binance","symbol":"HYPE/USDT:USDT","market_type":"swap"}' — 普通 open_orders 查不到的条件单用这个 |
| 取消订单 | node scripts/exchange.mjs cancel_order '{"exchange":"okx","symbol":"BTC/USDT","order_id":"xxx"}' — 也能取消条件单 |
| 存交易所 key(本地,用户在 chat 给了 key 时) | node scripts/exchange.mjs save_key '{"exchange":"binance","api_key":"...","api_secret":"..."}' — 写进 ~/.coinos/.env、chmod 600、不回显 secret(OKX/Bitget 还要 "password":"...")。容器内引导用户去 web UI EnvSection,别在 chat 收 key |
合约自动换算: amount 一律是用户说的币数量(如 0.01 BTC、1000 DOGE),脚本统一按 amount / contractSize 自动换算成张数 —— 整数也按币数量算(旧版"整数=张数"的约定在 OKX/Gate 等 contractSize≠1 的所会把张数算错几个数量级,已废除)。确实要直接传张数时加 "amount_unit":"contracts"。
用 USDT 金额下单: 当用户说"用10U做多"或"花10 USDT开仓",传 cost=10(合约=USDT保证金金额,按价格+杠杆算张数;现货市价买入=花多少 USDT,按现价反算币数量),不要传 amount。
现货: amount = 币数量;或用 cost 按 USDT 金额买入。
格式: 现货 BTC/USDT,合约 BTC/USDT:USDT,Hyperliquid 用 USDC: BTC/USDC:USDC。
交易所: Binance, OKX, Bybit, Bitget, Gate.io, HTX, Pionex, Hyperliquid。
npx claudepluginhub aicoincom/coinos-skillsHandles BingX perpetual swap trading: place/cancel orders, manage positions, adjust leverage/margin types via authenticated REST endpoints. Activates for BingX futures trading queries.
Places, cancels, lists, and resumes limit orders on OKX Agentic Wallet. Supports buy dip, take profit, stop loss, and chase high strategies with automatic execution via TEE.
Executes spot and perpetual futures trades on Hyperliquid with market (IOC) and limit (GTC) orders, sets leverage, manages positions/balances/orders, deposits USDC from Arbitrum.