backtrader / First run
backtrader 首次运行:SmaCross 双均线回测示例
安装完成后,用官方 README 的 SmaCross(双均线交叉)示例跑通第一个回测:创建 Cerebro、添加数据、运行回测并绘图。这是理解 backtrader 工作流最快的入口。
安装pip install backtrader
写策略SmaCross 双均线交叉
运行cerebro.run()
结果cerebro.plot()
Official example
官方快速开始示例(SmaCross)
以下为官方 README 的 SmaCross 示例,实现双均线交叉买入信号。
from datetime import datetime
import backtrader as bt
class SmaCross(bt.SignalStrategy):
def __init__(self):
sma1, sma2 = bt.ind.SMA(period=10), bt.ind.SMA(period=30)
crossover = bt.ind.CrossOver(sma1, sma2)
self.signal_add(bt.SIGNAL_LONG, crossover)
cerebro = bt.Cerebro()
cerebro.addstrategy(SmaCross)
data0 = bt.feeds.YahooFinanceData(dataname='MSFT', fromdate=datetime(2011, 1, 1),
todate=datetime(2012, 12, 31))
cerebro.adddata(data0)
cerebro.run()
cerebro.plot()示例边界:以上为官方 README 代码示例(2026-08 核验),未在本机运行验证;Yahoo Finance 数据源可用性随网络/地区变化。回测结果仅代表历史表现,不构成收益保证或投资建议。
Steps
分步理解
把官方示例拆成四步,对应 backtrader 的核心工作流。
1. 定义策略SmaCross 继承 SignalStrategy,SMA(10) 上穿 SMA(30) 触发买入信号。
2. 创建引擎Cerebro 实例化,通过 addstrategy 注册策略。
3. 添加数据用 YahooFinanceData 添加 MSFT 历史数据(2011-2012)。
4. 运行与绘图cerebro.run() 执行回测,cerebro.plot() 输出图表(需 matplotlib)。