量化交易学习(四十)backtrader文档——绘图(3)
今天这篇是backtrader文档的学习笔记。主要介绍了绘图。
官方文档链接:https://www.backtrader.com/docu/plotting/plotting/
控制绘图的方法
在处理指标和观察者时,支持以下方法来进一步控制绘图:
_plotlabel(self)
它应该返回一个列表,以符合标签,这些标签将放置在指标或观察者名称后面的括号之间
RSI指标示例:
1 | def _plotlabel(self): |
可以看出该方法返回:
- 返回一个表示RSI的周期的
int变量,以及如果默认移动平均线已变化,返回对应的类
在后台,两者都将转换为字符串。对于类,将努力只打印类的名称而不是完整的module.name组合。
_plotinit(self)
在绘图开始时调用它来执行指标可能需要的任何特定初始化。再用RSI举一个例子:
1 | def _plotinit(self): |
这里,代码给plotyhlines赋值,以在特定y值处绘制水平线(hlines部分)。
参数值upperband和lowerband用于此目的,无法提前知道,因为参数可以由最终用户更改
系统范围的绘图选项
首先是cerebro内的签名:plot
1 | def plot(self, plotter=None, numfigs=1, iplot=True, **kwargs): |
简单介绍下:
plotter:一个对象/类,属性包含控制系统范围绘图的选项
如果设为None,则一个默认的PlotScheme对象(见下文)将被实例化
numfigs:一个图必须被分成多少个独立图表进行绘制
有时,图表包含太多条形图,如果都在单个图中绘制,则不容易阅读。这会根据要求将其分解为指定份数。
-
iplot:如果在 Jupyter Notebook 中运行,则自动绘制内联图 -
**kwargs: 这些参数将用于更改plotter的属性值,如果没有plotter传入,则创建默认的PlotScheme对象。
PlotScheme类
该对象包含控制系统范围绘图的所有选项。这些选项记录在代码中:
1 | class PlotScheme(object): |
PlotScheme 中的颜色
PlotScheme类定义了一个可以在子类中重写的方法,该方法返回要使用的下一个颜色:
1 | def color(self, idx) |
idx是当前正在被绘制在单独子图上的线对象的索引。 例如,MACD绘制了 3 条线,因此idx变量将只有以下值:0、1和2。下一个图表(可能是另一个指标)将在0索引再次开始计数。
backtrader默认使用的配色方案(如上所示)是索引按下面修改的Tableau 10 Color Palette:
1 | tab10_index = [3, 0, 2, 1, 2, 4, 5, 6, 7, 8, 9] |
通过重写color方法或将lcolors变量传递给plot(或在PlotScheme的子类中),可以完全更改颜色。
源代码中还包含Tableau 10 Light和Tableau 20调色板的定义。
这一篇就到这里啦。欢迎大家点赞、转发、私信。还没有关注我的朋友可以关注 江达小记
