From cda582f04635108a0fd5f7760b857def11397805 Mon Sep 17 00:00:00 2001 From: xxm Date: Sun, 16 Aug 2026 07:11:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=201m/6m=E5=91=A8=E6=9C=9F=E6=B8=A9?= =?UTF-8?q?=E5=8C=BA=E8=A1=A8=E7=AD=96=E7=95=A5=E6=B6=88=E5=A4=B1=E2=80=94?= =?UTF-8?q?=E2=80=94=E2=91=A0=E8=A1=A5=E5=85=A8=E5=BE=AA=E7=8E=AF=E8=A1=A5?= =?UTF-8?q?best=5Fregime=E2=91=A1=E5=88=87=E7=AA=97=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E9=9B=86=E6=89=A9=E5=B1=95=E5=90=ABDB-only=E7=AD=96=E7=95=A5(s?= =?UTF-8?q?2=5Fpanic/v=5Flurk=5F*/v=5Fmr*)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server.py | 2 ++ strategy_lab.py | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/server.py b/server.py index e6b5aac1..85be48e2 100644 --- a/server.py +++ b/server.py @@ -850,6 +850,8 @@ def api_research_strategies(): 'evidence': '', } _entry['regime_winrates'] = _regime_winrates.get(_mv, {}) + # 2026-08-16 补全条目必须设 best_regime——否则前端按 best_regime 分表时被踢出所有温区表 + _entry['best_regime'] = _best_regime_map.get(_mv) _entry['current'] = True _entry['state'] = 'active' _entry['state_reason'] = '当前温区路由激活' diff --git a/strategy_lab.py b/strategy_lab.py index 2fc67738..6fdfccdd 100644 --- a/strategy_lab.py +++ b/strategy_lab.py @@ -2104,7 +2104,16 @@ def list_strategies(period_tag=None): days = PERIOD_SLICE_DAYS[period_tag] have_period = {r['version'] for r in rows} from datetime import datetime as _dt, timedelta as _td - for v in list(STRATEGIES.keys()) + [x for x in STRATEGY_DESCRIPTIONS.keys() if x not in STRATEGIES]: + # 2026-08-16 切窗版本集扩展:静态字典 + DB 里所有有回测记录的版本 + # (原版只遍历 STRATEGIES+STRATEGY_DESCRIPTIONS,导致 s2_panic/v_lurk_*/v_mr* 等 + # DB-only 策略在 1m/6m 周期整体消失) + _slice_versions = set(STRATEGIES.keys()) | set(STRATEGY_DESCRIPTIONS.keys()) + try: + _slice_versions |= {r[0] for r in conn.execute( + "SELECT DISTINCT version FROM strategy_research WHERE COALESCE(market,'a')='a'").fetchall()} + except Exception: + pass + for v in sorted(_slice_versions): if v in have_period: continue # 已有该 period 记录,不用切 row = conn.execute(