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 并阅读我们的详细评测,请访问本详细指南

正在寻找合适的开源交易框架?从我们的全面比较和评测开始。

大胆回测,聪明交易。