【答读者问27】backtrader不支持最新版本的matplotlib怎么办以及backtrader画图的解决方案
作者:yunjinqi   类别:    日期:2021-11-28 22:10:18    阅读:2082 次   消耗积分:0 分    

backtrader的版本由于相对比较完善了,所以最近更新的比较慢,这就导致了一个问题,如果依赖的模块进行更新了,就可能导致backtrader的某些功能不可用,即版本兼容问题。比如,当使用最新版本的matplotlib的时候,在backtrader中,使用cerebro.plot()进行画图会保持,出现兼容问题,如果把matplotlib的版本进行倒退到3.1.2,就可以使用了。

简单点的解决方式

直接尝试把matplotlib的版本倒退到3.1.2

这种向后兼容的方式是不合理的,但是可以作为权宜之计,暂时使用。比较合理的方式是修改backtrader的源码,使得backtrader能够使用最新版的matplotlib。

尝试从backtrader上进行修改

直接在backtrader.plot.locator上进行修改,把从matplotlib.dates中引用的warnings换成直接引用就好了。如下所示

修改完这两行代码之后,就可以直接使用最新版的matplotlib了,目前使用的是3.5.0版本,没有报错。

import datetimefrom matplotlib.dates import AutoDateLocator as ADLocatorfrom matplotlib.dates import RRuleLocator as RRLocatorfrom matplotlib.dates import AutoDateFormatter as ADFormatterfrom matplotlib.dates import (HOURS_PER_DAY, MIN_PER_HOUR, SEC_PER_MIN,
                              MONTHS_PER_YEAR, DAYS_PER_WEEK,
                              SEC_PER_HOUR, SEC_PER_DAY,
                              num2date, rrulewrapper, YearLocator,
                              # MicrosecondLocator, warnings)
                              MicrosecondLocator)import warnings from dateutil.relativedelta import relativedeltaimport numpy as np

谈一谈backtrader画图的替代方案

这个世界上不存在真正完美的东西。作为一个量化投资框架,使用matplotlib进行画图分析,确实有些丢面子,因为好多好用的功能,在matplotlib上实现起来特别难,所以,建议考虑其他的数据展示方案。

为了解决这个问题,很多人也进行过尝试,其中一个比较好的方案是backtrader_plotting,使用画图工具bokeh,对相关数据进行形象化展示,但是最近应该很长时间没有维护了,使用起来是有bug的。如果您想要使用bokeh作为您数据分析的工具,可以考虑在这个包的基础上改一改bug,然后使用,避免重复造轮子。

画图工具

当时想要形象化展示backtrader的回测结果的时候,bokeh是一个备选方案,还有pyechart,这个也是非常有名的画图工具;另外一个备选方案是plotly和dash,最终的选择是使用了plotly和dash作为画图工具和数据分析展示工具,在公司开发了一个backtrader的回测结果分析小脚本,暂时不太好开源。

这三个工具的优劣,不太好说。看起来,plotly和dash更贴近金融一些,所以选择的是这个。

前后端框架形成网页

使用简单的画图工具,有时候可能过于简略了,不能完全满足我们的需要,可以考虑使用一些前端框架和后端框架,做一套比较精美的数据分析、回测结果分析的网页。前端一般使用html、css、vue,后端一般使用flask、fastapi、django等。

客户端界面

也有一些模块支持创建图形化界面,比如python的thinker,但是考虑下性能,还是不建议了。可以考虑QT,比如pyqt6(号称最强大的客户端界面),做成类似于vnpy的那种界面。

使用画图工具仅仅是权宜之计,可以考虑后两种方案,相对来说,使用起来会比较舒服。但是,任何事情都有两面性,使用起来舒服的东西,开发出来一般需要更多的时间和精力。

后期我可能会用flask写一个集历史数据分析、回测结果分析的小模块,作为backtrader的补充。前面已经实现了一个简单的用flask展示pyfolio回测结果的小脚本,后续会进一步完善改进。

————————————————

版权声明:本文为CSDN博主「云金杞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:【答读者问27】backtrader不支持最新版本的matplotlib怎么办以及backtrader画图的解决方案_云金杞-CSDN博客

发布于 11-20 11:22


修改于 12-2 22:43  用于测试蜗牛笔记的文章修改功能是否实现了

版权所有,转载本站文章请注明出处:云子量化, http://www.woniunote.com/article/12
上一篇:【答读者问27】backtrader不支持最新版本的matplotlib怎么办以及backtrader画图的解决方案
下一篇:【思考1】为什么回测很好的策略在实盘的时候表现却不好?