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,策略可适应多个温区