76 lines
2.7 KiB
Markdown
76 lines
2.7 KiB
Markdown
# 信号源缺失闸 v4.5.53 (2026-08-18)
|
||
|
||
## 触发事件
|
||
|
||
8/18 SNDK 做空 2x 信号进来:
|
||
```
|
||
✅ SNDK 做空 🟥 2x 新开仓
|
||
📊 信号源: 未知 158.00 SNDK(价值$?)
|
||
📐 性价比检查: 3.0:1 ✅
|
||
✅ 执行结果: 入场 $1724.76, 仓位 0.095张, TP $1499.38, SL $1799.79
|
||
━━━ Free: 27.64 | SNDK/USDT:USDT: 0.095张 ━━━
|
||
```
|
||
|
||
用户反馈: **"这个没信号源的就不要跟单了"**
|
||
|
||
## 根因
|
||
|
||
`parse_signal()` 在 `trader` 字段解析不到时硬编码 `'未知'`(之前是 `'X聚合社区'`, 后改 `'未知'`)。但**主流程没有这道闸**, 仍然跑 advisor + execute。
|
||
|
||
风险:
|
||
- 信号文本可能被人恶意构造/拼接, trader 字段缺失不代表有效信号
|
||
- 用户已经因为锁的 trader 跟单, 突然跳一个"未知"开仓, 风险敞口未知
|
||
|
||
## 修法 (v4.5.53)
|
||
|
||
在 `process_signal()` 主流程入口加闸,**在 `is_signal_stale` 之前**:
|
||
|
||
```python
|
||
# 2026-08-18: 信号源缺失闸
|
||
_sig_type_for_gate = classify_signal(fields)
|
||
if trader == '未知' and _sig_type_for_gate in ('open', 'add', 'reduce'):
|
||
msg = f"""⏭️ **跳过跟单: 信号源未知** ⏭️
|
||
|
||
📊 币种: {symbol} {side} {leverage}x
|
||
🚫 信号文本里没有【交易员】/👉 跟单就选 / 任何 trader 标签
|
||
❌ 不自动跟单,避免执行来路不明的开仓
|
||
|
||
💡 如果这条信号确实要跟, 请手动开仓 + 告诉我 trader 名字, 我会加到名单。
|
||
"""
|
||
push_to_qq(msg)
|
||
_tracker_record(trader='未知', ..., outcome='skipped_unknown_source')
|
||
return f"⏭️ 跳过: 信号源未知 | {symbol} {side}"
|
||
```
|
||
|
||
## 行为矩阵
|
||
|
||
| signal_type | trader='未知' | 行为 |
|
||
|---|---|---|
|
||
| `open` | ❌ 跳过 | 推 QQ + 记录 tracker |
|
||
| `add` | ❌ 跳过 | 推 QQ + 记录 tracker |
|
||
| `reduce` | ❌ 跳过 | 推 QQ + 记录 tracker |
|
||
| `close` | ✅ 继续执行 | 平仓是兜底, 即使来源不明也执行(防止长期持仓不释放锁) |
|
||
|
||
**关键决策**: close 信号不阻断。如果未来有"恶意平仓信号"问题, 需要单独评估。
|
||
|
||
## Tracker outcome
|
||
|
||
新 outcome 值: `skipped_unknown_source`。可在 SQL 查:
|
||
```sql
|
||
SELECT * FROM signals WHERE outcome = 'skipped_unknown_source' ORDER BY created_at DESC LIMIT 10;
|
||
```
|
||
|
||
## 用户操作路径
|
||
|
||
如果某条 trader='未知' 的信号确实要跟:
|
||
1. 手动开仓 (OKX app 或 CLI)
|
||
2. 告诉 agent trader 名字 + 信号文本
|
||
3. agent 把它加到信号源名单 (parse_signal 优先匹配 `【交易员】` / `👉 跟单就选`)
|
||
|
||
## 类似场景的类比
|
||
|
||
`lottery-hk` v1.4.0 候选稀疏兜底是**反向**: 数据少时主动补 4-5 个号(用户偏好)。**两个 skill 区别**:
|
||
- okx trader='未知': 用户说**跳过**(风险事件)
|
||
- lottery 候选 <4: 用户说**补**(娱乐场景)
|
||
|
||
判断标准是**用户原话** + **风险性质**, 不是哲学一致性。 |