Backtrader 中文文档

GitHub Gitee Python License i18n

Backtrader 是一个功能丰富的 Python 量化交易框架,支持回测和实盘交易, 提供 50+ 技术指标、20+ 数据源、多种经纪商和全面的分析工具。

Tip

📖 本文档同时提供 English (英文) 版本。

✍️ 作者博客: yunjinqi.blog.csdn.net


为什么选择 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。

https://github.com/cloudQuant/backtrader
Gitee (国内镜像)

国内镜像,访问更快速、更稳定。

https://gitee.com/yunjinqi/backtrader


索引和表格