4.9 KiB
4.9 KiB
v4.5.5 (2026-07-08) 实战记录: PEPE 完整周期验证 + close 路径独立 bug
完整事件链
时间: 2026-07-08 下午-晚上
Phase 1: 信号来了执行失败
- 熬鹰 1000PEPE 多单信号连发 10+ 条 (新开仓 + 加仓, 公告价格 0.00288 USDT/1000PEPE, 公告保证金 $300k+)
- process_signal 推 QQ 成功, 但 advisor SSL 报错, execute 实际未下单
- 用户多次追问"跟单了吗,已经过了2小时了" → "我靠,你为什么不重试,这么久了,还不赶紧推。"
- agent 重跑 process_signal → advisor 报
1000PEPE-USDT-SWAP不存在 (51001)
Phase 2: 诊断合约错配
- raw REST 查
/api/v5/public/instruments?instType=SWAP→ 真实合约是PEPE-USDT-SWAP - 关键发现: ctVal=10,000,000 PEPE/张, OKX 单位 = 1 PEPE
- X 聚合社区显示 0.00288 USDT/1000PEPE, OKX 显示 0.00000288 USDT/PEPE → 数学一致,只是展示格式不同
Phase 3: 修复 parse_signal
- process_signal.py parse_signal() 加归一化:
sym = sym.replace('USDT', '').strip()
if sym == '1000PEPE':
sym = 'PEPE'
fields['symbol'] = sym
- 重跑 → advisor 算出 14.8 张 PEPE long @7x, execute 成功
- 验证: USDT 从 $81 降到 $21 (冻结 $60+), 持仓确认 14.8 张 @ avgPx 0.000002881 (= 1000PEPE 单价 0.002881, 与信号 0.002888 误差 < 0.5%)
Phase 4: 平仓触发 bug
- 熬鹰 6+ 条连续减仓信号 (PEPE 价格下跌) → process_signal dedup 跳过
- 熬鹰平仓信号来 → process_signal 返回
✅ 平仓处理: error - bug 发现: close_position_raw 用了
1000PEPE-USDT-SWAP仍然查不到合约
Phase 5: 修复 close 路径
- close_position_raw 加归一化:
inst_id = f"{symbol_usdt}-USDT-SWAP"
if symbol_usdt == '1000PEPE':
inst_id = 'PEPE-USDT-SWAP'
- 重跑 close_position_raw('1000PEPE', 'long') → PEPE long 14.8 张全平成功
- order_id: 3745678821289287680
- 锁亏: -$14.50
Phase 6: 推送 + commit
- 推送 QQ 报告平仓结果
- commit:
v4.5.5: 1000PEPE→PEPE 归一化 (开仓+close路径都修) - git push → 502 Bad Gateway (git.hi6k.com 不稳定, 待重试)
核心教训
教训 1: 任何 1000xxx 包装币种必须两路都修
- parse_signal 处理开仓/加仓信号 → 归一化
- close_position_raw 处理平仓信号 → 也要归一化
- 修一处就够会导致"开了平不掉" 或 "信号推了但持仓没记录"
教训 2: 修复后必须端到端测试
修复 1000xxx 包装币种的代码后,验证流程:
- 开仓信号 → execute 成功 → USDT 冻结 + 持仓增加
- 平仓信号 → execute 成功 → USDT 解冻 + 持仓清零
- 推送 QQ 验证数据一致性
教训 3: 价格单位换算容易出错
| 来源 | 显示 | 实际 |
|---|---|---|
| X 聚合 | 0.00288 USDT/1000PEPE | = 0.00000288 USDT/PEPE |
| OKX | 0.00000288 USDT/PEPE | = 0.00288 USDT/1000PEPE |
验证公式: OKX价格 × 1000 ≈ X聚合价格 (误差 < 1% = 滑点)
教训 4: 用户对延迟极不耐烦
用户原话:
- "跟单了吗,已经过了2小时了"
- "我靠,你为什么不重试,这么久了,还不赶紧推。"
强制规则:
- 用户问"跟单了吗" / "执行了吗" → 立即重跑 process_signal, 不反问
- 用户说"重试" / "赶紧推" / "还不跟" → 立即重跑 + execute + raw REST 反查
- 重试完成 → 简短报"已跟 X 张 @ Yx, USDT Z",不展开
教训 5: git push 失败不要 panic
git.hi6k.com 经常 502:
- 本地 commit 就位即可,数据没丢
- sleep 30-60s 重试,通常恢复
- 不需要回滚或重做 commit
已知 1000x 包装币种 (扩展)
| 信号格式 | OKX 合约 | 验证状态 |
|---|---|---|
| 1000PEPE | PEPE-USDT-SWAP | ✅ v4.5.5 完整周期验证 |
| 1000SHIB | SHIB-USDT-SWAP | ⚠️ 待测 |
| 1000FLOKI | FLOKI-USDT-SWAP | ⚠️ 待测 |
| 1000LUNC | LUNC-USDT-SWAP | ⚠️ 待测 |
| 1000XEC | XEC-USDT-SWAP | ⚠️ 待测 |
| 1000BONK | BONK-USDT-SWAP | ⚠️ 待测 |
| 1000SATS | SATS-USDT-SWAP | ⚠️ 待测 |
新币种到来时: 先查 OKX public/instruments 确认合约名, 再决定是否需要归一化。
给下次 session 的 action
- 本地 commit v4.5.5 已就位 → 重试 git push (sleep 30)
- 在 process_signal.py 加
if sym.startswith('1000') and sym[4:] in ('PEPE','SHIB','FLOKI','LUNC','XEC','BONK','SATS'): sym = sym[4:](通用模式, 不只写 1000PEPE) - 在 close_position_raw 加同样通用归一化
- 给所有 advisor 错误加 fallback: 用 raw REST
/api/v5/public/instruments自动找替代合约 - 后续遇到 1000SHIB/1000FLOKI 等直接走归一化, 不需要再排查
关联
- v4.5.37: 第7次违规 + 1000PEPE execute 漏处理
- v4.5.38: symbol normalization 1000PEPE → PEPE (parse_signal 修复)
- spcx-silent-fail-repro.md: 类似的小币种 execute 失败 (SPCX / MU 也出现过)
- v4.5.18: execute 反查硬约束 (USDT 冻结 + 持仓张数验证)