From c4157503d0d254d4463bba068daa6b7607920a04 Mon Sep 17 00:00:00 2001 From: xxm Date: Tue, 18 Aug 2026 01:34:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20server.py=E5=8A=A0s.current=5Fregimes?= =?UTF-8?q?=E6=B8=A9=E5=8C=BA=E6=BF=80=E6=B4=BB=E5=88=97=E8=A1=A8(?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E6=8C=89=E6=B8=A9=E5=8C=BA=E6=89=93=E7=8A=B6?= =?UTF-8?q?=E6=80=81,=E6=B6=88=E9=99=A4=E9=94=99=E4=BD=8D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/server.py b/server.py index 6e286790..9f0f39eb 100644 --- a/server.py +++ b/server.py @@ -676,6 +676,15 @@ def api_research_strategies(): _active_set = set(_weights.get("active") or []) _hk_market = (_weights.get("markets") or {}).get("hk") or {} _active_set |= set(_hk_market.get("active") or []) + # 2026-08-18 按温区激活矩阵(老莫:资格够就激活,不合格绝不激活;当前温区实盘闸门) + # 构建 策略 -> 激活温区列表(A股 regime_active + 港股 markets.hk.regime_active) + _strategy_active_regimes = {} + for _rgm, _acts in ((_weights.get("regime_active") or {}).items()): + for _sv in (_acts or []): + _strategy_active_regimes.setdefault(_sv, set()).add(_rgm) + for _rgm, _acts in ((_hk_market.get("regime_active") or {}).items()): + for _sv in (_acts or []): + _strategy_active_regimes.setdefault(_sv, set()).add("hk:" + _rgm) # ── 2026-08-15 温区数据按所选周期计算(函数内缓存,替代全量表/内联重算)── _regime_winrates = _compute_regime_winrates_cached(pt, _approx_regime_universality) @@ -808,6 +817,8 @@ def api_research_strategies(): s['regime_winrates'] = _regime_winrates.get(s['version'], {}) # current = 当前温区激活(替代旧的 CURRENT_VERSIONS 硬编码) s['current'] = s['version'] in _active_set + # 2026-08-18 温区激活列表(前端按温区打状态,区分"该策略在当前表温区是否激活") + s['current_regimes'] = sorted(_strategy_active_regimes.get(s['version'], set())) # 2026-08-15 适应温区(前端方案A:策略只在适应温区表显示一行) s['best_regime'] = _best_regime_map.get(s['version']) # 2026-08-16 资格评估(标准A)——per-regime,策略可适应多个温区