mplfinance模块Price-movement绘制砖型图和点数图(v=0.12.6a3)(六)

mplfinance模块Price-movement绘制砖型图和点数图(v=0.12.6a3)(六)

置顶qd-hhkj2020-08-20 22:30:56

1229

收藏 8

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
版权

续:

Price-movement绘制价格变动图

  • 一、价格变动图介绍

  • 二、砖型图 Renko的绘制

  • 三、点数图 Point and Figure的绘制

  • 四、调整砖型图和点数图的大小

  • 五、添加均线和成交量

一、价格变动图介绍

一个专业的交易员会使用多种图表,蜡烛图并不是唯一的。“Renko”、“Point and Figure”、“heikenashi”、“Kagi”和“Line Break”是几种常用的价格变动图表,mplfinance模块当前的版本只支持“Renko”、“Point and Figure”。
当前介绍的Renko”又称为砖型图、“Point and Figure”称为OX图或者点数图,他们有个共同的特点是忽略了时间的变化,能清晰的反应空间波动,从不动的角度对市场又更加清晰的认识,也有助于降低主观情绪的影响。

二、砖型图 Renko的绘制

这里提醒下,本篇是续写的第六篇,所有代码中用到的数据data都是从第一、二篇开始逐步沿用下来的。
使用mplfinance绘制砖型图比较简单,在plot时,关键字参数type赋值为renko即可,只是需要注意的时,使用renko的时候,不能再使用addplot关键字参数添加主图,原因其实也很简单,上面提到了Renko忽略了时间的变化,那么x轴也就不再是时间的线性关系了,而其他子图的指标分析却都是建立在时间线性关系基础上的。下面我们绘制两个图对比下,一个是普通蜡烛图一个是砖型图,完整代码如下:

class DataFinanceDraw(object):
    """
    获取数据,并按照 mplfinanace 需求的格式格式化,然后绘图
    """
    def __init__(self):
        self.data = pandas.DataFrame()

    def my_data(self, file_name='2020.csv'):
        """
        获取数据,把数据格式化成mplfinance的标准格式
        :return:
        """
       data = pandas.read_csv(os.getcwd() + '\\resource\\' + file_name)
       data['Date'] = pandas.to_datetime(data['Date'], format='%Y-%m-%d')
       data.set_index('Date', inplace=True)
       self.data = data
       return data

    def panel_draw(self):
        """
        make_addplot 绘制多个子图
        """
        data = self.data.iloc[0:200]
mplfinance.plot(data, type='candle')
        mplfinance.plot(data, type='renko')

        plt.show()  # 显示
        plt.close()  # 关闭plt,释放内存

if __name__ == "__main__":
    candle = DataFinanceDraw()
    candle.my_data('2020.csv')
    candle.panel_draw()

三、点数图 Point and Figure的绘制

点数图的原理与砖型图有点相似,也是忽略了时间的影响。这里就不多说了,代码修改也比较简单,修改关键字参数type='pnf’即可:

mplfinance.plot(data, type='pnf')

通过mplfinance绘制的砖型图和点数图x轴仍然标注了时间刻度,但仔细观察发现刻度的时间并没有线性规律了,是凌乱的。其实直接去掉更好一点吧。

四、调整砖型图和点数图的大小

他们调整的模式很相似,就放一起说吧。分别使用关键字参数,renko_params和pnf_params传入一个字典格式的关键字参数brick_size和box_size,作用就是设置砖块或者点数的最小移动值,相信常用这两个图表的会明白,这里就不展开了,否则就跑题了。代码修改如下:

mplfinance.plot(data, type='renko',renko_params=dict(brick_size=2))
mplfinance.plot(data, type='pnf',pnf_params=dict(box_size=2))

这里注意:brick_size和box_size的值可以是整数也可以是浮点数,还可以是'atr’,atr其实就是使用平均真实波幅作为最小移动值,其实与常用的ATR指标一个意思,相信提到ATR指标所有交易员都懂了。在没有设置brick_size和box_size的时候,默认值就是'atr’,如果使用了'atr’,那么还可以增加一个参数atr_length来设置计算平均真实波幅的周期数,当然如果你没有设置atr_length,系统也是又默认值的,默认值是14(是不是很熟悉?常用的ATR指标的默认值也是14)。看一下修改后的代码和结果:

mplfinance.plot(data, type='renko',renko_params=dict(brick_size=2, atr_length=2))
mplfinance.plot(data, type='pnf',pnf_params=dict(box_size=2, atr_length=2))

五、添加均线和成交量

上面提到,使用renko和pnf是不能添加子图的,但是可以添加均线和成交量,而实际的意义也有限,这里也不展开说了,只把添加方式列举一下,修改代码如下:

mplfinance.plot(data, type='renko',renko_params=dict(brick_size=2, atr_length=2), mav=(2, 5, 7),volume=True)
mplfinance.plot(data, type='pnf',pnf_params=dict(box_size=2, atr_length=2), mav=(2, 5, 7),volume=True)

最后放一张蜡烛图来对比下吧:

(0)

相关推荐