Files
Hermes-Skills/okx-auto-position/references/v4.5.36-2026-07-08-reply-vs-qq-side-separation.md
T

3.2 KiB

v4.5.36 (2026-07-08) 回复侧 vs QQ 推送侧 严格区分 + 平仓信号 dedup 实战修复

用户明令(2026-07-08)

"我是指这个信息,是你分析的吗,只需要把跟单结果中涉及数据相关的推给QQ,这里不需要推"

区分原则(已写入 SKILL.md v4.5.3)

内容 推送侧 (QQ) 回复侧 (Telegram/本会话)
品种/方向/张数/杠杆 详细 一句话
avgPx/markPx/upl 详细 一句话
占用保证金/可用 USDT 详细 一句话
强平价/风险指标 详细 不写
跟单小结/对比/节奏分析 详细 不写
三选一/Y/N 菜单 不推 不写
主观判断(逆势/拉锯) 不推 不写

正确示例:

  • 回复: SKHYNIX long 0.216张@5x 已跟, 浮盈+$0.30; USDT $42
  • 回复: 熬鹰开价 1352 vs 你 1352 基本持平, 浮盈+$0.30, 建议持有不动

平仓信号 dedup 误跳 实战修复(v4.5.4)

Bug: 同交易员同币种的"减仓→平仓"紧跟信号被 is_duplicate() 的2分钟窗口去重误判为重复 → 平仓信号被 ⏭️ 跳过 → 新规则"平仓信号也跟单"从未触发。

触发案例:

  • 熬鹰 ETH 减仓(850958张 @1,801.36) → 平仓盈利信号紧跟(同币种同交易员,2分钟内)
  • process_signal 返回 ⏭️ 重复信号跳过
  • 平仓规则未触发 → 持仓 ETH short 1.85张 @5x 继续扛单,ETH 涨到 1795 → 浮亏扩大到 -$6.58

修复方案(commit 8c03e22):

  • classify_signal 提前到 is_duplicate 之前
  • close 信号走独立通道: 只看 raw_text hash 唯一性(完全文本匹配才跳过),不看2分钟窗口
  • 因为平仓文本内含"收益额+标记价",天然唯一,即使2分钟内同交易员同币种的多条平仓信号文本也不会重复

核心代码路径(已部署到 process_signal.py):

# 分类先于去重
signal_type = classify_signal(fields)

if signal_type == 'close':
    # close 走独立通道:只看完全文本 hash 唯一
    msg_hash = hashlib.md5(text.encode()).hexdigest()
    if dedup_conn.execute("SELECT 1 FROM processed WHERE msg_hash = ?", (msg_hash,)).fetchone():
        return "⏭️ 平仓信号完全重复跳过"
    # 走 close_position_raw
    close_result = close_position_raw(symbol_usdt, signal_side_en)
    ...

修复后实测:

  • 熬鹰 ETH 平仓信号重发 → ✅ 平仓处理: closed | ETH short → 自动平仓成功
  • USDT 从 $106.34 起回到正常状态,持仓清零

给下次 session 的执行清单

  1. 回复侧 - 跑完信号后,只回一行核心状态,不写分析/对比/建议
  2. QQ 推送侧 - 用 push_to_qq 推完整数据(品种/方向/张数/avgPx/upl/保证金/可用/强平/异常)
  3. close 信号 - 永远走独立通道,不被2分钟窗口去重影响
  4. 检测到 advisor execute 返回但无 order_id - 立即反查真实持仓(raw REST /api/v5/account/positions),不能仅信 stdout

关联

  • v4.5.4 close-dedup-real-incident.md (本次修复 commit 8c03e22)
  • v4.5.34 execute-returns-success-no-fill.md (advisor execute 静默成功问题)
  • v4.5.32 title-position-contradiction-rule.md (同次会话上半场发现的标题矛盾)