Backtrader 中文文档¶
Backtrader 是一个功能丰富的 Python 量化交易框架,支持回测和实盘交易, 提供 50+ 技术指标、20+ 数据源、多种经纪商和全面的分析工具。
为什么选择 Backtrader?¶
📚 易于学习
学习曲线平缓,API 设计直观。 5 分钟即可运行你的第一个策略。
⚡ 高性能
支持向量化 (runonce) 和事件驱动 (runnext)
两种模式,比原版快 45% 以上。
🧩 组件丰富
50+ 指标、17+ 分析器、21+ 数据源 — 开箱即用,满足各种需求。
📊 专业可视化
支持 Plotly、Bokeh、Matplotlib, 一键生成 HTML/PDF/JSON 报告。
🌐 实盘就绪
支持盈透证券 (IB)、CCXT (加密货币)、 CTP (中国期货) — 回测到实盘无缝切换。
🔧 高度可扩展
自定义指标、分析器、数据源和经纪商。 插件友好的架构设计。
快速开始¶
git clone https://github.com/cloudQuant/backtrader.git
cd backtrader && pip install -U .
import backtrader as bt
class SmaCross(bt.Strategy):
params = (('pfast', 10), ('pslow', 30))
def __init__(self):
sma_fast = bt.indicators.SMA(period=self.p.pfast)
sma_slow = bt.indicators.SMA(period=self.p.pslow)
self.crossover = bt.indicators.CrossOver(sma_fast, sma_slow)
def next(self):
if not self.position and self.crossover > 0:
self.buy() # 金叉买入
elif self.position and self.crossover < 0:
self.close() # 死叉卖出
cerebro = bt.Cerebro()
data = bt.feeds.GenericCSVData(
dataname='data.csv',
datetime=0, open=1, high=2, low=3,
close=4, volume=5, dtformat='%Y-%m-%d')
cerebro.adddata(data)
cerebro.addstrategy(SmaCross)
cerebro.broker.setcash(100000) # 初始资金
cerebro.broker.setcommission(commission=0.001) # 手续费
cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name='sharpe')
cerebro.addanalyzer(bt.analyzers.DrawDown, _name='drawdown')
results = cerebro.run()
strat = results[0]
print(f"夏普比率: {strat.analyzers.sharpe.get_analysis()}")
cerebro.plot(backend='plotly')
源代码¶
GitHub
主仓库 — Issues、Pull Requests、CI/CD。
Gitee (国内镜像)
国内镜像,访问更快速、更稳定。
快速入门
进阶主题
教程
API 参考