Files
Hermes-Skills/okx-auto-position/references/v4.5.118-2026-09-25-ondo-leverage-rollback-200cap-margin-semantic-channel-revert.md

30 lines
2.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.118 (2026-09-25): ONDO杠杆降级实战 + $200口径最终确认 + 频道回切
## 事件链
1. ONDO加仓信号: 54张(用户手动) → 熬鹰加仓信号 → advisor按10x开了329张 → 383张@10x
2. 用户质问"你是不是改成10倍了" → 根因: 信号格式`【币种】:ONDOUSDT 永续 | 全仓 | 2x`杠杆在币种行内, 旧正则只匹配独立【杠杆】标签 → parse失败 → advisor默认10x → **风险敞口5x于熬鹰**
3. 已修正则(v4.5.116): `r'(?:【杠杆】\s*[::]?\s*(\d+)|(?:永续|全仓)\s*\|\s*全仓\s*\|\s*(\d+)\s*[xX]?)'` + 提取`v = m.group(1) or m.group(2)`
4. 用户说"降" → 实战降杠杆全流程:
- 直接 set-leverage 10→2x → **59108** (cross模式保证金不足)
- 减仓192张(383→191) → 再 set-leverage 2x → **成功**
- 结论: **59108的解法固定 = 减仓 → set-leverage → check_account 验证 lever 字段**
5. 用户问"保证金为什么快$500" → 发现 **ONDO ctVal=10/张**, 191张名义$993而非$99, frozen $496 = 真实2x保证金 ($993/2), 不是显示延迟
6. ctVal事故修复: 减仓165张 → 26张@2x
7. **$200口径最终确认** (用户原话: "你只管保证金在限制内就行了"):
- **$200 = 保证金(margin)上限, 不是名义/张数口径**
- 2x杠杆下 名义上限 = $400, 26张@2x 保证金$67 ✓ 合规
- memory 已更新, advisor config `single_coin_ceiling_usdt=200` 本就是保证金口径无需改
8. 频道切换: shipan_jiankong(-1002651333064) 修了 chat_id bug 但实际信号流仍未通 → 用户要求**回切 jiankongshipan**
- 最终状态: `forward_rules.source_chat_id = 1` (chats.id=1, telegram_chat_id='3805472665' 正数格式)
- 转发时间模板: `time_template` 改为 `⏱转发时间: {time}` (原 `⏱信号时间` 语义混淆, 该时间戳实际是 forwarder 收到消息的时刻)
## 铁律沉淀
1. **cross降杠杆 59108 → 减仓 → set-leverage → 验证**, 四步缺一不可, 不要反复裸调 set-leverage
2. **ctVal 必查** (GET /api/v5/public/instruments), ONDO=10/张, 名义=contracts×ctVal×markPx; frozen 异常大先重算名义再怀疑交易所
3. **$200上限 = 保证金口径** (用户 2026-09-25 最终确认), 不是名义; 首仓70%=$140, 加仓可满$200
4. **advisor默认10x的隐患**: 即使正则修好, 任何解析失败都会静默回落10x — 开仓后必 check_account 核对 lever 与信号一致
5. **频道切换失败要回滚**: 换源后若端到端无信号流入(信号queue无新记录), 果断回切到旧源, 不要恋战调试
6. **信号链路断链排查顺序**: forwarder日志(有无[处理规则]) → signal_queue.db最新id(有无入队) → process_signal输出(有无advisor错误) → OKX fills(有无成交) — 用户愤怒"信号怎么没进来"时按此链路逐级查, 不要只查一层就下结论