在答疑区有人发了一个请求做MACD背离指标的帖子,在编程的过程中我被迫好好思考了一下什么是MACD背离以及未来函数的使用。
关于底背离,网上好多人的定义是:
条件一:股价(或最低价)低于前股价(或最低价)波谷时,对应的macd数值指标高于前股价(或最低价)波谷所对应的macd数值。
但是我愿意再加上一个条件——
条件二:在条件一基础上,股价(或最低价)继续抬高,确认形成新的股价(或最低价)波谷。
原因在于:
一、前股价(或最低价)波谷的定义是不确定的,除非我们给出级别定义
价咯的走势是由无数个小波浪组成的,实际上,如果我们在不同级别(这里说的可不是什么日线周线哦)的波浪下看,前股价(或最低价)波谷的定义是不同的,所以,在任意时刻,前股价(或最低价)波谷的定义实际上是不确定的,除非——我们确定级别!比如股价(或最低价)百分之三的ZIG转向,其中的百分之三就是对这个波浪大小的一种定义。我还注意到,关于级别,现在很多人在学习的缠中说禅的理论里也有类似的思想。
二、新股价(或最低价)是否形成新的波谷,也需要定义级别。
这个级别的定义应当与对前股价(或最低价)波谷的级别定义相同。
所以,即便当前股价创新低,我们也必须等待反转,来确认新波谷的形成。
在这种情况下,大家最避讳的未来函数TROUGH和PEAK其实是可以发挥作用的,只要我们等待确认即可。不是吗?这些都是观察者的判断而已。
为此,我编写以下MACD背离指标,个人认为这个指标还是有价值的,故送与大家参考。(注意,在22:20左右进一步修改了指标,在con2里增加“AND L>REF(L*1.03,1)”,与3%ZIG转向要求更加符合,后面还增加了选股指标)
DIFF:= EMA(CLOSE,12) - EMA(CLOSE,26);
DIF:EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:EMA(DIF,9);
MACD:2*(DIF-DEA),COLORSTICK;
CON1:=TROUGH(2,3,1)<TROUGH(2,3,2);
CON2:=TROUGHBARS(2,3,1)=1 AND L>REF(L*1.03,1)
AND PEAKBARS(1,3,1)>TROUGHBARS(2,3,1) AND PEAKBARS(1,3,1)<TROUGHBARS(2,3,2);
CON3:=REF(MACD,1)>REF(MACD,TROUGHBARS(2,3,2)) AND HHV(MACD,TROUGHBARS(2,3,2))>0;
CON4:=MACD>REF(MACD,1);
T_REVERSE:=CON1 AND CON2 AND CON3 AND CON4;
{上面是对MACD背离的定义,下面是画线}
FLAG:=BACKSET(T_REVERSE,TROUGHBARS(2,3,2)+1);
FLAG1:=BACKSET(T_REVERSE,2);
FLAG2:=COUNT(T_REVERSE,TROUGHBARS(2,3,2)+1)*T_REVERSE;
FLAG3:=BACKSET(FLAG2=2,TROUGHBARS(2,3,2)+1);
DRAWLINE(CROSS(FLAG,0.5),MACD,FLAG2=1,MACD,0),COLORRED,LINETHICK2;
DRAWLINE(CROSS(FLAG3,0.5),MACD,FLAG2=2,MACD,0),COLORYELLOW,LINETHICK2;
DRAWICON(T_REVERSE,MACD*1.2,1);
以下是选股指标:
DIFF:= EMA(CLOSE,12) - EMA(CLOSE,26);
DIF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIF,9);
MACD:=2*(DIF-DEA);
CON1:=TROUGH(2,3,1)<TROUGH(2,3,2);
CON2:=TROUGHBARS(2,3,1)=1 AND L>REF(L*1.03,1)
AND PEAKBARS(1,3,1)>TROUGHBARS(2,3,1) AND PEAKBARS(1,3,1)<TROUGHBARS(2,3,2);
CON3:=REF(MACD,1)>REF(MACD,TROUGHBARS(2,3,2)) AND HHV(MACD,TROUGHBARS(2,3,2))>0;
CON4:=MACD>REF(MACD,1);
T_REVERSE:CON1 AND CON2 AND CON3 AND CON4;
|