2.7 KiB
2.7 KiB
信号源缺失闸 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 之前:
# 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 查:
SELECT * FROM signals WHERE outcome = 'skipped_unknown_source' ORDER BY created_at DESC LIMIT 10;
用户操作路径
如果某条 trader='未知' 的信号确实要跟:
- 手动开仓 (OKX app 或 CLI)
- 告诉 agent trader 名字 + 信号文本
- agent 把它加到信号源名单 (parse_signal 优先匹配
【交易员】/👉 跟单就选)
类似场景的类比
lottery-hk v1.4.0 候选稀疏兜底是反向: 数据少时主动补 4-5 个号(用户偏好)。两个 skill 区别:
- okx trader='未知': 用户说跳过(风险事件)
- lottery 候选 <4: 用户说补(娱乐场景)
判断标准是用户原话 + 风险性质, 不是哲学一致性。