ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

backtrader 使用指南:基于 Python 的量化回测与实盘交易平台详解

backtrader 使用指南:基于 Python 的量化回测与实盘交易平台详解 金融科技数据分析【免费下载链接】backtraderPython Backtesting library for trading strategies项目地址https://gitcode.com/gh_mirrors/ba/backtrader点击查看免费下载backtrader 是一个用 Python 编写的量化回测与实盘交易平台内置 120 技术指标、完整的模拟券商含滑点与成交量填充、数据重采样/重放、策略分析与绘图能力覆盖从 CSV 到 Interactive Brokers 的多种数据源与实盘接入。读完本文你将掌握 backtrader 的核心架构、最小可运行策略的编写方法以双均线交叉为例、安装方式与版本号命名规则并能直接上手仓库中的官方示例。项目概况backtrader 是一个同时面向**回测backtesting与实盘交易Live Trading**的 Python 平台。其核心设计目标是以数据为中心通过Cerebro大脑/引擎统一协调数据源feeds、策略strategies、券商模拟broker、指标indicators、分析器analyzers与绘图plot等模块让开发者用很少的代码即可搭建一套完整的交易系统。在仓库中backtrader 的顶层包结构backtrader/体现了这一分层思想backtrader/cerebro.py引擎主入口负责调度数据、策略与回测循环backtrader/strategy.py策略基类与SignalStrategy信号策略基类backtrader/feeds/各类数据源CSV、Yahoo、pandas、Oanda、IB 等backtrader/indicators/内置技术指标库backtrader/brokers/与backtrader/stores/模拟券商与实盘交易通道backtrader/analyzers/收益、夏普比率、SQN、回撤等绩效分析器backtrader/observers/Broker、买卖点、回撤等绘图观察器backtrader/filters/数据过滤器Renko、Heikin-Ashi、日线切分等。五分钟上手双均线交叉策略README 给出了一个完整的双均线交叉SMA Crossover示例这是 backtrader 最经典的入门代码。它展示了信号策略SignalStrategy的典型写法用signal_add把指标信号直接绑定为交易信号无需手写next()下单逻辑。from datetime import datetime import backtrader as bt class SmaCross(bt.SignalStrategy): def __init__(self): sma1, sma2 bt.ind.SMA(period10), bt.ind.SMA(period30) crossover bt.ind.CrossOver(sma1, sma2) self.signal_add(bt.SIGNAL_LONG, crossover) cerebro bt.Cerebro() cerebro.addstrategy(SmaCross) data0 bt.feeds.YahooFinanceData(datanameMSFT, fromdatedatetime(2011, 1, 1), todatedatetime(2012, 12, 31)) cerebro.adddata(data0) cerebro.run() cerebro.plot()代码逻辑拆解如下bt.ind.SMA(period10)与bt.ind.SMA(period30)创建两条简单移动平均线。SMA是MovingAverageSimple的别名见 backtrader/indicators/sma.py其计算式为movav Sum(data, period) / period。bt.ind.CrossOver(sma1, sma2)检测两条均线的交叉当快线10 期上穿慢线30 期时输出 1下穿时输出 -1。self.signal_add(bt.SIGNAL_LONG, crossover)将交叉信号注册为多头开仓信号。SIGNAL_LONG等信号类型定义在 backtrader/signal.py 中完整的信号类型还包括SIGNAL_SHORT、SIGNAL_LONGEXIT、SIGNAL_LONG_ANY、SIGNAL_LONG_INV等共 14 种分别对应做多、做空、平多、任意方向开多/开空等语义。bt.feeds.YahooFinanceData从 Yahoo 拉取 MSFT 的日线数据并用fromdate/todate限定区间。cerebro.run()执行回测cerebro.plot()渲染带交易标记的图表。注意README 中注明Yahoo 数据接口在 2018-11-16 之后经测试可正常通过 Web 接口API v7下载但仍建议把数据先落盘再回测以避免网络波动影响回测结果。命令行可参数化的版本README 指出该示例收录在仓库的sigsmacross目录中sigsmacross2.py是上述不可参数化的完整示例而 samples/sigsmacross/sigsmacross.py 则是可从命令行配置的版本。samples/sigsmacross/sigsmacross.py 对策略做了三点增强非常值得借鉴参数化均线周期通过params dict(sma110, sma220)定义可调参数在__init__中用self.params.sma1引用订单与交易回调重写notify_order打印已执行订单order.executed.dt/size/price重写notify_trade在交易平仓trade.isclosed时打印盈亏trade.pnlcomm命令行入口runstrat()用argparse解析--dataYahoo 代码默认 YHOO、--fromdate/--todate日期区间、--cash初始资金默认 10000、--stake每笔股数默认 1、--strat传入策略参数与--plot绘图参数例如--plot stylecandle可绘制蜡烛图。运行方式python samples/sigsmacross/sigsmacross.py --data YHOO --fromdate 2011-01-01 --todate 2012-12-31 --cash 10000 --plot核心功能特性一览README 将 backtrader 的能力概括为以下几个维度仓库源码均可逐一印证能力维度具体内容仓库依据实盘数据与交易Interactive Brokers需IbPy建议安装pytz、Visual Chart需 comtypes fork 分支建议pytz、Oanda需oandapyREST APIv20 实现时未支持流式推送backtrader/stores/ibstore.py、backtrader/stores/oandastore.py、backtrader/stores/vcstore.py数据源CSV/文件、在线来源、pandas、blazebacktrader/feeds/pandafeed.py、backtrader/feeds/blaze.py、backtrader/feeds/btcsv.py数据过滤器将日线拆分为模拟盘中片段、Renko 砖形图等backtrader/filters/多数据多策略同时支持多数据源与多策略backtrader/cerebro.py多时间框架同一策略同时消费多个时间周期的数据samples/mixing-timeframes/mixing-timeframes.py重采样与重放内置 Resampling 与 Replayingbacktrader/resamplerfilter.py指标库内置 120 指标支持 TA-Lib需安装 python ta-libbacktrader/indicators/自定义指标基于Indicator基类快速开发backtrader/indicator.py分析器TimeReturn、SharpeRatio、SQN、DrawDown 等以及 pyfolio 集成已标记 deprecatedbacktrader/analyzers/佣金方案灵活定义佣金结构股票、期货、保证金等backtrader/commissions/、backtrader/comminfo.py订单类型Market、Close、Limit、Stop、StopLimit、StopTrail、StopTrailLimit、OCO、bracket 订单、滑点、成交量填充策略、期货类连续现金调整backtrader/order.py、backtrader/broker.py、backtrader/fillers.py仓位管理Sizers 自动计算下单数量backtrader/sizers/作弊模式Cheat-on-Close 与 Cheat-on-Open在收盘/开盘价确认前即成交backtrader/strategy.py调度与日历Schedulers定时器与交易日历backtrader/timer.py、backtrader/tradingcal.py绘图基于 matplotlib需单独安装backtrader/plot/数据过滤器示例以 backtrader/filters/renko.py 为例Renko 过滤器会将普通 K 线重构成砖形图每块砖代表一个固定幅度的价格变动samples/renko/renko.py 展示了它的完整用法backtrader/filters/heikinashi.py 则提供 Heikin-Ashi 平滑 K 线。数据过滤器通过data.addfilter()挂载见 backtrader/feed.py 中的addfilter/addfilter_simple。内置指标规模README 称内置指标为 122 个并提供了指标参考文档。从仓库源码看backtrader/indicators/ 目录下除__init__.py外共有 49 个模块涵盖 SMA/EMA/WMA/SMMA/DEMA/TEMA/ZLEMA/HMA 等均线族、MACD/RSI/Stochastic/CCI/ATR/ADX/Williams/Bollinger/Ichimoku/KAMA/TRIX/TSI 等经典技术指标另有 backtrader/indicators/contrib/vortex.py 等社区贡献指标。指标名在包初始化时以别名注册见 backtrader/indicators/init.py因此代码中bt.ind.SMA与bt.ind.MovingAverageSimple等价。分析器与绩效评估backtrader/analyzers/ 提供了TimeReturn时间收益、SharpeRatio夏普比率、SQN系统质量指数、DrawDown回撤、TradeAnalyzer、Calmar、VWR等分析器通过cerebro.addanalyzer()挂载运行后在策略中用self.analyzers.getbyname()获取结果。pyfolio集成位于 backtrader/analyzers/pyfolio.pyREADME 明确标注该集成已deprecated弃用建议新项目优先使用内置分析器。安装方式backtrader 是自包含的库除绘图外无任何外部依赖README 原文self-contained with no external dependencies (except if you want to plot)。从 PyPI 安装# 仅安装核心库 pip install backtrader # 连带安装 matplotlib用于绘图 pip install backtrader[plotting][plotting]这一可选依赖组定义在 setup.py 的extras_require中等价于额外安装matplotlib。注意matplotlib 的最低版本要求为 1.4.1。实盘通道的附加依赖Interactive BrokersIbPy不在 PyPI 上需要从源码安装pip install githttps://github.com/blampe/IbPy.git若系统没有git可改为pip install https://github.com/blampe/IbPy/archive/master.zipVisual Chart需要一个comtypes的 fork 分支等待上游合并 PR并建议安装pytzOanda需要oandapyTA-Lib需要 Python 版ta-lib具体依赖细节以官方文档为准。从源码使用仓库根目录下的 backtrader/ 目录本身就是完整的包可以直接把它放到你的项目目录中使用# 将源码中的 backtrader 目录复制/放入你的项目这种零安装方式适合快速体验tools/bt-run.py 是仓库附带的批处理运行脚本btrun控制台命令入口则定义在 setup.py 的entry_points中对应 backtrader/btrun/btrun.py。Python 版本支持官方支持 Python 3.2见 setup.py 中Programming Language :: Python :: 3.2起的分类器列表同时兼容pypy 与 pypy3但 pypy 下不支持绘图matplotlib 在 pypy 上没有支持仅此一项功能受限。版本号命名规则backtrader 的版本号格式为X.Y.Z.I各字段含义如下字段含义X主版本号。除非发生重大变更如全面改用 numpy 重构否则应保持稳定Y次版本号。新增完整新功能、或发生不兼容的 API 变更时递增Z修订版本号。文档更新、小改动、小 bug 修复时递增I已内置的指标数量Indicators这意味着版本号最后一段直接反映了指标库的规模增长。仓库当前版本定义在 backtrader/version.py为__version__ 1.9.78.123即主版本 1、次版本 9、修订 78、内置指标 123 个与 setup.py 引用的版本一致。可通过如下方式在代码中读取import backtrader as bt print(bt.__version__) # 例如 1.9.78.123仓库中的示例与数据除 README 提到的双均线示例外仓库还提供了大量可运行样例是学习 backtrader 的最佳资料samples/data-resample/data-resample.py 与 samples/data-replay/data-replay.py重采样与重放samples/bracket/bracket.pybracket母子订单samples/optimization/optimization.py参数优化cerebro.optstrategysamples/order_target/order_target.pyorder_target_percent等目标仓位下单samples/stoptrail/trail.py移动止损StopTrailsamples/slippage/slippage.py滑点设置samples/commission-schemes/commission-schemes.py佣金方案samples/data-pandas/data-pandas.pypandas DataFrame 数据源samples/renko/renko.py 与 samples/daysteps/daysteps.py数据过滤器samples/observers/ 与 samples/observer-benchmark/observer-benchmark.py绘图观察器与基准对比samples/writer-test/writer-test.pyCSV 输出器samples/tradingcalendar/交易日历tcal.py、tcal-intra.pysamples/timers/定时器调度scheduled.py、scheduled-min.py。仓库 datas/ 目录提供了 Yahoo 格式的历史数据文件如orcl-1995-2014.txt、yhoo-1996-2015.txt、nvda-1999-2014.txt等配合bt.feeds.YahooFinanceCSVData可离线复现上述示例规避在线数据源的不确定性。配套测试用例集中在 tests/例如test_ind_sma.py、test_ind_rsi.py、test_order.py、test_position.py、test_analyzer-sqn.py等可用于验证你对某个指标或组件的理解是否符合官方实现。总结backtrader 用极简的 API 封装了回测与实盘之间的共性逻辑Cerebro负责调度Strategy/SignalStrategy负责决策broker负责撮合与资金管理indicators/analyzers/observers分别提供信号、评估与可视化。README 中的双均线示例虽短却串起了数据源、指标、信号策略与绘图这四条核心主线。上手建议先离线跑通sigsmacross与data-resample等示例再逐步引入佣金、滑点、sizer 与分析器最后再考虑接入 IB/Oanda 等实盘通道需按 README 要求补齐IbPy、pytz、oandapy等附加依赖。赞分享金融科技数据分析【免费下载链接】backtraderPython Backtesting library for trading strategies项目地址https://gitcode.com/gh_mirrors/ba/backtrader点击查看免费下载相关推荐Backtrader量化交易框架Python回测神器的终极指南 Backtrader量化交易框架Python回测神器的终极指南 想要在金融市场中获得稳定收益Backtrader量化交易框架是你的不二选择作为一款强金融科技数据分析Backtrader入门指南Python量化交易回测框架快速上手Backtrader入门指南Python量化交易回测框架快速上手 想要学习Python量化交易Backtrader绝对是你的最佳选择 这个功能强大的开金融科技数据分析Backtrader终极指南快速掌握Python量化交易回测框架Backtrader终极指南快速掌握Python量化交易回测框架 想要进入量化交易领域却不知从何开始Backtrader作为Python生态中最强大的开源回金融科技数据分析上一篇Deep Agents UI性能优化提升智能对话响应速度的10个技巧下一篇cs-408四门课 50 余份 PDF 与 OneNote 笔记一次 clone 拿齐创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表