From d27287f49bf0e97a879acdf87c154d947883e26d Mon Sep 17 00:00:00 2001 From: hmo Date: Mon, 27 Jul 2026 10:08:11 +0800 Subject: [PATCH] =?UTF-8?q?fix(digest):=20=E4=BF=A1=E5=8F=B7=E4=BB=8E?= =?UTF-8?q?=E9=9D=9E=E5=8A=A8=E4=BD=9C=E7=BA=A7=E8=BD=AC=E5=85=A5=E5=8A=A8?= =?UTF-8?q?=E4=BD=9C=E7=BA=A7=E6=97=B6=E5=BC=BA=E5=88=B6=E5=85=A5=E9=98=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 原条件只检查tag新旧(持有→卖出时tag已遗留current_recommend→不入队) - 新加: 旧信号非动作+新信号动作→入队(即使tag不变) - 补充触发00700/300308/688639的历史卖出推送 --- mofin_db.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/mofin_db.py b/mofin_db.py index 8651a83c..d84a3997 100644 --- a/mofin_db.py +++ b/mofin_db.py @@ -1248,9 +1248,10 @@ def sync_recommend_tag(conn, code: str, timing_signal: str): active_manual(人工标记)永不动。与 XMPP 动作级告警同源(红线#12)。""" try: recompute_rr(conn, code) # 先入先算:保证 tag/入队/盯盘排序拿到新鲜 RR - _old_tag_row = conn.execute( - "SELECT tag FROM holding_strategies WHERE code=? AND status='active'", (code,)).fetchone() - _old_tag = (_old_tag_row[0] or '') if _old_tag_row else '' + _row = conn.execute( + "SELECT tag, timing_signal FROM holding_strategies WHERE code=? AND status='active'", (code,)).fetchone() + _old_tag = (_row[0] or '') if _row else '' + _old_sig = (_row[1] or '') if _row else '' # 卖出/止盈 仅对持仓股算动作信号(没持仓卖什么) _ACTION_BUY = ("买入", "可买入", "可加仓") _ACTION_SELL = ("卖出", "止盈") @@ -1264,7 +1265,11 @@ def sync_recommend_tag(conn, code: str, timing_signal: str): "WHERE code=? AND status='active' AND (tag IS NULL OR tag != 'active_manual')", (code,)) conn.commit() - if _old_tag != 'current_recommend': + # 入队条件:tag 新鲜转成 或 信号从非动作级转入动作级 + #(防:信号持有→卖出但tag已遗留current_recommend就不入队——2026-07-27 老爸) + _old_action = _old_sig in _ACTION_BUY or _old_sig in _ACTION_SELL + _new_action = timing_signal in _ACTION_BUY or timing_signal in _ACTION_SELL + if _old_tag != 'current_recommend' or (not _old_action and _new_action): enqueue_recommend(conn, code) # 新推荐 → 摘要队列(batch 结束统一发) elif _old_tag == 'current_recommend': # 空信号或非动作信号 → 清除自动推荐(active_manual 不动)