本系统是对原框架的重大升级,采用了类似 Freqtrade 的“向量化预计算 + 事件驱动执行”混合架构,旨在提供高性能、可配置、且易于实盘扩展的美股交易环境。
- Python: 3.10 + (推荐 3.12)
- OS: macOS / Linux
由于系统引入了 pydantic, pandas-ta, optuna, plotly 和 sqlalchemy,请确保安装最新依赖:
# 进入虚拟环境后运行
pip install pandas pandas-ta pydantic pyyaml plotly jinja2 optuna sqlalchemy运行命令时,Python 需要知道根目录在哪。请始终在项目根目录下执行,并设置 PYTHONPATH:
export PYTHONPATH=$PYTHONPATH:.不再需要修改 Python 脚本来调整参数。所有配置都统一在 YAML 文件中:
trading:
stake_amount: 100000 # 初始资金
max_open_trades: 5 # 最大同时持仓
timeframe: "1d" # 周期
broker:
name: "simulated" # 模拟成交
commission: 0.001 # 佣金
slippage: 0.0005 # 滑点
data:
datadir: "./data"
startup_candle_count: 200 # 自动多加载 200 根线用于计算指标
strategy:
name: "VectorizedRSISignal" # 策略类名
params:
rsi_period: 14 # 策略自定义参数通过统一的 CLI 入口运行回测:
python src/main.py backtest -c config.example.yaml- 控制台摘要:最终净值、总收益率、夏普比率等。
- 可视化报告:在
./reports/目录下生成交互式 HTML 报告(基于 Plotly)。 - 数据库记录:所有成交记录自动保存到
./data/trades.db(SQLite)。
系统集成贝叶斯优化,自动寻找最优参数:
# 运行 50 次试验,目标是最大化夏普比率
python src/main.py hyperopt -c config.example.yaml -n 50 --metric sharpe_ratio如何定义寻优范围?
在策略类中实现 hyperopt_space 方法:
def hyperopt_space(self):
return {
"rsi_period": ("int", 7, 30),
"rsi_lower": ("int", 20, 40)
}新策略必须继承 Strategy 基类,并实现向量化方法,这能提高 10-100 倍的速度:
class MyStrategy(Strategy):
def populate_indicators(self, dataframe, metadata):
# 使用 self.ta 直接调用 pandas-ta 指标
dataframe['rsi'] = self.ta.rsi(dataframe['close'], length=14)
return dataframe
def populate_entry_trend(self, dataframe, metadata):
# 向量化生成买入信号
dataframe['enter_long'] = (dataframe['rsi'] < 30).astype(int)
return dataframe如果你需要计算 MA200,只需在配置中设置 startup_candle_count: 200,系统会自动多加载历史数据,确保你回测的第一天就有准确的指标。
- Q: 提示找不到
src模块?- A: 运行
export PYTHONPATH=.。
- A: 运行
- Q: 数据库在哪里看?
- A: 使用任何 SQLite 浏览器打开
./data/trades.db。
- A: 使用任何 SQLite 浏览器打开
- Q: 怎么查看图形化报告?
- A: 直接用浏览器打开
./reports/下的 HTML 文件,它是完全交互式的。
- A: 直接用浏览器打开