diff --git a/mofin_db.py b/mofin_db.py index f319f6ab..ee2dec9e 100644 --- a/mofin_db.py +++ b/mofin_db.py @@ -1704,6 +1704,26 @@ def write_holding_strategy(conn, code: str, name: str, data: dict, data['timing_signal'] = _old_sig except Exception: pass + # ── 策略参数权威保护(2026-07-27 老爸:技术路径每2分钟覆写12维的Zone/SL/TP→RR波动→盯盘和XMPP不一致)── + # 新鲜(<20h)12维分析的技术参数不允许被技术路径覆写。 + # RR的稳定性取决于 Zone/SL/TP —— 它们被覆写一次 RR 就变一次。 + if source_trigger in _TECHNICAL_PATHS and _old_ra: + try: + from datetime import datetime as _ddt3, timedelta as _dtd3 + _ra_dt3 = _ddt3.fromisoformat(str(_old_ra)[:19]) + if (_ddt3.now() - _ra_dt3) < _dtd3(hours=20): + _old_params = conn.execute( + "SELECT entry_low, entry_high, stop_loss, take_profit FROM holding_strategies WHERE code=? AND status='active'", + (code,)).fetchone() + if _old_params: + _keys = ['entry_low','entry_high','stop_loss','take_profit'] + _vals = [float(v) if v else 0 for v in _old_params] + for i, k in enumerate(_keys): + if _vals[i] > 0: + data[k] = _vals[i] + print(f" [AUTHORITY-PARAM] {code} 保留12维参数(区{_vals[0]}~{_vals[1]} 损{_vals[2]} 盈{_vals[3]})", flush=True) + except Exception: + pass # ── action 权限保护(与信号同一权威层级,2026-07-22)── # 技术路径不得覆盖新鲜(<20h)12维 action。 # 根治:技术路径写的"盈亏比不足1:1.5不建议买入"旧 action 与12维买入分析同框矛盾。