diff --git a/deploy/profile-scripts/price_monitor.py b/deploy/profile-scripts/price_monitor.py index 5383fbef..3e019e4d 100644 --- a/deploy/profile-scripts/price_monitor.py +++ b/deploy/profile-scripts/price_monitor.py @@ -692,11 +692,22 @@ def run_once(round_label=""): for d in active: code = d["code"] - trig = d.get("trigger", {}) - if not trig: - continue + trig = d.get("trigger", {}) or {} zones = get_trigger_zones(trig) + # ── 2026-08-24 监控盲区根治:trigger_json 为空的版本化策略(76/112!), + # 用主层字段构建基础 zones(stop_loss/entry_zone/take_profit_zone)。 + # 否则这些股票完全脱离止损/止盈/买入区监控(603920 破止损无告警事件的根因)。 + try: + if d.get("stop_loss") and not any(z[0] == "stop_loss" for z in zones): + zones.append(("stop_loss", "止损", 0, float(d["stop_loss"]))) + if d.get("entry_low") and d.get("entry_high") and not any(z[0] == "entry_zone" for z in zones): + zones.append(("entry_zone", "买入区", float(d["entry_low"]), float(d["entry_high"]))) + if d.get("take_profit") and not any(z[0] == "take_profit_zone" for z in zones): + _tp = float(d["take_profit"]) + zones.append(("take_profit_zone", "止盈区间", _tp * 0.995, _tp * 100)) + except Exception: + pass if not zones: continue