利用Backtrader进行期权回测之五:用backtrader_plotting查看回测结果

backtrader_plotting是一个扩展库,用来增强backtrader的绘图功能。它不仅功能更加强大,比如能够把结果分成多个Tab显示,而且显示效果也更加优雅美观。所以推荐大家使用这个,而不是backtrader缺省的plot功能。

安装backtrader_plotting

backtrader_plotting可以通过pip进行安装:

pip install backtrader_plotting

替换backtrader的plot功能

backtrader_plotting的使用也很简单。在前一篇文章的例子中,显示回测结果的代码是这样的:

cerebro.plot()

如果使用backtrader_plotting,需要把代码改成这样:

from backtrader_plotting import Bokeh
from backtrader_plotting.schemes import Tradimo

# 其它回测代码
# ...

b = Bokeh(style='bar', plot_mode='single', scheme=Tradimo())
cerebro.plot(b)

下面是backtrader_plotting的执行结果。

  • 账户资产变化情况

图1:账户资产变化情况

  • K线

图2:K线

设置不显示K线

在实际的回测中,通常需要设置为不显示K线。因为实际的回测通常包含几百个甚至更多的期权,把每个期权的K线都画出来,既费时也没有必要。

backtrader关闭K线的方法,是把每一个数据流的plotinfo.plot属性设置成False。如下面的代码所示:

# 设置回测结果中不显示期权K线
for d in cerebro.datas:
    d.plotinfo.plot = False
    
# 显示策略运行结果
b = Bokeh(style='bar', plot_mode='single', scheme=Tradimo())
cerebro.plot(b)

但是这个方法在使用backtrader_plotting时遇到一个问题:即使设置了plot=False,backtrader_plotting仍然会显示K线。
这个问题花了我两天的时间,仍然没有头绪。最后咨询了backtrader_plotting的作者,他给了一个解决方案。方法如下:

  1. 打开backtrader_plotting安装文件里的bokeh.py。
  2. 找到下面这段代码:
		if plotmaster not in data_graph:
		    data_graph[plotmaster] = []
		data_graph[plotmaster].append(obj)
  1. 把上面的代码替换成下面这样(增加第1行代码):
		if plotmaster.plotinfo.plot:
		    if plotmaster not in data_graph:
		        data_graph[plotmaster] = []
		    data_graph[plotmaster].append(obj)
  1. 替换完成之后,保存bokeh.py文件

然后,当plot=False的时候,backtrader_plotting就不会显示K线了。

有兴趣的读者可以参考作者的回复:how to disable buy/sell chart

注意:这个解决方案对backtrader_plotting当前版本v1.1.0适用,未来可能会有变化。

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值