欢迎大家订阅《教你用 Python 进阶量化交易》专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下:
第一篇《管理概率==理性交易》
第二篇《线性回归拟合股价沉浮》
第三篇《最大回撤评价策略风险》
第四篇《寻找最优化策略参数》
第五篇《标记A股市场涨跌周期》
第六篇《Tushare Pro接口介绍》
第七篇《装饰器计算代码时间》
第八篇《矢量化计算KDJ指标》
第九篇《移植量化交易小工具》
第十篇《统计学预测随机漫步》
第十一篇《TA-Lib库扩展介绍》
第十二篇《股票分笔数据跨周期处理》
第十三篇《TA-Lib库量价指标分析》
第十四篇《ATR在仓位管理的应用》
第十五篇《扒一扒量化回测常见陷阱》
第十六篇《量化回测工具更新版1》
第十七篇《GUI控件在回测工具上的添加》
第十八篇《文本框显示Tushare股票信息》
第十九篇《建立基于TA-Lib的指标库》
第二十篇《爬虫抓取股票论坛帖子》
第二十一篇《欧奈尔RPS指标的计算》
第二十二篇《GUI显示股票RPS-TOP10》
第二十三篇《Markowitz实现股票最优组合》
第二十四篇《详解wxPython之Toolbar的使用》
第二十五篇《GUI工具实现excel功能》
第二十六篇《自定义量化交易回测框架》
第二十七篇《股票数据的除权和复权》
第二十八篇《还用盯盘吗?远程提醒你下单》
为了将专栏中分散的知识点贯穿起来,笔者在专栏的末尾小节《制作自己的量化交易工具》中分享了早期制作的一个简易版量化交易小工具,希望大家能够通过调试代码的方式掌握相关的知识。
目前在场外篇第9篇中已经移植到了Python3.7x版本上,代码已更新至课程的github中供大家下载使用。
本次场外篇来介绍下传说中的backtrader
backtrader属于功能相对完善的本地版Python量化回测框架。既然业界好评如云,我们作为量化交易者理应集所有好用的工具于一身,就让我们来体验一下这个框架。
backtrader的使用方法在官方文档上介绍的挺详细的。大体分为两步:
- 创建一个策略,创建一个策略类,这个类要继承自backtrader.Strategy,然后就可以自定义里面的方法。
- 策略类中有一个类属性params,用于定义一些在策略中可调参数值
- backtrader.indicators内置了许多指标的计算方法,比如移动平均线、MACD、RSI等等,使用时只需要实例化策略中会使用到的技术指标即可
- next函数中编写交易策略,也就是进入市场和退出市场的逻辑
- 创建一个策略决策引擎(原文是Cerebro,这里我用决策这个词)
- 把定义的策略注入到决策引擎之中
- 把行情数据注入到决策引擎之中
- 可视化方式反馈回测结果
以上是框架中核心的部分,当然了,其他还有很多可扩展的功能。
backtrader的数据加载非常灵活,此处我们使用DataFrame格式数据,如下所示:
"""
High Low Open Close Volume OpenInterest
trade_date
2017-01-03 8.12 8.07 8.07 8.12 179801.01 0
2017-01-04 8.16 8.09 8.13 8.15 166242.35 0
2017-01-05 8.23 8.13 8.15 8.17 222902.53 0
2017-01-06 8.19 8.12 8.18 8.13 128549.96 0
2017-01-09 8.15 8.08 8.13 8.13 136700.04 0
"""
构建策略的类是继承backtrader.Strategy,然后根据自己的需要重写其中的方法即可。比如__init__、log、notify_order、notify_trade、next等等。
关于策略中的指标,backtrader内置了很多类型,直接调用即可。比如移动平均线:
self.sma = bt.indicators.SimpleMovingAverage(
self.datas[0], period=self.params.maperiod)
由于内置了talib模块,也可以这么调用:
# 内置了talib模块
self.sma = bt.talib.SMA(self.data,
timeperiod=self.params.maperiod)
next方法中,我们实现一个简单的双均线策略作为交易的逻辑。比如买入条件是MA5上穿MA10;卖出条件是MA10下穿MA5。
关于策略回测,把数据和策略添加到Cerebro中之外,还有设置一些参数。比如broker的设置,像初始资金、交易佣金。也可以用addsizer设定每次交易买入的股数。
回测结束后返回得到执行交易策略时积累的总资金。此处我们回测的是新希望 2017年1月1日到2020年1月1日期间的策略执行效果,最终资金从10000变成了15941.95。
由于backtrader内置了Matplotlib,因此我们也可以可视化回测的效果,如下所示:
总的来说,对于刚进阶的朋友来说是足够使用了,那么无法满足高阶玩家的需求怎么办呢?可以继承框架自己扩展。
关于以上内容更多的探讨欢迎大家加入专栏交流群。更多的量化交易内容欢迎大家订阅专栏阅读!!
热门评论
helloworld