MacOS-pycharmbacktrader 踩坑记--Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

MacOS-pycharm–backtrader 踩坑记

Error:exit code 139 (interrupted by signal 11: SIGSEGV)

问题:在使用backtrader做量化回测时候,虽然可以算出正常的夏普比率和回撤幅度,但是使用自带的cerebro.plot()画图时会报错后退出,具体错误为:

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
但是,但是,但是,在jupyter notebook中可以正常画图(matplotlib==3.2.0版本),太诡异了……

原因分析:

在网上看了很多分析,有的分析在python或者C++中碰到的内存泄露问题139错误是Linux错误代码发现解决内存泄露问题超出了我目前的能力……后来在发现有两种方法:
一、akshare Backtrader 基础教程发现可能是matplotlib版本问题,需要用到matplotlib==3.2.2版本。
二、使用backtrader_plotting、quantstats等三方可视化模块

真正原因得找matplotlib的源码去看看,但是暂时没有时间和精力去搞了。

解决办法:

1.安装matplotlib==3.2.2版本(我的python版本是3.7的)
果然重新装了这个版本后就正常出图:

2.使用backtrader_plotting模块,输出一个html文件:bt_bokeh_plot_0.html,最后使用浏览器打开即可看到回测结果。
2.1在合适的位置加入以下代码:

  from backtrader_plotting import Bokeh
  from backtrader_plotting.schemes import Tradimo
    # ……………………其他策略代码
    b = Bokeh(style='bar', plot_mode='single', scheme=Tradimo())
    cerebro.plot(b)

2.2 最后自动跳出一个html文件,然后在Chrome中打开可查询回测结果。

MacOS-pycharmbacktrader 踩坑记--Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)_第1张图片

最后总结:Python虽然好用,但是版本之间的坑太多了,以后还是得用C++(谁能保证C++的坑不多,但是不妨一试!)

你可能感兴趣的:(macos,python,matplotlib)