fix: 研究Tab与组合Tab反映最新策略家族状态
- 策略Tab: v_mr/v_mr_sel/v_combo 加'已证伪'红色标记(划线+badge+悬停原因) - 当前策略从v_next4单点扩展为策略家族(v_weak/s2_panic/v_next4) - 组合Tab: v_next4卡片version字段bug修复(错显示v_mr) - 组合Tab文案更新为策略家族(同时运行/票自己对号入座/零重叠)
This commit is contained in:
+10
-3
@@ -2068,7 +2068,7 @@ async function renderResearchCombo() {
|
||||
'<span class="text-base font-semibold text-blue-300">🧬 当前组合方案</span>' +
|
||||
'<span class="text-sm">市场阶段: <span class="' + regColor + ' font-bold">' + regName + '</span>' + (regime.adx ? ' <span class="text-slate-500 text-xs">ADX=' + regime.adx + '</span>' : '') + '</span>' +
|
||||
'</div>' +
|
||||
'<div class="text-xs text-slate-400 mb-2">v_next4 趋势追涨 + v_mr 均值回复,按大盘市场阶段自动分工(strategy_lifecycle 6.5 实盘落地)</div>' +
|
||||
'<div class="text-xs text-slate-400 mb-2">策略家族(§39/§40):v_next4 趋势池 + v_weak 弱市甜区 + s2_panic 极端恐慌买超跌——同时运行、票自己对号入座、信号零重叠</div>' +
|
||||
'<div class="space-y-1.5">';
|
||||
for (const rt of (d.routing || [])) {
|
||||
const active = regime.regime === rt.regime;
|
||||
@@ -2328,6 +2328,12 @@ function renderStrategyTable(strategies) {
|
||||
};
|
||||
// 条件格式色条:计算每列 min/max,单元格背景按相对大小画色条
|
||||
const CURRENT_STRATEGY = 'v_next4';
|
||||
const CURRENT_FAMILY = new Set(['v_weak', 's2_panic', 'v_next4']);
|
||||
const DEPRECATED = {
|
||||
'v_mr': '已证伪§12: 2018熊市依赖, 去2018后avg+2.14%/wr49.8%掷硬币, 组合回撤45%',
|
||||
'v_mr_sel': '已证伪§12: 144笔中54%集中在2018-10, 单一事件依赖不可信',
|
||||
'v_combo': '未采纳: 2年+47.9%但5年验证2023/24震荡转折年亏损(B动量族假突破)',
|
||||
};
|
||||
const ranges = {};
|
||||
const cols = ['composite','universality_score','full_return_pct','capital_final','cagr_pct','total_trades','avg_hold_days','win_rate','avg_profit_pct','sharpe_ratio','profit_factor','portfolio_max_dd_pct'];
|
||||
for (const c of cols) {
|
||||
@@ -2378,10 +2384,11 @@ function renderStrategyTable(strategies) {
|
||||
const pf = st.portfolio || {};
|
||||
const hasResult = st.total_trades != null;
|
||||
const smallSample = hasResult && st.total_trades < 40;
|
||||
const isCurrent = s.version === CURRENT_STRATEGY && (s.market || 'all') !== 'hk';
|
||||
const isCurrent = (s.version === CURRENT_STRATEGY || CURRENT_FAMILY.has(s.version)) && (s.market || 'all') !== 'hk';
|
||||
const deprecatedReason = DEPRECATED[s.version];
|
||||
const rowCls = 'border-b border-slate-800/50 hover:bg-slate-800/30 cursor-pointer' + (isCurrent ? ' bg-emerald-900/20 border-l-2 border-l-emerald-400' : '');
|
||||
html += '<tr class="' + rowCls + '" onclick="showStrategyDetail(\'' + s.version + '\')">' +
|
||||
'<td class="px-2 py-1.5 font-mono font-bold ' + (isCurrent ? 'text-emerald-400' : 'text-blue-400') + '">' + s.version + (isCurrent ? ' <span class="text-[10px] bg-emerald-500/20 text-emerald-300 px-1 rounded">当前</span>' : '') + ((s.market && s.market !== 'all') ? ' <span class="text-[10px] bg-cyan-500/20 text-cyan-300 px-1 rounded">' + (s.market === 'hk' ? '港' : 'A') + '</span>' : '') + '</td>' +
|
||||
'<td class="px-2 py-1.5 font-mono font-bold ' + (deprecatedReason ? 'text-red-400/70 line-through' : (isCurrent ? 'text-emerald-400' : 'text-blue-400')) + '">' + s.version + (isCurrent ? ' <span class="text-[10px] bg-emerald-500/20 text-emerald-300 px-1 rounded">当前</span>' : '') + (deprecatedReason ? ' <span class="text-[10px] bg-red-500/20 text-red-300 px-1 rounded" title="' + deprecatedReason.replace(/"/g, '"') + '">已证伪</span>' : '') + ((s.market && s.market !== 'all') ? ' <span class="text-[10px] bg-cyan-500/20 text-cyan-300 px-1 rounded">' + (s.market === 'hk' ? '港' : 'A') + '</span>' : '') + '</td>' +
|
||||
'<td class="px-2 py-1.5 whitespace-normal break-words" title="' + (s.hypothesis || s.summary || '').replace(/"/g, '"') + '">' + (s.name || '') + (smallSample ? ' <span class="text-amber-500" title="样本<40笔">⚠️</span>' : '') + '</td>' +
|
||||
'<td class="text-center px-2 py-1.5 font-mono text-cyan-300">' + (st.sizing_slots ? st.sizing_slots + '仓' : '10仓') + (st.conviction_model ? '<button onclick="event.stopPropagation();showConviction(\'' + s.version + '\')" class="text-amber-400 hover:text-amber-300" title="查看信念分级仓位规则">⚡</button>' : '') + '</td>' +
|
||||
'<td class="text-center px-2 py-1.5">' + ((s.description && s.description.title) ? '<button onclick="event.stopPropagation();showDesc(\'' + s.version + '\')" class="text-blue-400 hover:text-blue-300" title="查看策略说明">📖</button>' : '<span class="text-slate-700">—</span>') + '</td>' +
|
||||
|
||||
Reference in New Issue
Block a user