快速入门¶
本指南将帮助你创建第一个回测。
基本结构¶
一个典型的回测包括:
创建 Cerebro 引擎
添加数据
添加策略
配置经纪商
运行回测
分析结果
你的第一个回测¶
import backtrader as bt
import datetime
# 创建一个简单的策略
class SmaCross(bt.Strategy):
params = (('pfast', 10), ('pslow', 30),)
def __init__(self):
sma1 = bt.ind.SMA(period=self.p.pfast)
sma2 = bt.ind.SMA(period=self.p.pslow)
self.crossover = bt.ind.CrossOver(sma1, sma2)
def next(self):
if not self.position:
if self.crossover > 0:
self.buy()
elif self.crossover < 0:
self.close()
# 创建 cerebro
cerebro = bt.Cerebro()
# 添加数据
data = bt.feeds.YahooFinanceCSVData(
dataname='AAPL.csv',
fromdate=datetime.datetime(2020, 1, 1),
todate=datetime.datetime(2021, 1, 1)
)
cerebro.adddata(data)
# 添加策略
cerebro.addstrategy(SmaCross)
# 设置初始资金
cerebro.broker.setcash(100000)
# 添加分析器
cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name='sharpe')
# 运行
print(f'初始资金: {cerebro.broker.getvalue():.2f}')
results = cerebro.run()
print(f'最终资金: {cerebro.broker.getvalue():.2f}')
# 获取分析结果
strat = results[0]
print(f'夏普比率: {strat.analyzers.sharpe.get_analysis()}')
# 绑制图表
cerebro.plot()
理解输出¶
运行后:
资金价值: 显示盈亏
夏普比率: 风险调整后的收益指标
图表: 交易的可视化展示