mplfinance模块Price-movement绘制砖型图和点数图(v=0.12.6a3)(六)
mplfinance模块Price-movement绘制砖型图和点数图(v=0.12.6a3)(六)
续:
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)
最后放一张蜡烛图来对比下吧: