当前位置: 首页 > Python, Stock > 正文

以pandas/matplotlib结合绘制招行2017年收盘价的MACD全过程记录

数据准备

以招商银行2017年前10月的收盘价为例,先从网上抓取数据保存为csv文件在本地 assets 目录下。csv 文件至少包含 date(日期), close(收盘价), volume(成交量) 三个字段。使用成交量字段,目的是为了排除一些可能存在的无数据的交易日(比如当天停牌)

MACD 计算方法

12日EMA的计算:EMA12 = 前一日EMA12 X 11/13 + 今日收盘 X 2/13
26日EMA的计算:EMA26 = 前一日EMA26 X 25/27 + 今日收盘 X 2/27
差离值(DIF)的计算: DIF = EMA12 – EMA26,即为talib-MACD返回值macd
根据差离值计算其9日的EMA,即离差平均值,是所求的DEA值。今日DEA = (前一日DEA X 8/10 + 今日DIF X 2/10),即为talib-MACD返回值signal
DIF与它自己的移动平均之间差距的大小一般BAR=(DIF-DEA)x2,即为MACD柱状图。

根据MACD 计算方法的描述,EMA12 是一个加权移动平均数,在 pandas.Series 中有 pandas.Series.ewm(span=period)方法,对于获取到的值再做 mean() 运算——即取平均数,这样得到的就是以period为单位的加权移动平均数。因此,收盘价EMA12的计算代码就是:

以此类推,DEA和MACD柱都很好计算了。将MACD的数据计算封装成一个方法就是:

MACD 图像绘制

有了上面封装方法计算出的数据,用 matplotlib 就能很容易绘制出图形了。

封装方法中的参数含义如下:

  • df_raw – 原始的从 csv 导出数据后生成的DataFrame,目的是用在生成major_xticks时定位使用
  • dif, dea, red_bar, green_bar 是使用 get_macd_data 方法计算出的MACD指标
  • canvas_w, canvas_h 为期望绘制出的图形宽度和高度,单位是像素
  • xtick_period 为生成x 方向刻度时,每间隔多少个数值,取一个值作为刻度显示出来——如果将全部日期显示出来,x方向的刻度将会是密密麻麻一片黑
  • title 是图形的标题

调用封装的方法绘图

上面的方法虽然封装好了,但是在导入数据时还有一些小的坑要注意。如下是调用封装方法绘制的实例代码:

最终绘制结果:

macd.png

作者:那未必
链接:https://www.jianshu.com/p/6e24af39b7e6
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文固定链接: http://t.yjsec.com/index.php/2018/03/30/515/ | 下一站

该日志由 admin 于2018年03月30日发表在 Python, Stock 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 以pandas/matplotlib结合绘制招行2017年收盘价的MACD全过程记录 | 下一站
【上一篇】
【下一篇】

以pandas/matplotlib结合绘制招行2017年收盘价的MACD全过程记录:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter