今天介绍MACD底背离选股公式,整体来说编写难度比较大,按照MACD底背离的定义,需要分别找到2个价格波段低点以及快线DIF的2个低点,并进行比较,最终实现选股。
一、MACD底背离选股公式(平替版)
首先介绍MACD底背离选股公式的平替版本,写法相对简单,但是不完全符合MACD底背离的定义。
DIF:=EMA(C,12)-EMA(C,26);
DEA:=EMA(DIF,9);
JC:=CROSS(DIF,DEA);
T:=BARSLAST(REF(JC,1));
A1:=REF(C,T+1)>C;
A2:=DIF>REF(DIF,T+1);
XG:JC AND A1 AND A2;
源码解析:
JC:=CROSS(DIF,DEA);,快线慢线金叉;
T:=BARSLAST(REF(JC,1));,计算上次金叉昨天的周期数,写成REF(JC,1)的原因是当条件成立时,BARSLAST计算得到的周期数是0,这样没办法找到上次金叉的位置;
A1:=REF(C,T+1)>C;,用REF往前找到上次金叉对应的收盘价,今天的收盘价小于上次收盘价。上面的T是距离昨天的周期数,距离今天少一天,所以这里T要加1;
A2:=DIF>REF(DIF,T+1);用REF往前找到上次金叉对应的DIF值,今天的DIF大于上次的DIF。
XG:JC AND A1 AND A2;,今天金叉,并且今天的收盘价小于上次收盘价,并且今天的DIF大于上次的DIF。(如下图)
此外,用SUMBARS函数计算周期也可以实现相同的结果。
DIF:=EMA(C,12)-EMA(C,26);
DEA:=EMA(DIF,9);
JC:=CROSS(DIF,DEA);
T:=SUMBARS(JC,2);
A1:=REF(C,T-1)>C;
A2:=DIF>REF(DIF,T-1);
XG:JC AND A1 AND A2;
二、MACD底背离选股公式(正式版)
从上面的图中可以看出,这样的写法并不完善。下面从MACD底背离的定义出发,进行公式编写。
编写思路解析:获取区间1(最近的死叉到金叉区间)的DIF最低值D1以及最低价L1,利用SUMBARS得到的周期数定位到区间2(上一次的的死叉到金叉区间),获取区间2的DIF最低值D2以及最低价L2,最低价L1小于最低价L2,DIF最低值D1大于DIF最低值D2,即实现MACD底背离。(如下图)
DIF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:=EMA(DIF,9);
JC:=CROSS(DIF,DEA) AND DIF<0;
JT:=SUMBARS(JC,2);
SC:=CROSS(DEA,DIF);
ST:=BARSLAST(SC);
D1:=LLV(DIF,ST+1);
D2:=REF(D1,JT-1);
L1:=LLV(L,ST+1);
L2:=REF(L1,JT-1);
XG:JC AND L1<L2 AND D1>D2 AND EVERY(DEA<0,JT);
以上公式在之前的文章中已经有了详细介绍,这里不做进一步讲解,可以查看之前的文章《通达信指标公式编写常用函数(七)——SUMBARS以及MACD底背离》
不过这里做了一些修改,不需要用LLVBARS定位到哪根K线对应最低值,只需要获得最低值就行。所以D1、L1的代码可以精简为一句。D1:=LLV(DIF,ST+1); D2:=REF(D1,JT-1); L1:=LLV(L,ST+1); L2:=REF(L1,JT-1);。另外加入EVERY(DEA<0,JT),过滤DEA在零轴之上也符合的情况。
三、MACD底背离技术指标公式(文字提示)
MACD底背离技术指标公式,加入了“底背离”文字提示
DIF:EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:EMA(DIF,9);
MACD:(DIF-DEA)*2,COLORSTICK;
JC:=CROSS(DIF,DEA) AND DIF<0;
JT:=SUMBARS(JC,2);
SC:=CROSS(DEA,DIF);
ST:=BARSLAST(SC);
D1:=LLV(DIF,ST+1);
D2:=REF(D1,JT-1);
L1:=LLV(L,ST+1);
L2:=REF(L1,JT-1);
DBL:=JC AND L1<L2 AND D1>D2 AND EVERY(DEA<0,JT);
DRAWTEXT(DBL,DIF,'底背离'),COLORYELLOW;
友情提醒:本文仅供学习交流,不构成任何投资建议。投资有风险,入市需谨慎!
关注技术Pie,学习更多通达信指标公式编写知识。