介绍 #
欢迎使用 backtrader 文档!Backtrader 框架的目标是让您轻松上手和使用。
基本流程 #
使用 Backtrader 编写交易流程大致可以分为以下几个步骤:
- 创建策略类:继承
backtrader.Strategy
类,并设置策略的参数和指标,定义进出场逻辑。 - 实例化 Cerebro 引擎:将策略添加到引擎中。
- 加载数据:使用
cerebro.adddata
方法加载数据源。 - 执行回测:通过
cerebro.run()
方法运行回测。 - 绘制结果:如果需要视觉反馈,可以使用
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 力求让您的量化交易体验更加流畅和高效,希望您在使用过程中发现更多有趣和实用的功能!