fix(authority): position_advice也纳入参数权威保护

This commit is contained in:
hmo
2026-07-27 11:23:48 +08:00
parent 7a3c74b63d
commit af43da2ff3
+10 -9
View File
@@ -1718,24 +1718,25 @@ 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 就变一次。
# ── 策略参数权威保护(2026-07-27 老爸:技术路径每2分钟覆写12维的Zone/SL/TP/Position→RR波动→盯盘和XMPP不一致)──
# 新鲜(<20h)12维分析的技术参数+仓位不允许被技术路径覆写。
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'",
"SELECT entry_low, entry_high, stop_loss, take_profit, position_advice 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]
_keys = ['entry_low','entry_high','stop_loss','take_profit','position_advice']
_vals = [v if v else '' 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)
if i < 4 and float(_vals[i] or 0) > 0:
data[k] = float(_vals[i])
elif i == 4 and str(_vals[i]).strip():
data[k] = str(_vals[i])
print(f" [AUTHORITY-PARAM] {code} 保留12维参数(区{_vals[0]}~{_vals[1]}{_vals[2]}{_vals[3]} pos={_vals[4]})", flush=True)
except Exception:
pass
# ── action 权限保护(与信号同一权威层级,2026-07-22)──