MACD指标是股票技术中最实用最重要的指标之一,其中涉及EMA、DIF、DEA、BAR几个指标。然而,对MACD指标的定义及分解算法,书上和网上的资料乱七八糟,有的说法互相矛盾,特别是对于指标的分解(即股价与指标值之间的关系),我查了很多资料,要么是有漏洞,要么是错的,而且有的错误的说法流毒甚广。

事实上,这些有错误的说法,只要拿实际案例检验一下,就知道是错误的了。可惜中国人做学问,不求甚解,人云亦云的多,踏踏实实钻研的少。如果对一个指标的来由都没搞清楚,如何能够深刻理解其各种信号的含义?如何能够深刻理解操作策略运用的道理?我到现在还没有发现一个对MACD指标公式及其分解说得完全正确的资料,没办法,只好自己研究,最后我得到了正确可以验证的算法,现在公布在这里,以供参考。

一、EMA

MACD指标中,EMA指标虽然没有直接出现在股票软件的MACD指标界面上,但是EMA指标却是所有MACD指标的基础。而正是这个EMA指标,对其定义和分解的说法是最乱的。所以首先要搞透EMA。

EMA即英文Exponential Moving Average的缩写,即指数移动平均指标,也叫EXPMA指标。

EMA的定义为,当日EMA等于当日收盘价减去昨日EMA之后乘以平滑系数,然后再加上昨日的EMA。写成通用公式如下:
其中为平滑系数, C为今日收盘价,EMA’表示昨日的EMA。EMA(N)表示如果要算的是N日的EMA,则平滑系数要套入公式,比如要算12日的EMA,即EMA(12),则其平滑系数

EMA通用公式也可以变形为以下形式:


对EMA(12)和EMA(26)公式如下:


看到这个EMA定义,大家可能会疑惑,这个定义不是死循环吗?定义中还包含昨日的EMA,那么昨日的EMA又包含前日的EMA,何时是尽头呀!事实上,有尽头,尽头就是新股上市首日,那么新股上市首日的EMA是多少呢?这里有个人为规定,规定把首日收盘价当成是首日EMA,从次日开始,其EMA开始套用以上公式进行计算。

大家可以随便找一只股票从股票上市日开始来验证这个定义。注意,由于股票的MACD界面上并不出现EMA指标,大家可以在股票软件个股股价走势图界面上用键盘输入EXPMA(前面说过,EMA也称为EXPMA),就可以调出EMA指标,一般软件默认的是EMA(12)和EMA(50)两个指标。大家可以用EMA(12)来验证,如果会修改指标的还可以把EMA(50)修改成EMA(26)来验证。上市首日的EMA是首日收盘价,然后第二日开始用EMA(12)=0.1538C+0.8462*EMA’公式来计算,以后都套用此公式算下去。

注意,如果股价不复权,那么得出来的EMA数据是不复权的数据。如果股价采用了前复权处理,那么得出来的EMA数据也是前复权的数据。也就是说,如果一只股票除权过,那么其复权与不复权的EMA也是不同的!除权与复权应该不用我解释吧?如果你不知道什么叫除权复权,那么你不应该炒股!还想炒股的话,赶紧先学会除权复权知识。

掌握了以上的知识,你对EMA的算法的了解还远远不够。比如一只股票上市了很多年了,它今天的EMA数值你知道是多少吗?要知道今天的EMA,得知道昨天的EMA,要知道昨天的EMA,得知道前天的EMA,这样类推下去,岂不是有得追溯到上市首日,那数据量太大了!事实上,我们直观的知道,离当日时间越久,其股价和MEA对今天的EMA的影响就越小,所以,EMA与股价之间应该有个展开式,而且展开式中离今日的日期很远的股价应该可以省略。根据EMA的定义,EMA确实可以得到一个展开式,假设要计算从股票上市起第n日的EMA,计为EMAn,则有:
其中为平滑系数,Cn表示股票上市第n日的收盘价,Cn-1表示股票上市第n-1日的收盘价,Cn-2表示股票上市第n-2日的收盘价……C2表示股票上市第2日的收盘价,C1表示股票上市首日的收盘价。当然,上市很久的股票,要追溯到上市首日的话时间太久了,不现实,那么追溯到多少天比较合适呢?对于N日的EMA,即EMA(N),其股价追溯到前3.45*(N+1)日的就可以了,更早的股价可以忽略。比如说EMA(12)追溯到前45日的股价就可以了,EMA(26)追随到前94日的股价就可以了。根据验证,如果想误差更小,可以追溯到前5N日的股价。
注意,这里涉及到了两个概念,N日的EMA用EMA(N)表示,为防止混淆,这里的N用大写字母表示,N决定了平滑系数 ,比如我们说EMA(12),则其平滑系数为。第n日的EMA用EMAn表示,这里的n是指从股票上市日计起的第n个交易日,为防止混淆,这里的n用小写字母表示。

从EMAn的展开式可以看出来,算EMA时,从当日的股价开始,比其更早的交易日的股价之前的系数,随时间是按的指数递减的,越近期的数据加权影响力越重,但较旧的数据也给予一定的加权值。到这里,我们就明白为什么EMA会称为指数移动平均指标了。

如果项数比较多,那么分母趋向于等于。于是以上公式可以简化为:

但是根据验证,这个简化式对验证EMA(12)和EMA(26)只能精确到小数点后第二位数字,如果要算DIF=EMA(12)- EMA(26),则精确度不够,不能简化!

二、DIF

EMA搞透了,其他指标就比较简单了。DIF指标公式如下:

DIF= EMA(12)- EMA(26)

新股上市首日,其首日DIF为0。从次日开始,全部都用当天的EMA(12)- EMA(26)得到当天的DIF。

注意,研究MACD指标要尽量采用股价前复权之后的数据来研究。

三、DEA

DEA通用公式:


DEA’表示昨日的DEA。

这个公式可以模仿普通EMA的展开式展开,这里不再详述。

默认的DEA即DIF线的9日指数平滑移动平均线,也可以表示为MEA(DIF,9)。


新股上市首日,其首日DEA为0。从次日开始,由于首日DEA为0,因此次日的DEA=0.2* DIF+0=0.2*DIF。后续日子的DEA可以套用0.2*DIF + 0.8* DEA’计算。

四、BAR

BAR=2* (DIF-DEA)

(本文转载自爱因迪生的博客)

EMAMACD股票

股票MACD指标算法公式相关推荐

  1. 股票macd指标api接口

    ##股票macd指标api接口 接口url: http://54199.top/ja/public/day_macd_a?id=600590&date=2020-12-02&token ...

  2. python分析股票MACD指标

    股民朋友肯定熟悉股票中的MACD指标,比如5日均线.10日均线.15日均线等等.通过这些指标可以辅助进行交易的决策(比如经典的金叉.死叉理论),下面就以5日均线和20日均线为例,用python来画出指 ...

  3. 国内股票MACD指标计算,Python实现MACD指标计算,Talib实现MACD指标计算

    0 引言 MACD指标是最为常见的指标之一,股票每日的K线数据通过Tushare.Baostock等平台能够获取到个股及指数的Open.High.Low.Close.Volume等数据,MACD等技术 ...

  4. 股票 MACD指标的买入形态图解

    MACD指标中的DIF和DEA两线,按照其金叉时在零轴上.下的位置,和金叉前是否发生过死叉.死叉发生的位置,有八种形态图形.       它们分别是:佛手向上.小鸭出水.漫步青云.天鹅展翅.空中缆绳. ...

  5. 股票macd指标java,股票K线指标算法整理(Java封装工具类)

    工具类下载地址: https://download.csdn.net/download/qq_28844947/11088865 可查看应用效果之一:https://www.coinsmt.com/f ...

  6. 修改一个公式让MACD指标更加准确,快速找到股票买点。

    在MACD指标公式编辑器再追加输入一个公式,就可能让MACD显示的更加精准,黄柱开始的地方就是我们要找的股票买点附近. MACD作为"指标之王",深受股民喜爱,使用频率也是非常高. ...

  7. 如何生成股票的macd指标

    查看B站视频 股票技术术语中有很多重要的指标,例如 ma macd kdj rsi 等 接下来, 介绍如何构造 ma 与 macd这两个指标 为避免现金分红带来的影响, 我们以未分红过的新股为例进行演 ...

  8. 金叉和死叉看哪几条线?股票macd金叉和死叉怎么看?

    资本市场上,每天都在演绎着转瞬即逝的遗憾,和曙光来临的场景.怎么更好的把握住机遇,人工智能和<股市三大猜想>指出人类在金融领域探索的脚步从未停止过.资本追逐利益是投资者的责任与使命,是金融 ...

  9. 码力十足学量化|macd 指标详解

    经常炒股的朋友应该对macd不陌生,在交易软件的k线图设置中,有点软件默认就会开启macd的图形,没开的大家也可以手动选择一下显示macd图形.那么macd究竟是个什么指标?他是如何计算的,以及如何根 ...

最新文章

  1. 伯克利AI研究院解析「反向课程学习」,改善「强化学习智能体」并应用于机器人技术
  2. 坐标1-based和0-based
  3. 按值传递按引用传递按地址传递
  4. linux 关闭端口_手把手教你在Linux中快速检测端口的 3 个小技巧
  5. go 初学者 错误_初学者的颠簸之旅,发现了一些不错的错误
  6. 从零开始学Go之并发(四):互斥
  7. 解决VMWare Workstation 响应慢
  8. 【时间统计】windows/linux 获取本地时间(精确到微妙)
  9. php修改头像接口,php如何修改头像?
  10. mysql8安装步骤教程
  11. excel表格打印每页都有表头_Excel打印时如何实现每一页纸上都有表头?
  12. 最短路径-弗洛伊德算法的java实现
  13. Java String的intern方法
  14. flash 水墨表现(转)
  15. 2021年安全员-B证找解析及安全员-B证模拟考试题
  16. MySQL数据表插入数据及增加语句
  17. java处理图片与base64编码互相转换
  18. 计算机中模板与母版的区别,模板和模版有啥区别?
  19. 范德堡计算机科学硕士,范德堡大学计算机科学理学硕士研究生申请要求及申请材料要求清单...
  20. Google Calendar 跨平台同步方案(随时同步手机与电脑的日程安排)

热门文章

  1. lehigh计算机就业,2016美国大学计算机专业排名
  2. 电子秤方案介绍——体脂测量功能
  3. css和js3d粒子,使用EaselJS实现的3D球形粒子运动
  4. 表格提示html内容消失,如何解决Word里面的表格插入题注后页面上内容消失、无法编辑的问题...
  5. 一种云化busybox demolets的设想和一种根本降低编程实践难度的设想:免部署无语法编程
  6. JavaSE基础阶段学习笔记
  7. [JOI 2014 Final]裁剪线
  8. 国家数据字典mysql_数据字典 · MySQL DBA · 看云
  9. 虚拟服务器的克隆,怎么克隆远程服务器上的虚拟机
  10. 基于Matlab雷达探测系统(GUI界面模拟)