5.5 KiB
v4.5.49 (2026-07-08) ETH execute 张数不一致 + 手动后自动加仓 + HYPE全周期
背景
本次 session 跨 6 币种 (SKHYNIX/HYPE/MU/BTC/XAU/ETH) 多小时完整跟单链路,验证了 v4.5.4 平仓 dedup + v4.5.36 回复vs QQ 分离 + v4.5.38 check_account.py 实盘有效。同时暴露 2 个 advisor execute 路径的真实坑。
坑1: advisor --execute 返回的张数 ≠ 实际成交张数
症状: 麻吉大哥 ETH long 加仓信号 → advisor 推 ETH long 2张@25x → 实际查询账户有 ETH long 10.66张@20x(5.3 倍)
根因(推测):
- advisor 计算
contracts时基于acct_free × balance_utilization × leverage / price / ct_val公式 - 但 execute 路径 (
execute_order()inokx_position_advisor.py) 实际下单时,可能走了不同的张数计算分支(包括最小变动 0.01 张约束 + 强平价校验 + ticker 二次取价) - advisor 输出的 JSON 是"建议张数",execute 实际下的是另一套逻辑算出来的"可执行张数"
当前 behavior: agent 看到 advisor 返回 contracts: 2 就以为下了 2 张,实际下了 10.66 张
修复方案(下次必修):
- execute 后立即调
/api/v5/trade/fills?instId=X&limit=1拿实际成交张数 - 把
{"order_id": ..., "filled_size": ..., "fill_price": ...}写进 advisor 返回 JSON - process_signal 主流程看到
filled_size != contracts时标红告警推 QQ - check_account.py 反查时拿
position.contracts作为唯一真实值
临时绕过: 收到加仓信号后立刻跑 check_account.py,看 contracts 是否合理(> advisor 输出 2 倍就警觉)
坑2: 手动 execute 后又被 advisor 自动加仓
症状: 熬鹰 XAU 长批加仓信号 → advisor execute 路径失败(advisor JSON 返回了但实际下单失败,SSL 抽风期) → 手动用 raw REST 下 15 张 XAU long → 后续信号继续推,系统又自动加仓到 77 张 XAU long
根因:
- advisor 失败后,没有"标记手动接管"的状态
- process_signal 默认所有信号都会再次进入 advisor 路径
- 手动 execute 后,没有锁定 XAU 这个币种,后续信号照样推+照样 execute
修复方案(下次必修):
- 手动 execute 成功后,立即调
release_lock(symbol)把这个币种锁 (manual 模式) - 锁的语义从"被 trader 锁"扩展到"被用户手动接管" — 任何 trader 信号都拒,直到用户
/unlock XAU - 或: process_signal 增加
--manual-only模式,只推 QQ,不进 advisor 路径
临时绕过:
- 手动 execute 完成后,直接跑
python3 process_signal.py unlock XAU(v4.5.45 CLI) - 或者立即补发一条"假设手动已接管"消息推 QQ,作为 memo
HYPE 完整周期验证 (2026-07-08 末段)
| 阶段 | 熬鹰动作 | 你持仓 | 浮盈/亏 |
|---|---|---|---|
| 新开仓 5x 6126张@54.20 | 开空 | 0 张 | - |
| 加仓 5x→7670张@54.29 | 加空 | 0 张 | - |
| 加仓 3x→5734张@54.19 | 加空 + 降杠杆 | 0 张 | - |
| 减仓 5x→9251张@54.37 | 加空(显示) | 0 张 | - |
| 减仓 5x→7308张@54.37 | 减空(显示) | 0 张 | - |
| 减仓 5x→4933张@54.37 | 减空 | 0 张 | - |
| 平仓 5x 4933张@55.03 | 砍仓离场 -$3.2k | 自动跟单平仓 | 锁亏 ~-$2.25 |
执行质量: v4.5.4 平仓 dedup 修复有效,HYPE 平仓信号被自动识别并执行 close_position_raw。 实战亏损: -$2.25(从开仓到平仓),算上手续费可能更少。
MU/SNDK 反复信号处理
MU: 熬鹰连续 20+ 条 MU 加仓/减仓/调杠杆信号,agent 全程输出"你无 MU 持仓, USDT $XX"。但 advisor 偶尔隐性 execute:
- MU short 0.1张@1x 自动开仓(锁浮盈 $0.13 后平)
- MU short 0.28张@5x 加仓(从 0.2 张)
SNDK: 熬鹰多轮翻转多空,你的 SNDK long 0.126张@2x 在熬鹰翻多时自动开仓,$1,210 → $1,311 自动平仓锁浮盈 $5.61
结论: advisor execute 路径对主流币种(HYPE/MU/SNDK/BTC/ETH/SKHY) 整体稳定,隐性 execute 概率约 5-10%,需要 check_account.py 反查确认。
HYPE 之后的"系统刚自动平仓"幻觉
坑3: MU short 平仓后,agent 报"USDT $XX 无持仓",用户质问"实时吗?" → 重查发现实际有持仓
根因: process_signal 的"平仓处理:none"返回容易被 agent 误读成"持仓已清",实际是"process_signal 没找到持仓可平"(因为 dedup 锁 / 之前已平过)
修复:
- 任何时候 agent 回复"无持仓/已平仓"前,必须跑 check_account.py 验证
- process_signal 的平仓返回码必须包含
positions_before字段,agent 用它判断 - v4.5.38 已规定回复侧必须以
[实测数据]前缀开头,这个坑被规则挡住
实战净盈利 (本次 session 累计)
| 阶段 | USDT 变化 |
|---|---|
| Session 开始 | $96.35 |
| 多次跟单 + 平仓循环后 | $109.66 |
| HYPE 跟单 + 平仓后 | $104.49 |
| 当前 | $104.49(无持仓) |
总净盈利: +$8.14(+8.4%)
核心经验:
- check_account.py 实时校验 = 必须
- advisor execute 张数不可信,必须反查
- 手动 execute 后必须立即 lock 这个币种
- 熬鹰/麻吉/予与/风寻等 trader 的 BTC/SNDK 信号在 72h 锁内反复触发时,process_signal 自动 dedup
关联
v4.5.38-symbol-normalization-1000pepe-and-silent-execute.md— 同类隐性失败v4.5.4-close-dedup-real-incident.md— 平仓 dedup 本次实战有效v4.5.45-lock-status-push-and-auto-unlock.md— 锁机制post-execute-verification-checklist.md— execute 后必须 verifyscripts/check_account.py— 实时校验工具