From coinos-skills
Places trading orders on CEX (Binance/OKX/Bybit/Bitget) for spot and perpetual contracts via Node.js script with strict preview/confirm workflow to prevent errors.
npx claudepluginhub aicoincom/coinos-skillsThis skill uses the workspace's default tool permissions.
> **运行脚本**: 从 SKILL.md 所在目录运行 `node scripts/exchange.mjs <action>`. 三引擎(OpenClaw / Hermes / Claude Code)容器自动加载 skill, 直接 `cd` 到 skill 目录即可.
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.
Manages spot, perpetual swap, futures, options, and event contract orders on OKX CEX via CLI. Place, cancel, amend orders; query option chains, Greeks, IV; set TP/SL/trailing stops, leverage.
Automates spot, futures, and options trading on Bybit with advanced order types, risk management, and portfolio analytics. Invoke via /bybit for trades like market buys or stop-losses.
Share bugs, ideas, or general feedback.
运行脚本: 从 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 既能确认平仓成功,又能把结论写进最终消息让用户看到。
| 步骤 | 命令 | 是否需要确认 |
|---|---|---|
| 设置杠杆+保证金模式 | 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 cancel_order '{"exchange":"okx","symbol":"BTC/USDT","order_id":"xxx"}' |
合约自动换算: amount 传用户说的币数量(如 0.01),脚本自动转张数。传整数则视为张数。
用 USDT 金额下单: 当用户说"用10U做多"或"花10 USDT开仓",传 cost=10(USDT保证金金额),不要传 amount。脚本会根据当前价格、杠杆自动计算合约张数。
现货: amount = 币数量。
格式: 现货 BTC/USDT,合约 BTC/USDT:USDT,Hyperliquid 用 USDC: BTC/USDC:USDC。
交易所: Binance, OKX, Bybit, Bitget, Gate.io, HTX, Pionex, Hyperliquid。