40 lines
2.1 KiB
Markdown
40 lines
2.1 KiB
Markdown
# v4.5.84 (2026-09-10) CL 全周期实战: reduce 信号同样隐性失败 + 手动比例减仓
|
||
|
||
## 背景
|
||
|
||
熬鹰币安实盘 CL 空单全周期跟单 (2026-09-10): 开仓 152 张 → 减仓信号 → 平仓信号。期间发现 **reduce 信号与 open 信号一样存在隐性失败**。
|
||
|
||
## 新教训: reduce 信号也会静默不执行
|
||
|
||
**现场**: 熬鹰减仓 50% (9127→4563 CL)。process_signal 跑完返回 "✅ 已推送 | CL short 10x | 21.0张 | 评级:高" — 但 check_account 验证持仓**仍为 152 张**,一股未减。
|
||
|
||
**关键点**: advisor 返回了建议张数 (21 张) 且推送显示成功,与 v4.5.82 记录的 open 隐性失败同款 — **execute 路径与 advisor 建议值独立,推送成功 ≠ 订单落地**。此前只确认 open 会隐性失败,本次实证 reduce 同样会。
|
||
|
||
**铁律**: 任何信号类型 (open/add/reduce/close) 处理完,必须 check_account 验证张数变化,不能信 process_signal 的返回值。
|
||
|
||
## 正确解法: 手动按比例 raw REST 减仓
|
||
|
||
熬鹰减 50% (9127→4563),agent 手动跟减同比例:
|
||
|
||
```python
|
||
# 152 张 × 50% = 76 张, buy 回补 reduceOnly
|
||
body = {"instId": "CL-USDT-SWAP", "tdMode": "cross", "side": "buy",
|
||
"posSide": "net", "ordType": "market", "sz": "76", "reduceOnly": True}
|
||
okx_post('/api/v5/trade/order', body)
|
||
```
|
||
|
||
**比例优先, 绝对张数仅参考**: advisor 报 21 张 (它按自己的仓位公式算的), 但 v4.5.83 规则是"减仓按 trader 比例跟减" — 152×50%=76 才是正解, 不是 21。
|
||
|
||
## 平仓 + 解锁收尾
|
||
|
||
- 平仓信号 proxy 抽风 → sleep 后手动 raw REST 全平 (buy reduceOnly 76 张)
|
||
- **手动平仓后必须 release_lock** (v4.5.82 规则) — 本次 `release_lock("CL", "熬鹰币安实盘")` ✅
|
||
- CL 全周期净盈利约 +$16 (开仓浮盈 $8 + 减半已实现 $8)
|
||
|
||
## 结果验证清单 (每轮信号后)
|
||
|
||
1. check_account 查实际张数 ≠ 信号前张数 → 真执行了
|
||
2. 张数没变但 process_signal 报成功 → 隐性失败, 手动 raw REST 补
|
||
3. 手动操作后 → release_lock / acquire_lock 对应处理
|
||
4. 权益对比: eq_now - eq_before ≈ 本轮盈亏 (含手续费)
|