Files
Hermes-Skills/okx-auto-position/references/v4.5.53-trader-unknown-skip-gate-2026-08-18.md
T

2.7 KiB
Raw Blame History

信号源缺失闸 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='未知' 的信号确实要跟:

  1. 手动开仓 (OKX app 或 CLI)
  2. 告诉 agent trader 名字 + 信号文本
  3. agent 把它加到信号源名单 (parse_signal 优先匹配 【交易员】 / 👉 跟单就选)

类似场景的类比

lottery-hk v1.4.0 候选稀疏兜底是反向: 数据少时主动补 4-5 个号(用户偏好)。两个 skill 区别:

  • okx trader='未知': 用户说跳过(风险事件)
  • lottery 候选 <4: 用户说补(娱乐场景)

判断标准是用户原话 + 风险性质, 不是哲学一致性。