MACD是一种常用的技术分析指标,用于判断价格的趋势和动能,其原理是基于两条指数移动平均线的比较和对价格的平滑处理,MACD金叉是指MACD指标中的快线DIF从下方向上穿过慢线DEA。快线、慢线都是根据收盘价计算出来的,如果想提前一天判断MACD金叉,就要知道明天的收盘价是多少。我们无法预知未来,但是可以根据MACD金叉时的值倒推出明天的收盘价。如果明天的实际收盘价超过我们推算的收盘价,MACD就金叉了。
一、MACD指标的原理
以MACD指标默认参数为例,MACD指标由三个部分构成(如下图):
快线(白线):计算短期(12天)EMA均线与长期(26天)EMA均线之间的差值;
慢线(黄线):计算快线的9天EMA均线;
MACD柱线(红绿柱):计算快线和慢线之间的差值,算出来之后绘制柱状图显示出来。
MACD金叉,快线DIF从下方向上穿过慢线DEA,实际上就是从前一天的DIF<DEA变成当天的DIF>DEA,MACD=(DIF-DEA)*2,MACD从小于0变成大于0,也就是MACD柱线从绿柱变成红柱。
SHORT:=12;
LONG:=26;
MID:=9;
DIF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);
DEA:EMA(DIF,MID);
MACD:(DIF-DEA)*2,COLORSTICK;
了解了MACD的原理还不够,无法倒推到收盘价,还需要了解EMA的原理。
二、EMA指标的原理
EMA(指数移动平均)是一种技术分析指标,用于平滑价格数据并识别趋势。它与MA(简单移动平均)相比,更加重视最近的价格数据。
以收盘价为例,周期数为N,EMA的计算公式如下:
今日EMA=今日收盘价*2/(N+1) + 昨日EMA*(N-1)/(N+1)
EMA的原理是通过加权平均的方式,给予最近的价格数据较高的权重,从而能更加敏感地反应价格的变动,这使得EMA能够更快捕捉到趋势的变化,而不会过于受到过去价格的影响。
三、验证EMA计算公式
了解了EMA指标的原理,我们可以用未来函数REFX获取明天的收盘价,来验证计算结果是否正确。
明日EMA(C,12)=明日收盘价*2/(12+1)+今日EMA(C,12)*11/(12+1)
EMA(C,12)*11/13+REFX(C,1)*2/13
明日EMA(C,26)=明日收盘价*2/(26+1)+今日EMA(C,26)*25/(26+1)
EMA(C,26)*25/27-REFX(C,1)*2/27
明日MACD指标公式如下:
DIF:=EMA(C,12)-EMA(C,26);
DEA:=EMA(DIF,9);
MACD:=(DIF-DEA)*2;
DIFX:EMA(C,12)*11/13+REFX(C,1)*2/13-EMA(C,26)*25/27-REFX(C,1)*2/27;
DEAX:EMA(DIF,9)*8/10+DIFX*2/10;
MACDX:(DIFX-DEAX)*2,COLORSTICK;
通过上图可以看出,明日MACD指标公式相当于提前了一天(上图黄色箭头),计算的结果是一致的,因此计算方法没有问题。此外最后一天的值都是空的(上图中横线处),因为明天的收盘价今天肯定不知道,所以接下来计算金叉时的收盘价。
四、提前一天判断MACD金叉指标公式
把REFX(C,1)换成价格P,我们就是要计算这个P是多少。
金叉MACDX>0,即(DIFX-DEAX)*2>0,换算一下,得到价格P的计算公式:
P:=-(EMA(C,12)*11/13-EMA(C,26)*25/27-EMA(DIF,9))*351/28;
提前一天判断MACD金叉指标公式:
DIF:EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:EMA(DIF,9);
MACD:(DIF-DEA)*2,COLORSTICK;
P:=-(EMA(C,12)*11/13-EMA(C,26)*25/27-EMA(DIF,9))*351/28;
ZF:=(ROUND2(P,2)-C)/C*100;
CZT:=P>ZTPRICE(C,IF(RANGE(FINANCE(3),2,5),0.2,0.1));{涨幅大于涨停价}
CDT:=P<DTPRICE(C,IF(RANGE(FINANCE(3),2,5),0.2,0.1));{跌幅小于跌停价}
SZ1:=STRCAT(STRCAT('明天收盘价大于',CON2STR(P,2)),',');
SZ2:=STRCAT(STRCAT('涨幅大于',CON2STR(ZF,2)),'%');
SZ:=STRCAT(STRCAT(SZ1,SZ2),',MACD金叉');
DRAWTEXT_FIX(ISLASTBAR AND ZF>0,0.78,0,0,SZ),COLORMAGENTA;
XD1:=STRCAT(STRCAT('明天收盘价小于',CON2STR(P,2)),',');
XD2:=STRCAT(STRCAT('跌幅小于',CON2STR(ZF,2)),'%');
XD:=STRCAT(STRCAT(XD1,XD2),',MACD死叉');
DRAWTEXT_FIX(ISLASTBAR AND ZF<0,0.78,0,0,XD),COLORGREEN;
DRAWTEXT_FIX(ISLASTBAR AND ZF>0 AND CZT,0.78,0.12,0,'明天不会金叉'),COLORYELLOW;
DRAWTEXT_FIX(ISLASTBAR AND ZF<0 AND CDT,0.78,0.12,0,'明天不会死叉'),COLORYELLOW;
用沙盘推演来验证一下计算结果(如下面两张图),可以看到结果是正确的,当收盘价大于P时,MACD可以实现金叉。
另外对于计算出的价格P超过了涨跌幅,明显不能实现金叉死叉,上面的公式也能给出提示。
关注技术Pie,学习更多通达信指标公式编写知识。版权所有,转载请注明出处。
友情提醒:本文仅供学习交流技术指标公式,不构成任何投资建议。投资有风险,入市需谨慎。