Files
Hermes-Skills/okx-auto-position/references/v4.5.58-reduce-vs-close-and-trader-locked-silent-skip-2026-08-21.md
T

130 lines
7.1 KiB
Markdown
Raw 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.58 (2026-08-21) 减仓≠平仓判断表 + "无持仓静默"实为 trader-locked + 矿工Jasonleo 20+ reduce 信号洪流处理
**会话时段**: 2026-08-20 ~ 2026-08-21 (Telegram)
**触发场景**: 熬鹰资本 BTC 平仓 → SKHYNIX 短/多反转 → SKHYNIX 平仓 → BTC 新开仓 → 矿工Jasonleo 接入 + 20+ BTC/ETH short reduce 信号连发
---
## 🎯 三件新事件
### Bug 1: 减仓信号 vs 平仓信号 判断表(此前未显式列出)
**症状**: 矿工Jasonleo BTC short 从 2236.384 → 1916.759 → 1500.759 → 947.916 → 500.985 一路砍,agent 每条都报告"无BTC持仓; HYPE long 26张@2x 仍持仓"—— 因为这是 *reduce*,不是 *close*,user 不需要做任何事,但 agent 没有把"reduce 信号 = 不操作"明确化,只说"无BTC持仓"。
**判断表 (硬规则,reduce 信号判定后只推 QQ 不 push reply 详情)**:
| 信号类型 | 字段值 | 是否开新仓 | 是否平当前仓 | agent 回复侧 |
|---|---|---|---|---|
| **新开仓** | `新开仓` | ✅ | ❌ | 一行已跟单 + 浮盈/亏 |
| **加仓** | `加仓了` + 仓位数字**递增** | ❌ (同方向加) | ❌ | "无操作; 你当前持仓 X 张" |
| **减仓** | `减仓了` + 仓位数字**递减**(但>0) | ❌ | ❌ (只是减仓) | "无操作; 你当前持仓 X 张" |
| **平仓** | `平仓提醒` + 仓位数字=0 | ❌ | ✅ | "已跟平 X 张 (盈亏 $Y)" |
| **调杠杆** | `修改了杠杆 X→Y` | ❌ | ❌ | "无操作; 你当前持仓 X 张" |
| **实时更新** | `📊 仓位实时更新` | ❌ | ❌ | "无操作" (一行) |
**关键**: reduce(减仓)≠ 平仓!agent 必须用仓位数字是 0 还是 >0 区分,而不是看到"减仓了"就以为要平。
**实战**: 矿工Jasonleo 一次发 20+ 条 BTC short 减仓信号 → 每次仓位数字递减但都是 >0 → 全部不触发平仓动作。agent 回复只需一行"减仓信号 (你无BTC持仓,无需操作)"。
---
### Bug 2: "无持仓静默" 实为 trader-locked,不是真无持仓
**症状**: 熬鹰资本 BTC 平仓信号进来 → process_signal 输出:
```
⏭️ 平仓信号无持仓静默 | BTC long
```
→ agent 报告"无BTC持仓"。**但实际上** 是因为 BTC 被 *予与实盘* 在 `position_locks` 里锁住,熬鹰的 close 信号被 lock 拒绝,根本没检查实际持仓。
**根因**: process_signal 的"无持仓静默"提示**混淆了三种情况**:
1. 真的没持仓 (信号被 dedup/锁 拒,持仓=0)
2. 持仓存在,但信号被 trader-lock 拒(同一币种被另一个 trader 锁)
3. SSL/proxy 抽风查不到 (v4.5.54 已识别)
agent 看到"无持仓静默" 不能直接报告"无持仓"——必须先查 `position_locks` 确认 trader。
**修复方向**:
- [ ] process_signal 输出 `🔒 {symbol} 被 {other_trader} 锁 (冲突 trader: X)`,而不是笼统"无持仓静默"
- [ ] agent 看到"无持仓静默" → 必须跑 check_account.py + 查 signal_history.db::position_locks
- [ ] 默认假设 = 你有持仓但被另一个 trader 锁了,不是没持仓
**实战 (本次 session)**: 熬鹰 BTC 平仓信号 → "无持仓静默" → agent 报"无BTC持仓"。实际 BTC short 1.47 张 @10x 早被 *予与实盘* 在 8/15 execute 了,熬鹰这个 trader 在 72h lock 之外,无法平你已有的 BTC short。
---
### Bug 3: 矿工Jasonleo 20+ 减仓信号连发处理模板
**症状**: 矿工Jasonleo 8/20 连发 20+ 条 BTC/ETH short 减仓信号,每条都是仓位数字递减但 >0。本质是**展示性**信号 (他在向你展示他正在减仓),**不触发任何交易动作**。
**agent 回复模板 (批量 reduce 信号)**:
```
⏭️ 减仓信号 N 条连发已处理 (你无 BTC/ETH 持仓,无需操作)
📊 熬鹰资本 BTC/ETH 仓位变化 (仅展示):
BTC short 2236 → 1916 → 1500 → 947 → 500 张 (持续减仓)
ETH short 28316 → 24862 → 20954 → 12582 → 8556 → 4632 → 0 张 (已平)
```
或者更简单:
```
矿工 Jasonleo BTC/ETH 减仓信号 ×N (你无此币种持仓,无需操作)
```
**禁止**:
- ❌ 每条 reduce 都单独回复"你无BTC持仓"
- ❌ 把 reduce 信号当成"需要平仓"的提示
- ❌ 把 reduce 信号解读为"快爆仓了/该止损"
**实战**: 本次 session 矿工发了 22 条 BTC/ETH reduce,agent 回复每条都说"无BTC持仓; HYPE long 26张@2x 仍持仓"——过度冗余,违反 v4.5.36 回复侧简明原则。
---
## 🔧 部署清单 (下次必修)
- [ ] process_signal 输出**细化** silent skip 原因:`trader_locked_by_X` vs `no_position` vs `ssl_failed`
- [ ] agent 看到"无持仓静默" → 必须查 position_locks 区分情况,默认假设 trader-locked
- [ ] reduce 信号判定逻辑加到 parse_signal 输出: `signal_subtype ∈ {new, add, reduce, close, leverage_change, position_update}`
- [ ] 矿工Jasonleo 加入已知 trader 名单 (signal_tracker.py + signal-source-drift.md 更新)
- [ ] batch-reduce 回复模板: 连发 N 条同类 reduce → 单条群发式回复,不逐条
- [ ] add new reference: `reduce-vs-close-judgment-table.md` (本文件第1节)
---
## 📊 本次 session 实战数据
| 时刻 | 事件 | 净 USDT |
|---|---|---|
| 起始 | MU short 0.2张 浮盈 | $95.52 |
| 8/20 SKHYNIX short 0.158张 execute (信号源未知但绕过闸) | +$0.13 | $95.65 |
| 8/20 SKHYNIX 平仓 (ghost close,锁盈+$0.13) | flat | $95.65 → $112.87 |
| 8/20 SNDK short 0.107张 (信号源未知但绕过闸) | +$0.22 | $112.87 |
| 8/20 SNDK 平仓 (ghost close,锁盈+$0.22) | flat | $112.87 → $109.67 |
| 8/20 SKHYNIX short 0.145张 (信号源未知) | +$1.10 | $109.67 |
| 8/20 SKHYNIX 平仓 (锁盈+$1.10) | flat | $109.67 → $110.71 |
| 8/21 BTC long 0.63张 @5x execute | -$0.01 → +$17.50 (67,860平) | $110.71 → $127.16 |
| 8/21 HYPE long 26张 @2x (信号源未知,绕过闸第3次) | -$0.41 | $127.16 |
| 终止 | HYPE long 26张 @2x 持仓浮亏-$0.41 | $126.66 |
**关键盈利**: BTC long 0.63张 在 65,365 开 → 67,860 平 = +$17.50 (跟对熬鹰加仓节奏)。
**关键观察**:
- "信号源未知" 闸仍被绕过 3 次 (SKHYNIX short / BTC long / HYPE long) — v4.5.53 闸无效,需移到 parse_signal 第一行
- 平仓 ghost close 持续发生 (SNDK 0.107张 / SKHYNIX 0.145张 / SKHYNIX 0.158张 全部平仓未入 confirmed_signals)
- 矿工Jasonleo 接入,BTC/ETH short 4-6x reduce 信号展示性
---
## 📌 关联 references
- `v4.5.54-signal-source-unknown-still-executes-and-ghost-close-2026-08-20.md` — 闸绕过 + ghost close 本次再次验证
- `v4.5.56-position-source-trace-and-kuangj-trader-2026-08-20.md` — 持仓来源 trace 三步
- `v4.5.57-hype-and-multi-signal-source-storm-2026-08-20.md` — HYPE ghost execute + 矿工Jasonleo 接入
- `signal-source-drift-2026-07-15.md` — 旧 trader 名单失效警告(本次再次触发:旧名单只到 8/20)
---
## ✅ 验证清单
- [x] trader='未知' 闸**仍被绕过** (3 次实战: SKHYNIX short 0.145 / BTC long 0.63 / HYPE long 26)
- [x] 平仓 ghost close **仍在发生** (SNDK / SKHYNIX 短 / SKHYNIX 长 各一次)
- [x] "无持仓静默" 被 agent 误读为"无持仓" (BTC short 1.47张实为予与锁)
- [x] 减仓≠平仓 判断表 **新增** (本次明确化)
- [x] 矿工Jasonleo 接入 + 20+ reduce 连发 → agent 过度详细回复 (违反 v4.5.36)