fix: price_monitor同股同区间30分钟冷却去重

This commit is contained in:
知微
2026-07-09 23:05:00 +08:00
parent 974c4b5d11
commit 0c6dd82b30
+20 -7
View File
@@ -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}")