From b322f4e07b8802669cbcb145684d026b55fb8e5f Mon Sep 17 00:00:00 2001 From: claude_dev Date: Mon, 13 Jul 2026 11:56:23 +0800 Subject: [PATCH] =?UTF-8?q?fix(backtest):=20degenerate=E6=94=B9status=3Ddo?= =?UTF-8?q?ne+flag=E2=80=94=E5=89=8D=E7=AB=AFstatus=20map=E5=85=BC?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit degenerate 原为独立 status 值,但前端 statusLabelMap 只认 done/failed/running/pending, 21个零成交结果在 Dashboard 计数/History 筛选/chip 标签消失或空白。改 status='done'+ statistics.degenerate=True+reason,结果页诚实显示 0+空成交,列表/计数正常。 --- sanguo_backtest/cta_engine.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sanguo_backtest/cta_engine.py b/sanguo_backtest/cta_engine.py index 486d02c..c88eac7 100644 --- a/sanguo_backtest/cta_engine.py +++ b/sanguo_backtest/cta_engine.py @@ -225,6 +225,9 @@ def run_cta_backtest( elif daily_df is None or (hasattr(daily_df, "empty") and daily_df.empty): _degenerate_reason = "日度盈亏数据为空" if _degenerate_reason: + # 标 degenerate flag(status 仍为 done,避免前端 status map 不认导致列表/计数异常; + # 结果页据 trades=0 + statistics.degenerate 自然呈现"零成交"诚实状态) + statistics["degenerate"] = True statistics["degenerate_reason"] = _degenerate_reason logging.warning("回测退化: %s (symbol=%s strategy=%s)", _degenerate_reason, symbol, strategy_class.__name__) @@ -316,11 +319,12 @@ def run_cta_backtest( for t in trades_dict.values() ]) - # Build result object — H7: degenerate 时标记状态(不静默 done) + # Build result object — H7: degenerate 走 status="done" + statistics.degenerate flag + # (不发明新 status 值,前端 status map 只认 done/failed/running/pending) result = BacktestResult( task_id=task_id, type="cta", - status="degenerate" if _degenerate_reason else "done", + status="done", strategy=strategy_class.__name__, symbol=symbol, params=params,