backtesting.py量化回测:从想法到图表

📅 2026/8/24 11:13:23
backtesting.py量化回测:从想法到图表
backtesting.py量化回测从想法到图表【免费下载链接】backtesting.py Backtest trading strategies in Python.项目地址: https://gitcode.com/GitHub_Trending/ba/backtesting.py花了3天写出一套均线交叉策略第一个问题却答不上来它到底赚不赚钱这是大多数量化新手的真实处境。backtesting.py 量化回测把这个问题变成一次run()调用给它 OHLC 数据和买卖规则它逐根K线重放历史行情最后交出一张统计表和一张可交互图表。backtesting.py 安装与最小回测 30秒拉出第一张图先装pip install backtesting仓库自带示例数据GOOG 日线 OHLC10行代码就能跑通from backtesting import Backtest, Strategy from backtesting.lib import crossover from backtesting.test import SMA, GOOG class SmaCross(Strategy): def init(self): self.ma1, self.ma2 self.I(SMA, self.data.Close, 10), self.I(SMA, self.data.Close, 20) def next(self): if crossover(self.ma1, self.ma2): self.buy() bt Backtest(GOOG, SmaCross) bt.run(); bt.plot()bt.run()返回 pandas Series收益率、最大回撤、夏普比率、胜率一行一个bt.plot()弹出 Bokeh 交互图K线、权益曲线、每笔交易的进出场点都能缩放查看真实数据自己带Open/High/Low/Close四列加 datetime 索引的 DataFrame测试用 BTCUSD、EURUSD 也随仓库附带。Strategy 生命周期拆解一次回测到底跑了什么别把引擎当黑盒数据从进到出是一条清晰的流水线init() 只跑一次用self.I()包住指标函数如 SMA对全序列向量化预计算包起来的指标会自动上图next() 每根K线跑一次此时self.data和所有指标都被截断到今天array[-1]是最新值——只能看见历史天然没有未来函数订单成交买点不在当根K线收盘成交而在下一根开盘成交trade_on_closeTrue改为当根收盘exclusive_ordersTrue时新单自动平掉旧仓结果输出重放完所有K线后统计模块backtesting/_stats.py算出统计 Seriesstats[_trades]是逐笔交易明细stats[_equity_curve]是权益与回撤曲线。Strategy 与 Backtest 两个类都在 backtesting/backtesting.py 里想搞懂成交逻辑就从这个文件读起。踩坑三连 ⚡过拟合、滑点与多时间框架对齐坑一优化后收益暴涨样本外就垮现象bt.optimize()扫完 n1、n2 所有组合后最优那组收益比买入持有还高实盘几个月后回吐大半。原因在全样本上优化、且 maximize 的又是波动最大的期末权益网格越细那个最优点越可能是噪声。解法先用constraint过滤无效组合比如快线不能比慢线长把数据切开前半段优化、后半段验证再看邻域参数的表现——只有一个点冒尖这个点不可信。完整写法见 doc/examples/Parameter Heatmap Optimization.py。坑二滑点——回测里的成交价总是刚刚好现象回测胜率50%真实下单第一天就亏。原因默认下一根开盘成交而你不设 commission 就是零成本等于把无摩擦市场当成了现实。解法把 commission 设成真实值如.002——非零佣金会自动抬高买入价、压低卖出价相当于内置的滑点成本如果你的券商确实按收盘价成交再传trade_on_closeTrue。坑三周线指标对不上日线现象手工 resample 算周线 RSI数值和日线错位好几天信号全乱。原因自己重采样没处理好周K线归属于哪一天和向前填充。解法用resample_apply(W-FRI, RSI, self.data.Close, 30)——按最低时间框架日线重采样到周线、算完指标再对齐回填一行搞定。完整策略见 doc/examples/Multiple Time Frames.py。资源地图按任务找示例与源码跑通第一次回测 → doc/examples/Quick Start User Guide.py参数热力图与 SAMBO 优化器 → doc/examples/Parameter Heatmap Optimization.py多时间框架策略 → doc/examples/Multiple Time Frames.py可复用策略骨架均线交叉、布林带、RSI 等→ doc/examples/Strategies Library.py机器学习信号接入 → doc/examples/Trading with Machine Learning.pycrossover、resample_apply 等工具函数 → backtesting/lib.py下一步把示例数据换成你自己的数据加上 commission跑一次 optimize。记住 backtesting.py 量化回测的第一原则没被回撤和胜率验证过的收益率先当它是噪声。【免费下载链接】backtesting.py Backtest trading strategies in Python.项目地址: https://gitcode.com/GitHub_Trending/ba/backtesting.py创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考