Files
Hermes-Skills/okx-auto-position/references/v4.5.82-2026-09-09-advisor-size-drift-manual-close-unlock-and-stale-recall.md

78 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# v4.5.82 — advisor 建议量系统性偏差 + 手动平仓后必须解锁 + 方向反转锁两步法 + Qdrant 召回过期数据
**日期**: 2026-09-09/10
**会话**: TRUMP/ZEC/ETH/SKHYNIX/HYPE/DOGE/DASH/ASTER 全周期跟单, proxy 反复抽风, 熬鹰 ZEC 多翻空。
## 1. advisor 建议张数 vs 实际成交量系统性偏差 (execute_order 独立计算仓位)
**实测样本** (本次 session, 同一条信号内):
| 币种 | advisor 建议 | 实际成交 | 偏差倍数 |
|---|---|---|---|
| TRUMP | 137 张 | 586 张 | 4.3x |
| HYPE | 1 张 | 25 张 | 25x |
| SKHYNIX | 0.039 张 | 0.407 张 | 10x |
| ETH | 2 张 | 10.66 张 | 5x |
| SKHYNIX | 0.065 张 | 0.098 张 | 1.5x |
**结论**: `execute_order` 的仓位计算与 `rec['contracts']` 完全独立, 偏差 1.5x~25x, 常态化发生。 advisor 的张数输出**仅供参考**, 不是成交承诺。
**规则**:
- ✅ 每次 execute 后 check_account 对比 rec.contracts vs 实际 contracts, 偏差 >2x 时在回复里明确报出
- ✅ 回复模板用实际成交量, 不用 advisor 建议量
- ❌ 禁止把 "advisor 说 N 张" 当作 "已下 N 张" 汇报 (v4.5.49 ETH 误报的根因)
## 2. agent 手动平仓 (raw REST) 后必须 release_lock
**场景**: proxy 抽风 → process_signal close 路径返回 None → agent 手动 execute 平仓成功。 但 close_position_raw 里的自动 release_lock 不会跑, 锁残留 72h。
**后果**: 下一条同币种信号被 `🔒 X 被 熬鹰资本 锁 (N h)` 挡住, 跟丢节奏。
**正解** (每次手动 close 后立即执行):
```python
from signal_tracker import release_lock
release_lock("SKHYNIX", "熬鹰资本", auto=True)
```
本次 session 手动平过: SPCX / SKHYNIX / DOGE / DASH / TRUMP / ZEC / ASTER / ETH — 全部手动 release_lock。
## 3. 方向反转时锁更新 = release_lock + acquire_lock 两步 (直接 acquire 会失败)
**场景**: 熬鹰 ZEC/ETH 从 long 翻 short。 旧锁还是 `long`, 直接 `acquire_lock("ETH","熬鹰资本","short")` 报:
`ETH 已被 熬鹰资本 锁 (long), 与 熬鹰资本 (short) 反向, 跳过`
注意: `check_signal_lock()` (信号自动路径) 内部处理了同 trader 方向切换; 但 **agent 手动 acquire_lock 不走那个逻辑**, 会直接失败。
**正解**:
```python
release_lock("ETH", "熬鹰资本", auto=True) # 先释放旧方向锁
acquire_lock("ETH", "熬鹰资本", "short", reason="手动反转锁", auto=False) # 再锁新方向
```
## 4. Qdrant 召回内容可能是过期快照, 用前必须实时验证
**实际场景**: Qdrant 召回返回 "8/25 持仓: BTC short/ETH long/MU short/HYPE long/SKHYNIX short 5 个持仓", 但实际当天持仓只有 ETH short + ZEC short 两个, 且方向相反。
**规则**:
- ✅ Qdrant 召回只当历史线索, 任何"当前状态"类结论必须 check_account 实时验证后再说
- ❌ 禁止把召回快照当现况回复 (违反 v4.5.71 先查再说)
## 5. "只留 X 成余额" 语义 (user 仓位控制口径)
- "只留 3 成" = 可动用 7 成 equity 做保证金; "按 8 成开" = 保证金占用目标 80%
- 实操: 目标保证金 = equity × (10-X)/10, 张数 = 目标保证金 ÷ 每张保证金, 向下取最小变动单位
- 与 memory 的 7%原则 (≈70% 占用) 同源; user 口径 "成" = 十分之一
## 配合铁律
- v4.5.80 proxy 抽风 5 级回退 + 手动 execute 后 record position_history
- v4.5.81 trader 严格等值 + 杠杆目标值 parse
- v4.5.77 close 闸白名单 (熬鹰FOMO/币安/交易信号 的 close 不能平你的仓)
## 反模式 (本次新增)
- ❌ 把 advisor 建议张数当成交张数汇报 (实际偏差可达 25x)
- ❌ 手动平仓后不 release_lock (锁残留挡住下一条信号)
- ❌ 方向反转时直接 acquire_lock (同 trader 反向会失败, 要 release+acquire 两步)
- ❌ 把 Qdrant 召回的过期持仓快照当现况回复