# 强制 skill 入口: okx_trade.sh (2026-07-21 实战) ## 问题 按信号跟单,反复踩的坑(用户原话 2026-07-21): > "按信号跟单为什么能跑出这么多问题?" **根因**: agent 跳过 skill 路径,**直接调 ccxt 下单**。每次自己重写代码 → 拼凑错单(leverage 5→10, min_sz 凑整错, 0.014→0.01)。 **正确做法**: **所有 OKX 下单/平仓强制走 skill 内置路径**,不绕过 advisor.execute 流程。 ## 强制入口脚本 **位置**: `~/.hermes/scripts/okx_trade.sh` ```bash # 用法 okx_trade.sh open # 开仓(自动算 size) okx_trade.sh close # 平仓 okx_trade.sh close-all # 全部平仓 okx_trade.sh status # 看持仓 ``` **open 内部流程**: 1. 跑 `okx_position_advisor.py --symbol X --side Y --leverage Z --json` 算 size + SL + TP 2. 跑 `okx_position_advisor.py ... --execute --rec-json ...` 下单(自动设 leverage, 75% cap) 3. **立刻** `fetch_positions()` 验证(lever / margin / side) **为什么这个设计能避免错单**: - ✅ advisor 算的 size 是 min_sz 凑整过的(BTC 1.43 张,不是 0.014) - ✅ advisor 内部用 setLeverage 私有 API 强制设杠杆(虽然 v4.5.44 仍 10x bug,但走 advisor 路径) - ✅ execute 后立即 verify → 不依赖 advisor 的 "成功" 返回 ## 实战教训 (2026-07-21) ### 错单 1: ETH 1.24 张 long - agent 看到 advisor 报 5x + 1.0 张 → **手动调 ccxt 下 1.24 张 ETH** - 实际: leverage 10x (process_signal.py bug), ETH 不是 BTC,1.24 张不是 1.0 张 - **应该用** `okx_trade.sh open BTC long 5`(advisor 路径) ### 错单 2: BTC 0.014 张 long - agent 看到 BTC 多 5x signal, **手动 ccxt 下 0.014 张**(乱算的) - 实际: 0.014 张小于 min_sz (0.01), 只成交 0.01 张 - **应该用** `okx_trade.sh open BTC long 5` → advisor 算 1.43 张 ## 部署状态 - ✅ `okx_trade.sh` 已写 - ❌ **没自动化** — agent 默认走 ccxt,需要主动调用 - ❌ mihomo 反复 timeout 时 okx_trade.sh 也失败 ## 建议: 强制 alias 把 `okx_trade.sh` 设成 OKX 下单唯一入口(把 ccxt 调 OKX 私有 API 限制到只能 advisor 用): ```bash # ~/.bashrc 加 alias alias okx_open='bash ~/.hermes/scripts/okx_trade.sh open' alias okx_close='bash ~/.hermes/scripts/okx_trade.sh close' ``` 但**真正治本**是 process_signal.py 内部 hardcode 强制走 advisor 路径,不加 fallback。