
前几天看《量价分析》的时候,书里介绍了一个动态画趋势线的方法 链接:。。。。
其中里面介绍了画趋势线依赖的高位支点和低位支点的概念(如下图)。我就想着用backtrader实现这种蜡烛图形态指标,在一番试验后终于搞定了。

指标代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import backtrader as bt
class Pivot(bt.Indicator): lines = ('high_pivot','low_pivot') plotlines = dict( high_pivot=dict(color='green', ls='',marker='d',markersize='7.0'), low_pivot=dict(color='red', ls='',marker='d',markersize='7.0') )
plotinfo = dict() plotinfo['subplot'] = False plotinfo['plotlinelabels'] = True
def __init__(self): super(Pivot, self).__init__() linehigh = bt.If(bt.And(bt.And( self.data.high(-1)>self.data.high(-2),self.data.high(-1)>self.data.high(0)), bt.And(self.data.low(-1)>self.data.low(-2),self.data.low(-1)>self.data.low(0)) ),self.data.high(-1)*1.01,-100) self.l.high_pivot=linehigh(1) linelow = bt.If(bt.And(bt.And( self.data.high(-1)<self.data.high(-2),self.data.high(-1)<self.data.high(0)), bt.And(self.data.low(-1)<self.data.low(-2),self.data.low(-1)<self.data.low(0)) ),self.data.high(-1)*1.01,-100) self.l.low_pivot=linelow(1)
|
以沪深300ETF为例,检验这个指标能否正常工作。

图中用绿色和红色的菱形块标记出了高低支点所对应的k线位置:
可以很清楚的看到,程序确实按照规则把高低支点对应的k线找出来了。
再看整张图,会发现当用蜡烛图画线时,backtrader会有个小bug,它把成交量和主图画在一起了,导致有一部分成交量和k线叠在一起了,这块我还没找到方法解决。

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