需要您明确几个地方的条件才能编写:
①:
涨跌幅30跳,是在几根K线内到达算满足?
达到后多少个周期内判定其他条件是否满足?
②
鸭子张嘴这个形态的判定有一个方法是计算2条线之间的距离是先缩短再增加,这个缩短再增加各自判定的持续周期是多少?
-------------------------
您先考虑下以上参数,先给您编写一版看看
您的张嘴形态源码不足以选出接近金死叉又没有金死叉的K线,在这个基础上加强了条件,您可以单独查看下ZZ类指标的执行情况。
参考:
DF:=(HHV(H,10)-L)>30*MINPRICE;
ZF:=(H-LLV(L,10))>30*MINPRICE;
M45:=MA(C,45);
//MACD
DIFF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=(DIFF-DEA)*2,COLORSTICK;
ZZ1:=EVERY(MACD>0,4) && REF(EVERY(MACD<REF(MACD,1),3),1) && EVERY(MACD>REF(MACD,1),1);
ZZ2:=EVERY(MACD<0,4) && REF(EVERY(MACD>REF(MACD,1),3),1) && EVERY(MACD<REF(MACD,1),1);
JC1:=CROSS(DIFF,DEA);
SC2:=CROSS(DIFF,DEA);
//MTM
N:=6;
N1:=6;
MTM:=CLOSE-REF(CLOSE,N);
MTMMA:=MA(MTM,N1);
MACD2:=MTM-MTMMA;
ZZ11:=EVERY(MACD2>0,4) && REF(EVERY(MACD2<REF(MACD2,1),3),1) && EVERY(MACD2>REF(MACD2,1),1);
ZZ22:=EVERY(MACD2<0,4) && REF(EVERY(MACD2>REF(MACD2,1),3),1) && EVERY(MACD2<REF(MACD2,1),1);
JC11:=CROSS(MTM,0) || CROSS(MTM,MTMMA);
SC22:=CROSSDOWN(MTM,0) || CROSSDOWN(MTM,MTMMA);
//KD
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
MACD3:=K-D;
ZZ111:=EVERY(MACD3>0,4) && REF(EVERY(MACD3<REF(MACD3,1),3),1) && EVERY(MACD3>REF(MACD3,1),1);
ZZ222:=EVERY(MACD3<0,4) && REF(EVERY(MACD3>REF(MACD3,1),3),1) && EVERY(MACD3<REF(MACD3,1),1);
JC111:=CROSS(K,D);
SC222:=CROSSDOWN(K,D);
CON1:=EXIST(DF,10) && C>M45 && ((ZZ1||JC1)&&DIFF>REF(DIFF,1)&&MACD>REF(MACD,1)&&K>REF(K,1)&&D>REF(D,1)||(ZZ11||JC11)&&MTM>REF(MTM,1)&&MTMMA>REF(MTMMA,1)&&K>REF(K,1)&&D>REF(D,1)||(ZZ111||JC111)&&DIFF>REF(DIFF,1)&&MACD>REF(MACD,1)&&MTM>REF(MTM,1)&&MTMMA>REF(MTMMA,1));
CON2:=EXIST(ZF,10) && C<M45 && ((ZZ2||SC2)&&DIFF<REF(DIFF,1)&&MACD<REF(MACD,1)&&K<REF(K,1)&&D<REF(D,1)||(ZZ22||SC22)&&MTM<REF(MTM,1)&&MTMMA<REF(MTMMA,1)&&K<REF(K,1)&&D>REF(D,1)||(ZZ222||SC222)&&DIFF<REF(DIFF,1)&&MACD<REF(MACD,1)&&MTM<REF(MTM,1)&&MTMMA<REF(MTMMA,1));
DRAWICON(CON1,L,1),VALIGN0;
DRAWICON(CON2,H,2),VALIGN2;
这里可以根据您的思路调整,6和6是系统自带的MTM指标参数,您自行调整下就好。
另外,这个版本编写的条件都有拆分。
张嘴部分您可以单独把指标拿出来看下位置是否符合思路(目前是不显示的,您可以自行设置标示函数查看位置)。
参考:
DF:=(HHV(H,10)-L)>30*MINPRICE;
ZF:=(H-LLV(L,10))>30*MINPRICE;
MA5:=MA(C,5);
//MACD
DIFF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=(DIFF-DEA)*2,COLORSTICK;
ZZ1:=EVERY(MACD>0,4) && REF(EVERY(MACD<REF(MACD,1),3),1) && EVERY(MACD>REF(MACD,1),1);
ZZ2:=EVERY(MACD<0,4) && REF(EVERY(MACD>REF(MACD,1),3),1) && EVERY(MACD<REF(MACD,1),1);
JC1:=CROSS(DIFF,DEA);
SC2:=CROSSDOWN(DIFF,DEA);
//MTM
N:=6;
N1:=6;
MTM:=CLOSE-REF(CLOSE,N);
MTMMA:=MA(MTM,N1);
MACD2:=MTM-MTMMA;
ZZ11:=EVERY(MACD2>0,4) && REF(EVERY(MACD2<REF(MACD2,1),3),1) && EVERY(MACD2>REF(MACD2,1),1);
ZZ22:=EVERY(MACD2<0,4) && REF(EVERY(MACD2>REF(MACD2,1),3),1) && EVERY(MACD2<REF(MACD2,1),1);
JC11:=CROSS(MTM,0) || CROSS(MTM,MTMMA);
SC22:=CROSSDOWN(MTM,0) || CROSSDOWN(MTM,MTMMA);
//KD
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
MACD3:=K-D;
ZZ111:=EVERY(MACD3>0,4) && REF(EVERY(MACD3<REF(MACD3,1),3),1) && EVERY(MACD3>REF(MACD3,1),1);
ZZ222:=EVERY(MACD3<0,4) && REF(EVERY(MACD3>REF(MACD3,1),3),1) && EVERY(MACD3<REF(MACD3,1),1);
JC111:=CROSS(K,D);
SC222:=CROSSDOWN(K,D);
CON1:=EXIST(DF,10) && C>MA5 && ((ZZ1||JC1)&&DIFF>REF(DIFF,1)&&MACD>REF(MACD,1)&&K>REF(K,1)&&D>REF(D,1)||(ZZ11||JC11)&&MTM>REF(MTM,1)&&MTMMA>REF(MTMMA,1)&&K>REF(K,1)&&D>REF(D,1)||(ZZ111||JC111)&&DIFF>REF(DIFF,1)&&MACD>REF(MACD,1)&&MTM>REF(MTM,1)&&MTMMA>REF(MTMMA,1));
CON2:=EXIST(ZF,10) && C<MA5 && ((ZZ2||SC2)&&DIFF<REF(DIFF,1)&&MACD<REF(MACD,1)&&K<REF(K,1)&&D<REF(D,1)||(ZZ22||SC22)&&MTM<REF(MTM,1)&&MTMMA<REF(MTMMA,1)&&K<REF(K,1)&&D>REF(D,1)||(ZZ222||SC222)&&DIFF<REF(DIFF,1)&&MACD<REF(MACD,1)&&MTM<REF(MTM,1)&&MTMMA<REF(MTMMA,1));
DRAWICON(CON1,L,1),VALIGN0;
DRAWICON(CON2,H,2),VALIGN2;