first commit
This commit is contained in:
24
backend/app/backtest/strategies/__init__.py
Normal file
24
backend/app/backtest/strategies/__init__.py
Normal file
@@ -0,0 +1,24 @@
|
||||
"""策略注册表与工厂。
|
||||
|
||||
新增策略:实现 Strategy(base.py),在此注册 {name: Class},前端下拉即可选。
|
||||
策略构造参数由请求的 params(dict) 以 **kwargs 传入。
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from .base import Strategy
|
||||
from .macd_cross import MACDCrossStrategy
|
||||
from .ma_strategies import MACrossStrategy, SingleMAStrategy
|
||||
|
||||
STRATEGIES: dict[str, type[Strategy]] = {
|
||||
"macd_cross": MACDCrossStrategy,
|
||||
"ma_cross": MACrossStrategy,
|
||||
"single_ma": SingleMAStrategy,
|
||||
}
|
||||
|
||||
|
||||
def build_strategy(name: str, params: dict | None) -> Strategy:
|
||||
cls = STRATEGIES.get(name)
|
||||
if cls is None:
|
||||
raise ValueError(f"未知策略: {name}(可用: {', '.join(STRATEGIES)})")
|
||||
kwargs = {k: v for k, v in (params or {}).items()}
|
||||
return cls(**kwargs)
|
||||
Reference in New Issue
Block a user