介绍

介绍 #

欢迎使用 backtrader 文档!Backtrader 框架的目标是让您轻松上手和使用。

基本流程 #

使用 Backtrader 编写交易流程大致可以分为以下几个步骤:

  1. 创建策略类:继承 backtrader.Strategy 类,并设置策略的参数和指标,定义进出场逻辑。
  2. 实例化 Cerebro 引擎:将策略添加到引擎中。
  3. 加载数据:使用 cerebro.adddata 方法加载数据源。
  4. 执行回测:通过 cerebro.run() 方法运行回测。
  5. 绘制结果:如果需要视觉反馈,可以使用 cerebro.plot() 方法绘制结果图表。

Backtrader 具有高度的可配置性,希望您觉得该平台有用且有趣。

特性一览 #

实时交易 #

Backtrader 支持与多种经纪商进行实时交易,包括 Interactive Brokers、Oanda v1 和 VisualChart。此外,还支持与第三方经纪商如 Alpaca、Oanda v2 和 ccxt 的集成。

数据索引 #

使用 0 表示当前时刻,避免前视偏差。负值(如 -1、-2)表示最后时刻,与 Python 的定义一致,而正索引表示未来(仅在事件模式下测试代码时会出错)。

事件驱动和向量化 #

Backtrader 的交易逻辑和经纪商操作是逐事件驱动的。指标计算尽可能向量化,支持预加载源数据。可以在仅事件模式下运行,无需预加载数据,如同实时交易。

多种数据源支持 #

支持多种数据源,包括 CSV、数据库源、YahooFinance、Interactive Brokers 和 Oanda v1 等。可以同时运行多个同步数据源,支持多种时间框架,并集成重采样和重放功能。

内置经纪商功能 #

Backtrader 支持多种订单类型,如市价单、限价单、止损单等,支持多空交易,用户可以自定义佣金方案和信用利息,提供针对期货类工具的连续现金调整,支持基金模式和自定义滑点策略。

策略逻辑 #

在执行操作前,Backtrader 自动计算预热期。支持多个策略并行运行,提供多种订单生成方法,并支持事件通知功能,包括新数据、数据馈送提供者、订单、交易和计时器等。

丰富的指标库 #

Backtrader 提供超过 122 种内置指标,包括多种移动平均线(SMA、EMA 等)和经典指标(MACD、随机指标、RSI 等),并集成 ta-lib 库。

性能分析器 #

Backtrader 内置多个性能分析器,包括时间收益、交易分析器、夏普比率、VWR 和 SQN 等,帮助用户全面评估策略表现。

绘图功能 #

Backtrader 支持通过一个命令自动绘图(需要安装 Matplotlib),用户可以自定义图表样式,方便直观地评估策略表现。

持仓管理和观察者 #

Backtrader 提供智能自动化持仓策略和可绘制的观察者,帮助用户实时监控系统中的所有内容(通常用于绘制统计数据)。

其他功能 #

Backtrader 还支持定期重复操作的计时器、交易日历和时区管理功能,全面满足用户的需求。

纯 Python 实现 #

Backtrader 完全使用 Python 编写,无需外部库,采用面向对象技术,便于拼接各个模块。运算符重载提供自然语言构造,例如:

av_diff = bt.ind.SMA(period=30) - bt.ind.SMA(period=15)

其中 av_diff 表示 30 和 15 周期的 SMA 差值。对于无法重载的语言构造(如 and、or、if),Backtrader 提供等效函数以确保功能不丢失,例如:

av_and = bt.And(av_diff > 0, self.data.close < bt.ind.SMA(period=30))

Backtrader 力求让您的量化交易体验更加流畅和高效,希望您在使用过程中发现更多有趣和实用的功能!