Backtrader 使用指南
Backtrader 是一款功能强大的 Python 量化交易回测框架,支持策略回测、实盘交易、多数据源、多时间周期等核心功能,适用于股票、期货、加密货币等各类交易品种。以下从核心概念、快速上手、进阶用法三个维度展开讲解。
一、核心概念
1. 核心组件
| 组件 | 作用 |
|---|---|
| Cerebro | 主引擎,负责整合策略、数据、资金、佣金等,执行回测/交易 |
| Strategy | 策略类,自定义交易逻辑(开仓、平仓、止损止盈等) |
| Data Feed | 数据源,支持 CSV、Yahoo Finance、Tushare 等,可自定义多时间周期数据 |
| Broker | 经纪商模拟,处理订单执行、佣金计算、资金管理 |
| Sizer | 仓位管理,控制每次交易的手数/股数 |
| Indicator | 技术指标,内置 MA、RSI、MACD 等百余种指标,也可自定义 |
2. 核心流程
数据加载 → 策略定义 → Cerebro 配置(资金、佣金、sizer)→ 运行回测 → 分析结果
二、快速上手(入门示例)
1. 安装
pip install backtrader
# 如需支持 pandas/TA-Lib 扩展,安装依赖
pip install pandas ta-lib
2. 最小示例:简单均线策略
策略逻辑:价格上穿 5 日均线买入,下穿 5 日均线卖出。
import backtrader as bt
import backtrader.feeds as btfeeds
# 1. 定义策略
class MA_Cross_Strategy(bt.Strategy):
# 策略参数(可外部传入,方便优化)
params = (('ma_period', 5),)
def __init__(self):
# 初始化均线指标
self.ma = bt.indicators.SimpleMovingAverage(
self.data.close, period=self.params.ma_period
)
# 记录订单状态(避免重复下单)
self.order = None
# 每次行情更新时触发(按 Bar 执行)
():
.order:
.position .data.close[] > .ma[]:
.order = .buy()
()
.position .data.close[] < .ma[]:
.order = .sell()
()
cerebro = bt.Cerebro()
cerebro.addstrategy(MA_Cross_Strategy, ma_period=)
data = btfeeds.GenericCSVData(
dataname=,
dtformat=,
datetime=,
=,
high=,
low=,
close=,
volume=,
openinterest=-
)
cerebro.adddata(data)
cerebro.broker.setcash()
cerebro.broker.setcommission(commission=)
cerebro.addsizer(bt.sizers.FixedSize, stake=)
()
cerebro.run()
()
cerebro.plot()

