Backtrader 是 Python 中最受欢迎的开源回测和实盘交易框架之一。它语法简洁,文档详尽,社区活跃,适合初学者和高级交易者使用。本文将带你一步步使用 Backtrader 设置第一个算法交易策略。
如果你是 Backtrader 新手,请先查看我们的详细Backtrader 概览。
第一步:安装 Backtrader
你可以使用 pip 安装 Backtrader:
pip install backtrader
# 可选:你也可以安装 matplotlib 用于绘图,pandas 用于数据处理:
pip install matplotlib pandas
第二步:准备历史数据
Backtrader 支持 CSV 文件、Pandas DataFrame,甚至支持来自券商的实时数据。这里先加载一个 CSV 文件:
import backtrader as bt
import datetime
data = bt.feeds.YahooFinanceCSVData(
dataname='your-data.csv',
fromdate=datetime.datetime(2020, 1, 1),
todate=datetime.datetime(2023, 12, 31),
reverse=False
)
确保你的 CSV 包含如下列:Date, Open, High, Low, Close, Volume, Adj Close。
第三步:创建策略
继承自 bt.Strategy 创建策略类。这里实现一个简单的移动平均线交叉策略:
class SmaCross(bt.Strategy):
params = dict(period=20)
def __init__(self):
sma = bt.ind.SMA(period=self.p.period)
self.crossover = bt.ind.CrossOver(self.data.close, sma)
def next(self):
if not self.position:
if self.crossover > 0:
self.buy()
elif self.crossover < 0:
self.close()
第四步:设置回测引擎
现在创建 Cerebro 引擎 —— Backtrader 的核心:
cerebro = bt.Cerebro()
cerebro.addstrategy(SmaCross)
cerebro.adddata(data)
cerebro.broker.setcash(10000)
cerebro.broker.setcommission(commission=0.001)
第五步:运行策略
print('初始资产价值: %.2f' % cerebro.broker.getvalue())
cerebro.run()
print('最终资产价值: %.2f' % cerebro.broker.getvalue())
cerebro.plot()
你将看到策略的进出场点被可视化绘出,以及资产组合的表现。
第六步:扩展更多功能
随着经验积累,可以考虑添加:
- 止损和止盈逻辑
- 多种指标
- 自定义分析器(夏普比率、回撤等)
- 参数优化
Backtrader 本身支持所有这些功能,还能连接 Interactive Brokers 或 OANDA 进行实盘交易。
最后提示
- 保持策略模块化:分离逻辑、数据和参数
- 使用现实的假设来考虑滑点、手续费和延迟
- 在多个时间周期和市场环境下验证策略
了解更多
想深入了解 Backtrader 并阅读我们的详细评测,请访问本详细指南。
正在寻找合适的开源交易框架?从我们的全面比较和评测开始。
大胆回测,聪明交易。