fix(backtest): benchmark全链路透传(API→runner→engine) + metrics分支用_dcfg修cfg=None导致relative_metrics空
This commit is contained in:
@@ -30,7 +30,7 @@ class Orchestrator:
|
||||
await self._on_stage(task_id, stage)
|
||||
|
||||
async def submit_cta(self, strategy_class, symbol: str, params: dict,
|
||||
start: str, end: str, cfg) -> str:
|
||||
start: str, end: str, cfg, benchmark: str = "hs300") -> str:
|
||||
"""Submit a CTA backtesting task asynchronously"""
|
||||
task_id = f"cta_{symbol}_{id(params)}"
|
||||
self.pool.submit(task_id, "cta")
|
||||
@@ -40,14 +40,15 @@ class Orchestrator:
|
||||
params=params,
|
||||
start=start,
|
||||
end=end,
|
||||
cfg=cfg
|
||||
cfg=cfg,
|
||||
benchmark=benchmark
|
||||
)
|
||||
await self._notify_stage(task_id, "排队中")
|
||||
|
||||
spec = self._pending[task_id]
|
||||
fut: Future = self.pool.submit_work(
|
||||
task_id, _cta_worker, spec["strategy_class"], spec["symbol"],
|
||||
spec["params"], spec["start"], spec["end"], spec["cfg"], self.db_path
|
||||
spec["params"], spec["start"], spec["end"], spec["cfg"], spec["benchmark"], self.db_path
|
||||
)
|
||||
|
||||
task = self.pool.get_task(task_id)
|
||||
@@ -164,10 +165,10 @@ class Orchestrator:
|
||||
|
||||
|
||||
# Module-level worker functions (must be top-level for ProcessPoolExecutor pickle)
|
||||
def _cta_worker(strategy_class, symbol: str, params: dict, start: str, end: str, cfg, db_path: str) -> any:
|
||||
def _cta_worker(strategy_class, symbol: str, params: dict, start: str, end: str, cfg, benchmark: str, db_path: str) -> any:
|
||||
"""Worker for CTA backtest (lazy import, spawn-friendly)"""
|
||||
from sanguo_backtest.cta_engine import run_cta_backtest
|
||||
return run_cta_backtest(strategy_class, symbol, params, start, end, cfg, db_path)
|
||||
return run_cta_backtest(strategy_class, symbol, params, start, end, cfg, db_path, benchmark=benchmark)
|
||||
|
||||
|
||||
def _opt_worker(strategy_class, symbol: str, grid: dict, start: str, end: str, cfg, db_path: str) -> any:
|
||||
|
||||
Reference in New Issue
Block a user