140 lines
4.8 KiB
Markdown
140 lines
4.8 KiB
Markdown
# v4.5.40 (2026-07-08) 1000PEPE 完整生命周期验证 + 平仓 dedup 实战再确认
|
||
|
||
## 背景
|
||
|
||
v4.5.38 修复了 1000PEPE→PEPE 归一化(开仓 + close 两条路径都修),但**未完整跑过一次开仓→持仓→平仓的全程**。本轮 session 完整验证。
|
||
|
||
## 时间线(实际)
|
||
|
||
```
|
||
17:00 熬鹰推 1000PEPE 多单新开仓 114M张 @10x @0.0028547
|
||
→ process_signal 跑,但 advisor SSL 错误,execute 未真下单
|
||
→ USDT $81 全程无冻结,XAU 持仓后转 PEPE 信号
|
||
|
||
17:15 用户问"你查查有这个币吗"
|
||
→ 查到 OKX 实际合约是 PEPE-USDT-SWAP (不是 1000PEPE-USDT-SWAP)
|
||
→ X 聚合社区按"1000PEPE"单位显示价格,OKX 按"1 PEPE"
|
||
→ 1 单位换算 = ×1000
|
||
|
||
17:18 修复 process_signal.py (parse_signal 加 1000PEPE→PEPE 归一化)
|
||
|
||
17:22 熬鹰推 1000PEPE 加仓 743M张 @7x @0.0028880
|
||
→ process_signal 推 "PEPE long 7x | 14.8张 | 性价比高"
|
||
→ execute 真下单成功 ✅
|
||
→ 持仓验证: PEPE-USDT-SWAP 14.8张 avgPx=0.000002881
|
||
(=1000PEPE 单价 0.002881,与信号 0.002888 误差 < 0.5%)
|
||
|
||
17:30-17:50 熬鹰推 8 连发减仓信号
|
||
→ process_signal 全部推,QQ 推到"减仓"信号
|
||
→ 你 PEPE long 14.8张 继续持仓
|
||
|
||
17:55 熬鹰推 1000PEPE 平仓信号
|
||
→ process_signal 报"✅ 平仓处理: error | 1000PEPE long"
|
||
→ 原因是 close_position_raw 没修 1000PEPE→PEPE 归一化
|
||
|
||
17:56 修复 process_signal.py close_position_raw 加归一化
|
||
|
||
17:57 手动调 close_position_raw('1000PEPE', 'long') → 平仓成功
|
||
→ order_id: 3745678821289287680
|
||
→ 锁亏 -$14.50 USDT
|
||
→ 持仓清零
|
||
```
|
||
|
||
## v4.5.38 修复遗漏
|
||
|
||
v4.5.38 只修了 parse_signal() 的 symbol 归一化,**没修 close_position_raw 的 inst_id 归一化**。结果:
|
||
|
||
```python
|
||
# parse_signal 后:symbol='PEPE' (修复后)
|
||
# 但 close_position_raw('PEPE', 'long') → inst_id='PEPE-USDT-SWAP' ✅
|
||
# 如果传 '1000PEPE' 进来 → inst_id='1000PEPE-USDT-SWAP' ❌ 不存在
|
||
```
|
||
|
||
**修复(完整版)**:
|
||
```python
|
||
# parse_signal
|
||
sym = sym.replace('USDT', '').strip()
|
||
if sym == '1000PEPE':
|
||
sym = 'PEPE'
|
||
|
||
# close_position_raw
|
||
inst_id = f"{symbol_usdt}-USDT-SWAP"
|
||
if symbol_usdt == '1000PEPE':
|
||
inst_id = 'PEPE-USDT-SWAP'
|
||
```
|
||
|
||
两条路径都要加。
|
||
|
||
## BTC 平仓 dedup 实战再确认(v4.5.4)
|
||
|
||
本轮 session 中:
|
||
- 熬鹰推 BTC long 80.987张 @20x @64,914.61
|
||
- 14:20 process_signal → "BTC short 20x | 1.53张" → execute 成功 ✅
|
||
- 14:55 熬鹰推 BTC 平仓盈利 +$13,396 信号
|
||
|
||
但**用户问"跟单了吗"** → agent 没主动跑(只回复"无持仓"),这违反 v4.5.38 硬动作规则。
|
||
|
||
然后用户看到 BTC short 平仓信号没自动平仓 → **v4.5.4 dedup 修复路径:**
|
||
1. process_signal classify_signal 提前到 dedup 之前
|
||
2. close 信号只看 raw_text hash 唯一性(不看 2 分钟窗口)
|
||
3. 实测: 平仓信号 → ✅ 平仓处理: closed | BTC short → 锁亏 -$0.06
|
||
|
||
**结论**: v4.5.4 平仓 dedup 修复**持续有效**,BTC 平仓信号正确触发。
|
||
|
||
## 关键经验
|
||
|
||
### 1. 1000PEPE 是 X 聚合社区的特殊显示格式
|
||
- 不是真实合约名
|
||
- 真实合约名是 PEPE-USDT-SWAP
|
||
- 价格按"1000PEPE"显示(0.00288 USDT/1000PEPE)
|
||
- OKX 按"1 PEPE"显示(0.00000288 USDT/PEPE)
|
||
- 数学等价: 0.00288 / 1000 = 0.00000288
|
||
|
||
### 2. X 聚合社区可能还有其它"1000X"包装币
|
||
**可疑列表**(待验证):
|
||
- 1000SHIB → 实际 SHIB-USDT-SWAP?
|
||
- 1000FLOKI → 实际 FLOKI-USDT-SWAP?
|
||
- 1000PEPE → ✅ 确认 PEPE-USDT-SWAP
|
||
- 1000LUNC → 实际 LUNC-USDT-SWAP?
|
||
|
||
**防御性 fix**:
|
||
```python
|
||
# 在 parse_signal 末尾加通用归一化
|
||
import re
|
||
if sym.startswith('1000') and len(sym) > 4:
|
||
base = sym[4:]
|
||
# 验证 base 是否为 OKX 实际合约(查 instId 列表)
|
||
if check_inst_exists(f"{base}-USDT-SWAP"):
|
||
sym = base
|
||
```
|
||
|
||
### 3. 用户催促后 agent 必须主动行动
|
||
- 用户问"跟单了吗" → 立即重跑 + 反查 + 报告
|
||
- 不再"已推 QQ,自行查看" 这种被动回复
|
||
- v4.5.38 写入的硬动作规则,本轮继续有效
|
||
|
||
## 平仓信号完整生命周期(供下次参考)
|
||
|
||
```
|
||
[open 信号] → process_signal → advisor → execute → raw REST 反查 → 推"已跟单"
|
||
↓
|
||
持仓 N 张 (持续监控)
|
||
↓
|
||
[减仓信号] → process_signal → 推"减仓提醒"
|
||
↓
|
||
持仓 N 张 (不变)
|
||
↓
|
||
[平仓信号] → process_signal → close_position_raw → raw REST 平仓 → 推"已平仓, 锁盈/亏 X"
|
||
↓
|
||
持仓 0 张
|
||
```
|
||
|
||
每个节点都必须有 raw REST 反查,不能信 advisor stdout。
|
||
|
||
## 验证清单(下次session复盘用)
|
||
|
||
- [ ] parse_signal 修复了 1000PEPE→PEPE
|
||
- [ ] close_position_raw 修复了 1000PEPE→PEPE
|
||
- [ ] 平仓信号走独立通道(不被 dedup 误跳)
|
||
- [ ] 持仓验证走 raw REST(不只看 advisor stdout)
|
||
- [ ] 用户催促立即行动(不反问、不总结) |