量化交易学习(四十八)backtrader成交量画在副图中

在backtrader中默认的图表画的是折线图,成交量直接画在主图中,如果把折线图改成蜡烛图,会有一部分k线与成交量重合,不方便我们观察。

默认的折线图:
Snipaste_2024-04-06_20-38-22.png

直接改成蜡烛图:

Snipaste_2024-04-06_20-45-38.png

那怎么才能把成交量从主图中分离出来,单独画在副图中呢,我在网上搜了半天,没有找到方法,最后想着看看源码吧,源码上会有处理方法。

从cerebro.plot方法入手,导航到它的源码中,可以看到如果plotter参数为None则会创建一个默认的Plot实例。
60b4b37dfaf259144634aa5bef0af118.png
再看具体代码:
5452461ff61a583206ef84efd6b94e14.png
默认的plotter类实例为Plot_OldSync
06d9fb2ebf798877efb06a998bebe8b0.png
800f054bb826a1fc4f93e9e1e2315776.png
画成交量的方法是plotvolume:
225db6cfe3b3d0de063086cbf1977669.png
在代码中,可以看到有一个voloverlay参数用于控制成交量是否绘制在主图。

由此,我们就可以在cerebro.plot()方法调用中加上voloverlay=False来让成交量单独绘制了。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cerebro = bt.Cerebro()
cerebro.addstrategy(strategy.MACDStrategy)
today=datetime.datetime.today()
data=mysqlDataFeed.MySQLData(
dataname=symbol,
timeframe=bt.TimeFrame.Days,
fromdate=today-relativedelta(months=6),
todate=today,
adj_base_date=today
)
cerebro.adddata(data)
cerebro.broker.setcash(10000)
cerebro.run()
cerebro.plot(style='candle',barup='red',bardown='green',volup='red',voldown='green',voloverlay=False)

结果如下:

Snipaste_2024-04-06_20-39-36.png

把上一篇文章中实现的独立支点识别指标及锤子线和倒锤子线一起画在图中,并通过独立支点画出了支撑线和阻力线:

Snipaste_2024-04-06_20-29-35.png


这一篇就到这里啦。欢迎大家点赞、转发、私信。还没有关注我的朋友可以关注 江达小记

江达小记