教程 · 单套解锁 量化编程 · Python框架

Backtrader操作手册

使用手册 + 操作教程 共 14 章全部免费开放,一步一步把软件用起来;核心知识点 16 章,¥69 一次解锁讲透原理。

作者 枢汇安全课堂 更新 2026-10-14 阅读 43 收录 Python框架 · 30 章
本课程 · 单套解锁
¥69¥104
单品永久解锁 · 会员可阅 · 一次购买终身使用
✓使用手册 + 操作教程 共 14 章全文免费 ✓核心知识点 16 章,¥69 一次解锁 ✓支持电脑 / 手机 · 永久免费更新
注册后解锁核心知识点
免费学习区 使用手册 + 操作教程 共 14 章全部免费开放 · 核心知识点 16 章为付费内容 ¥69 解锁核心知识点
PART ONE

使用手册

功能在哪 · 是什么 · 怎么调出来

一、安装与版本分支(经典版 vs 社区分叉)

1、经典版(绝大多数中文教程指的就是它)

pip install backtrader # 经典版 mementum/backtrader
pip install matplotlib pandas # 绘图与数据处理依赖

经典版自带、无重依赖(除绘图需要 matplotlib)。原作者官方社区论坛因被滥用已关闭。

2、两个版本概念别搞混(2026 年现状)

分支来源特点
经典版 backtraderGitHub mementum/backtrader绝大多数中文资料教程对应的版本,纯回测,海外实盘接 IB/Oanda
readthedocs 新版(1.0+/1.1.0)社区活跃分叉(readthedocs.io 文档站)官方称性能优化(约快 45%)、完整 CCXT 加密实盘、CTP 集成、Plotly 绘图、917+ 测试;有国内镜像
backtrader-nextPyPI 另一个分叉独立维护的更新分支
白话:网上教程写的 import backtrader 基本都能跑——因为分叉对外 API 高度兼容。但"新版支持 CCXT/CTP 实盘"是社区分叉的口径,不是经典 mementum 原版的承诺。新手学经典版语法即可;真要用分叉的实盘能力,先去对应文档站确认。

二、与 vn.py / 米筐的错位对比

维度Backtradervn.py米筐
定位纯离线回测库本地事件驱动交易框架(实盘强)云端一体化投研
回测核心强项,灵活优雅有 CTA/组合回测云端回测
实盘经典版不接国内;分叉接 CCXT/CTPCTP/XTP/加密直连,最强期货经终端,股票待开放
数据自己喂 CSV/Pandas自己录/接数据商内置清洗数据
适合学术、纯策略研究、学回测原理程序员做期货实盘系统浏览器里做股票多因子研究
PART TWO

操作教程

一步一步 · 跟着做完一件事

三、核心架构:Cerebro 导演制

角色类白话
大脑/导演bt.Cerebro把数据、策略、券商、分析器全组织起来,喊"开拍"逐根跑
策略继承 bt.Strategy你的买卖规则,next() 每根 K 线被调用一次
数据喂料Data Feed(bt.feeds.*)CSV/Pandas/Yahoo 等历史行情
模拟券商cerebro.broker管钱、管订单、模拟成交
指标bt.indicators.*SMA/RSI/MACD 等 50+ 技术指标
分析器Analyzer跑完算夏普、回撤、胜率等
观察者Observer图上画资金曲线、买卖点(stdstats 默认开)
仓位器Sizer决定每笔买多少
白话:Cerebro 就像导演。它把数据(胶片)、策略(剧本)、模拟券商(场务管钱)都招呼好,然后一根 K 线一根 K 线地"过片"。你只需要写剧本(Strategy),别的交给它。

四、加载数据(Data Feeds)

Backtrader 不自带行情,要自己喂。最常用 CSV:

data = bt.feeds.GenericCSVData(
    dataname='rb2401.csv',
dtformat='%Y-%m-%d', # 日期格式
    datetime=0, open=1, high=2, low=3, close=4, volume=5,
)
cerebro.adddata(data)
Feed用途
GenericCSVData任意格式 CSV,自己指定列号
BacktraderCSVDataBacktrader 自带格式的 CSV
PandasData直接喂 pandas DataFrame
YahooFinanceCSVData / YahooFinance雅虎财经数据
白话:CSV 就是 Excel 导出的表格(日期、开高低收、成交量)。你要先准备好历史数据文件,或用 tushare/akshare 等工具下载好。Backtrader 只负责"读进来回放",不负责"帮你找数据"。

五、订单类型与下单逻辑

默认 self.buy() / self.sell() / self.close() 发市价单。要更精细,用 exectype:

订单类型常量白话
市价单bt.Order.Market(默认)下一根 K 线开盘价成交
收盘价单bt.Order.Close当根收盘价成交
限价单bt.Order.Limit到指定价或更好才成交
止损单bt.Order.Stop价格触及止损价转市价
止损限价单bt.Order.StopLimit触及止损价后挂限价单(plimit 指定限价)
追踪止损bt.Order.StopTrail价格反向移动时止损线跟着挪

## 限价买、止损卖
self.buy(exectype=bt.Order.Limit, price=100.0, size=10)
self.sell(exectype=bt.Order.Stop, price=95.0)
白话:默认市价单是"下一根开盘成交"——这是回测防未来函数的关键:你在第 N 根收盘看到信号,不能按第 N 根的收盘价成交(那是偷看未来),要按第 N+1 根开盘价。Backtrader 默认就是这么干的。

六、模拟券商:资金/手续费/滑点

cerebro.broker.setcash(100000) # 初始10万
cerebro.broker.setcommission(commission=0.0001) # 万1手续费
cerebro.broker.set_slippage_fixed(0.05) # 每笔固定滑点0.0

## cerebro.broker.setmargin(...)

Broker 模拟:现金、持仓、订单、手续费、滑点、保证金。想"信号当根收盘价就成交"可开 cheat_on_open / cheat_on_close(作弊模式,谨慎用,会让回测偏乐观)。

白话:手续费和滑点一定要设!很多新手回测曲线漂亮得离谱,一设手续费和滑点就原形毕露——这俩是回测真实性的底线。

七、Sizer 仓位管理

不想每次写死买几股,用 Sizer 自动定仓位:

cerebro.addsizer(bt.sizers.FixedSize, stake=10) # 每次固定10

股

## 或 PercentSizer 按资金百分比;也可继承 bt.Sizer 自写(如凯利公式)

内置 FixedSize(固定股数)、PercentSizer(按资金百分比)、AllIn(全仓)等;复杂仓位管理可继承 bt.Sizer 自写。

八、Analyzer 绩效分析器

跑完加 Analyzer 自动出指标:

cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name='sharpe')
cerebro.addanalyzer(bt.analyzers.DrawDown, _name='dd')
cerebro.addanalyzer(bt.analyzers.TradeAnalyzer, _name='ta')
results = cerebro.run()
strat = results[0]
print('夏普:', strat.analyzers.sharpe.get_analysis())
print('最大回撤:', strat.analyzers.dd.get_analysis())
print('交易统计:', strat.analyzers.ta.get_analysis())
Analyzer算什么
SharpeRatio夏普比率
DrawDown最大回撤、回撤长度
TradeAnalyzer胜率、盈亏比、连胜连亏等逐笔统计
Returns / AnnualReturn区间收益 / 分年度收益
TimeReturn逐期收益率序列
VWR / Calmar / Sortino其他风险调整指标
PyFolio对接 pyfolio 出机构级报告
白话:只看资金曲线是自欺欺人。加上 SharpeRatio + DrawDown + TradeAnalyzer 三件套,才知道策略"赚得稳不稳、回撤痛不痛、胜率高不高"。

九、Observer 与绘图

stdstats=True(默认)自动加上交易者最常用的 Observer:资金曲线(Value)、回撤(DrawDown)、买卖点标记(BuySell)、持仓(Trades)。cerebro.plot() 用 matplotlib 画出 K 线 + 指标 + 买卖箭头 + 资金曲线。

白话:图上红箭头买、绿箭头卖,资金曲线在最下面。跑 cerebro.plot() 一眼就能看出"金叉买入"到底在图上发生在哪、赚没赚钱。

十、参数优化(optstrategy)

Backtrader 自带参数寻优,可多进程并行:

cerebro.optstrategy(MaCross, fast_window=range(5, 21), slow_window=range(20, 61, 5)

)

## 配合 cerebro.run(maxcpus=4) 多核并行
白话警告:参数寻优很容易"过度拟合"——把历史曲线调到完美,实盘一塌糊涂。别把回测最漂亮那组参数直接当真钱策略。

十一、实盘能力(IB / Oanda / CCXT)

Backtrader 经典版本身不连国内 A 股/期货柜台。它的实盘 store 主要面向海外:

  • Interactive Brokers(盈透):经 TWS/IB Gateway 接海外股票期货;
  • Oanda:外汇实盘数据与交易;
  • 社区分叉(readthedocs 新版)宣传完整 CCXT 加密货币实盘(带 WebSocket)和 CTP 集成,可"从回测无缝切实盘"。
白话:经典 Backtrader 在国内就是个纯研究工具。想 A 股/期货实盘,国内主流是 vn.py / QMT;想加密货币实盘,可用社区分叉的 CCXT 集成。别指望经典版 pip 装完就能直连 CTP。

十二、隐藏功能与冷门技巧拾遗

  1. 默认市价单=下根开盘成交:这是 Backtrader 防未来函数的默认行为,别轻易改。
  2. 指标在 __init__ 建一次:在 next() 里重复建指标会极慢,指标必须在 __init__ 里实例化。
  3. [-1] 是上一根:Backtrader 里 [0] 是当前根、[-1] 是上一根(和 pandas 正好相反),写交叉信号时别搞反。
  4. TradeAnalyzer 比肉眼强:胜率、盈亏比、连胜连亏都在它的 get_analysis() 字典里。
  5. pyfolio 报告:bt.analyzers.PyFolio 直接对接 pyfolio 出机构级 tear sheet。
  6. 多数据同时喂:cerebro.adddata() 多次调用可同时回测多品种/多周期。
  7. resample/replay:可用 cerebro.resampledata 把分钟线重采样成日线回测。
  8. stdstats 可关:默认加资金曲线/回撤/买卖点 Observer,图太乱可 cerebro = Cerebro(stdstats=False)。
  9. 社区分叉有实盘:readthedocs 新版宣传 CCXT/CTP 实盘与 45% 提速,但经典 mementum 版没有——别混为一谈。
  10. Jupyter 里更顺:配合 %matplotlib inline,回测+画图+调参在 notebook 里闭环。
  11. addanalyzer 用 _name:多个同类分析器时用 _name 区分,之后 strat.analyzers.名字 取用。
  12. 自定义 Sizer:继承 bt.Sizer 写 size() 方法,可实现凯利公式、波动率仓位等高级仓位管理。

十三、2026 增量更新(深挖第2轮)

1、社区分叉 1.2.0(2026-03-15):CTP 实盘与 WebSocket 推送

  • 新增 CTP 期货交易支持(P0):readthedocs 分叉把国内 CTP 网关提到最高优先级。
  • 新增 WebSocket 订单推送(P1)与自适应速率限制器(P2);CCXT Broker 错误处理优化;回测性能再提约 15%。
  • 修复数据长度不一致导致回测提前终止等问题。

【提示】白话:本文上一轮只写到 1.1.0(CCXT WebSocket、Plotly、45% 提速);1.2.0 把 CTP 实盘从"宣传"推进到 P0 级,但仍是社区分叉口径,不是经典 mementum 版的承诺。

2、注意区分:backtrader.io 是另一款商业 SaaS(与 Python 库无关)

  • 2026-03-01 上线的 backtrader.io 是一个全新的订阅制交易工作台:连接券商账户、跟单交易(Copy Trading / Trading Floor)、跟单风控规则、绩效分析、交易日记(Journal Quick Entry / Pages)。
  • 它不是开源 pip install backtrader 那个回测库,而是网页 SaaS;本文讲的 Cerebro/双均线语法与它完全无关。

【提示】白话:搜"backtrader 2026"会搜到 backtrader.io 的跟单产品,别把它当成回测框架新版本;两者只是同名,一个是 Python 库,一个是网页交易 SaaS。

来源:分叉发布说明(中文)、backtrader.io Changelog、PyPI backtrader-next。

十四、2026 增量更新(深挖第5轮)

1、第三方精简分叉 slim-backtrader 2.2.0(2026-08-24)

  • 除前面写的 cloudQuant 主分叉(1.2.0,2026-03-15)与 backtrader-next(2.3.7,2026-03-26)外,PyPI 上还有一个精简重写分叉 slim-backtrader,最新 2.2.0 发布于 2026-08-24。
  • 它去掉了原版大量冗余模块、只保留核心回测/实盘链路,主打轻量依赖;API 用法与原版 backtrader 基本兼容(pip 包名 slim-backtrader)。

【提示】白话:原版 backtrader 已经停更,现在社区主要有三个分支——cloudQuant 主分叉(功能最全,带 CTP/WebSocket)、backtrader-next(smalinin 维护)、slim-backtrader(轻量精简版,8 月刚更到 2.2.0)。装的时候别装错包名。

来源:slim-backtrader 2.2.0(PyPI,2026-08-24)。

本站固定免责声明:本教程仅讲解 Backtrader 软件操作,不构成投资建议。回测业绩不代表未来,请谨慎决策。经典版与社区分叉的实盘/性能能力差异以各自官方文档为准;本文涉及分叉功能为社区口径,请勿直接当作生产承诺。
付费专享 · 核心知识点 16 章

继续阅读:核心知识点,搞懂原理

Backtrader操作手册 — 共 30 章,已免费阅读 14 章,剩余 16 章核心知识点讲透「为什么这样、点了会怎样」。

十五、数据源与频率
十六、回测引擎原理
十七、滑点与手续费建模
十八、参数优化与过拟合
十九、风险控制模块
二十、绩效评价指标
…等共 16 章核心内容
✍️ 注册后扫码购买 🔐 已有账号,去登录 单套 ¥69 永久 · 会员可阅
SERVICE & PRICING
服务收费说明 · 明码标价,无隐藏收费
全部课程统一 ¥39-69,买一套永久使用。以下为购买与使用的完整流程。
01先免费试读

每套教程的「使用手册」部分均可免费阅读,先确认内容是否适合自己再决定,不必盲买。

02扫码付款

选定课程后点「立即解锁」,页面展示收款二维码与客服微信,扫码转账即可,无需注册海外支付。

03获取卡密

付款完成后客服第一时间发送卡密号与卡密密码,站内消息与微信同步通知。

04兑换解锁

在用户中心「兑换卡密」输入卡密号与密码,系统即时解锁全部章节,无需二次付款。

一次付费,终身可用 · 解锁后课程永久留在账号里,不限次数、不限时间阅读 持续免费更新 · 平台改版、规则变化时课程同步修订
RECOMMEND
相关教程推荐 · 同栏目更多上手机会

💬 用户评价 (0)

🔒 登录并成为会员后可发表评价
还没有评价 · 成为第一个评价的人吧 🎯