
主要是希望知道,如何捕捉到倒数第3个顶与倒数第2个顶,倒数第3个顶与当前的顶,怎么比较。我看了大部分的贴出的程序,好像都是捕捉紧邻的顶。
您参考试下,
DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:EMA(DIFF,9);
MACD:2*(DIFF-DEA),COLORSTICK;
D:=DIFF;
JC:=CROSS(DIFF,DEA);
SC:=CROSSDOWN(DIFF,DEA);
N1:=BARSLAST(JC)+1;
N2:=BARSLAST(SC)+1;
HH:=VALUEWHEN(CROSSDOWN(DIFF,DEA),HHV(H,N1));//上次MACD红柱期间合约最大值
HH2:=VALUEWHEN(CROSSDOWN(DIFF,DEA),REF(HH,1));//上上次MACD红柱期间合约最大值
MHD:=VALUEWHEN(CROSSDOWN(DIFF,DEA),HHV(MACD,N1));//上次MACD红柱期间MACD最大值
MHD2:=VALUEWHEN(CROSSDOWN(DIFF,DEA),REF(MHD,1));//上上次MACD红柱期间MACD最大值
LL:=VALUEWHEN(CROSS(DIFF,DEA),LLV(L,N2));//上次MACD绿柱期间合约最小值
LL2:=VALUEWHEN(CROSS(DIFF,DEA),REF(LL,1));//上上次MACD绿柱期间合约最小值
MLD:=VALUEWHEN(CROSS(DIFF,DEA),LLV(MACD,N2));//上次MACD绿柱期间MACD最小值
MLD2:=VALUEWHEN(CROSS(DIFF,DEA),LLV(MACD,N2));//上上次MACD绿柱期间MACD最小值
A:=CROSSDOWN(DIFF,DEA)&&HH>HH2&&MHD<MHD2;//顶背离
B:=CROSS(DIFF,DEA)&&LL<LL2&&MLD>MLD2;//底背离
DRAWICON(A,MACD,'ICO4');
DRAWICON(B,MACD,'ICO5');
DRAWTEXT(COUNT(A,30)=2&&A,MACD,'2次顶背离');
DRAWTEXT(COUNT(A,30)=3&&A,MACD,'3次顶背离');
DRAWTEXT(COUNT(B,30)=2&&B,MACD,'2次底背离');
DRAWTEXT(COUNT(B,30)=3&&B,MACD,'3次底背离');
回复收到,谢谢!另外还有两个问题。
1、在上面的程序里是计算MACD的高度,怎么换成统计MACD面积?
面积其实就是求红绿柱对应所有柱体的和
SC:=CROSSDOWN(DIFF,DEA);//死叉
N1:=BARSLAST(JC)+1;//金叉到当前距离
N2:=BARSLAST(SC)+1;//死叉到当前距离
MJ:VALUEWHEN(DIFF>DEA,SUM(MACD,N1));//红柱期间MACD面积
MS:VALUEWHEN(DIFF<DEA,-1*SUM(MACD,N2));//绿柱期间MACD面积
参考:
DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:EMA(DIFF,9);
MACD:2*(DIFF-DEA),COLORSTICK;
JC:=CROSS(DIFF,DEA); //金叉
SC:=CROSSDOWN(DIFF,DEA);//死叉
N1:=BARSLAST(JC)+1;//金叉到当前距离
N2:=BARSLAST(SC)+1;//死叉到当前距离
MHD:=VALUEWHEN(SC,HHV(MACD,N1));//上次MACD红柱期间MACD最大值
MHD_BARS:=VALUEWHEN(SC,HHVBARS(MACD,N1));//上次MACD红柱期间MACD最大值位置到当前的距离
A:=BACKSET(SC,MHD_BARS);
M:=BARSLAST(CROSS(A,0.5));
MJ2:=VALUEWHEN(SC,SUM(MACD,M));//死叉时红柱剩余面积之和
MJ1..VALUEWHEN(SC,SUM(MACD,N1));//死叉时红柱面积之和
MJ3:MJ1-MJ2,NODRAW;//死叉时金叉到红柱缩短面积之和