feat: v_weak弱市策略定稿落地(六步方法论+12维框架完整产出)

- 策略: 弱市(MA20下)+大盘ADX∈[25,30]甜区 + bias60∈[-35,-20] + RSI≤25 + 5日急跌; tp30/sl12/40
- 回测: 2649笔/avg+10.66%/wr68.4%/去2018+5.60%/正年9/11/组合5槽年化7.9%
- 后端: members优先读v_weak(替代不合格v_mr_sel)
- 前端: v_mr卡片改推荐+完整策略说明
- 文档: §14完整六步推导链
This commit is contained in:
xxm
2026-08-03 12:00:03 +08:00
parent 9080790ed2
commit 55488c2c98
3 changed files with 51 additions and 7 deletions
+5 -5
View File
@@ -108,11 +108,11 @@ def get_combo_dashboard():
combos.append(d)
# 3. 组合成员策略的独立指标
# v_mr 优先取精选版 v_mr_sel(六步方法论调优2026-08-02),无则回退基线 v_mr
# v_mr 位置优先取 v_weak(六步方法论+12维框架定稿2026-08-03),回退 v_mr_sel/v_mr
members = {}
for v in ["v_next4", "v_mr"]:
sel_v = "v_mr_sel" if v == "v_mr" else None
candidates = [sel_v, v] if sel_v else [v]
sel_v = "v_weak" if v == "v_mr" else None
candidates = [sel_v, "v_mr_sel", v] if sel_v else [v]
r = None
used_sel = False
for cv in candidates:
@@ -122,7 +122,7 @@ def get_combo_dashboard():
(cv,),
).fetchone()
if r:
used_sel = (cv == sel_v)
used_sel = (cv == "v_weak")
break
if r:
res = json.loads(r[0])
@@ -131,7 +131,7 @@ def get_combo_dashboard():
p5 = s.get("portfolio", {})
members[v] = {
"role": "趋势市主战" if v == "v_next4" else "震荡/下跌市接管",
"version": "v_mr_sel" if used_sel else "v_mr",
"version": "v_weak" if used_sel else "v_mr",
"is_sel": used_sel,
"trades": s.get("total_trades"),
"win_rate": s.get("win_rate"),