From 0c6dd82b30cdb31f2f165c314ed0eda8973a362f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=A5=E5=BE=AE?= Date: Thu, 9 Jul 2026 23:05:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20price=5Fmonitor=E5=90=8C=E8=82=A1?= =?UTF-8?q?=E5=90=8C=E5=8C=BA=E9=97=B430=E5=88=86=E9=92=9F=E5=86=B7?= =?UTF-8?q?=E5=8D=B4=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/price_monitor.py | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/scripts/price_monitor.py b/scripts/price_monitor.py index 093dfdac..df7dac6b 100644 --- a/scripts/price_monitor.py +++ b/scripts/price_monitor.py @@ -331,6 +331,16 @@ def run_once(round_label=""): state = load_state() outputs = [] state_updated = False + # 时间冷却:同股同区间30分钟内不重复推 + _push_cooldown = {} + def _can_push(code, zone_key): + now = time.time() + key = f"{code}_{zone_key}" + last = _push_cooldown.get(key, 0) + if now - last < 1800: # 30分钟 + return False + _push_cooldown[key] = now + return True # 收集所有需要检查的代码 check_codes = set() @@ -384,8 +394,9 @@ def run_once(round_label=""): buy_lo = d.get("entry_low", 0) buy_hi = d.get("entry_high", 0) rr = result.get("rr_ratio", 0) - msg = f"🔔 {name}({code}) 价{price}→触发操作区间{max(buy_lo,0):.2f}~{buy_hi:.2f},已触发重评|RR={rr}" - push_to_xmpp(msg) + if _can_push(code, "stop_loss"): + msg = f"🔔 {name}({code}) 价{price}→触发操作区间{max(buy_lo,0):.2f}~{buy_hi:.2f},已触发重评|RR={rr}" + push_to_xmpp(msg) outputs.append(f" 📨 止损重评→已推送Dad: {action}") except Exception as e: outputs.append(f" ⚠️ 止损重评失败: {e}") @@ -418,13 +429,15 @@ def run_once(round_label=""): zone_desc = f"操作区间{lo}~{hi}" if "买入" in timing_signal or "加仓" in timing_signal or "止损" in action: rr = result.get("rr_ratio", 0) - msg = f"🔔 {name}({code}) 价{price}→触发{zone_desc},已触发重评|RR={rr}" - push_to_xmpp(msg) - outputs.append(f" 📨 区间触发重评→已推送Dad: {action}") + if _can_push(code, key): + msg = f"🔔 {name}({code}) 价{price}→触发{zone_desc},已触发重评|RR={rr}" + push_to_xmpp(msg) + outputs.append(f" 📨 区间触发重评→已推送Dad: {action}") else: reason = f"重评结果:{timing_signal},不构成操作建议" - msg = f"📋 {name}({code}) 价{price}→{zone_desc},{reason}" - push_to_xmpp(msg) + if _can_push(code, key + "_note"): + msg = f"📋 {name}({code}) 价{price}→{zone_desc},{reason}" + push_to_xmpp(msg) outputs.append(f" 📨 区间触发→已推送说明: {reason}") except Exception as e: outputs.append(f" ⚠️ 区间重评失败: {e}")