//定义特征高低点后的,顶分型和底分型//
FXD:=LOW<=REF(LOW,1) AND REFX(LOW,1)>=LOW AND REFX(LOW,2)>=LOW AND REFX(LOW,3)>=LOW AND REFX(LOW,4)>=LOW AND REFX(LOW,5)>=LOW ; //DRAWTEXT(FXD,LOW,'FXD'); //找出特征低点//
TZD:=BACKSET(ZDD AND BARSLAST(ZGD)<4 ,BARSLAST(ZGD));//特征低点向前赋值// TZDD:=(TZD AND REFX(TZD,1)=0) OR (TZD AND ISLASTBAR);//定位特征低点// //DRAWTEXT(TZDD,HIGH,'特征低点');//
TZG:=BACKSET(ZGD AND BARSLAST(ZDD)<4 ,BARSLAST(ZDD)); TZGG:=(TZG AND REFX(TZG,1)=0) OR (TZG AND ISLASTBAR); ZQGD:= BARSSINCE(ZGD)=0 AND COUNT(ZDD,BARPOS)=0;
JZD:=(TZDD AND REF(TZGG,BARSLAST(ZGD))=0 AND REF(REF(TZDD,BARSLAST(ZDD)),1)=0) OR (TZDD AND REF(ZQGD,BARSLAST(ZGD))) ;//找出特征低点//
TZDQC:=BACKSET(JZD,BARSLAST(ZGD));//这地方等等再思考//
TZDDDDFZ:=(TZDQC AND REFX(TZDQC,1)=0) OR (TZDQC AND ISLASTBAR); //DRAWTEXT(TZDDDDFZ,LOW*0.98,'去除低点')COL OR MAGENTA ;
//找出符合条件底分型//
JQD9:=BARSLAST(ZDD);//距前低// JQG9:=BARSLAST(ZGD);//距前高//
//K线包含处理//
//前面顶部左侧K线第1根是否跟前一根重合//
DQBHGG9:=(REF(LOW,JQG9+1)<=REF(LOW,JQG9+2) AND REF(HIGH,JQG9+1)>=REF(HIGH,JQG9+2)) OR (REF(LOW,JQG9+1)>=REF(LOW,JQG9+2) AND REF(HIGH,JQG9+1)<=REF(HIGH,JQG9+2));
//前面底部的左侧第一根K线是否跟前一根重合//
DDQQBBHH9:=(REF(LOW,JQD9+1)<=REF(LOW,JQD9+2) AND REF(HIGH,JQD9+1)>=REF(HIGH,JQD9+2)) OR (REF(LOW,JQD9+1)>=REF(LOW,JQD9+2) AND REF(HIGH,JQD9+1)<=REF(HIGH,JQD9+2));
//当前位置左右侧跟前面高点点最高点是否包含判断//
ADQGYCA9:=(REFX(LOW,1)<=REFX(LOW,2) AND REFX(HIGH,1)>=REFX(HIGH,2)) OR (REFX(LOW,1)>=REFX(LOW,2) AND REFX(HIGH,JQG9+1)<=REFX(HIGH,2));
KAKDZC9:=(REF(LOW,1)<=REF(LOW,2) AND REF(HIGH,1)>=REF(HIGH,2)) OR (REF(LOW,1)>=REF(LOW,2) AND REF(HIGH,JQG9+1)<=REF(HIGH,2));
BKDQDYC9:=(REFX(LOW,1)<=REFX(LOW,2) AND REFX(HIGH,1)>=REFX(HIGH,2)) OR (REFX(LOW,1)>=REFX(LOW,2) AND REFX(HIGH,JQG9+1)<=REFX(HIGH,2));
JKDQDZCA9:=(REF(LOW,1)<=REF(LOW,2) AND REF(HIGH,1)>=REF(HIGH,2)) OR (REF(LOW,1)>=REF(LOW,2) AND REF(HIGH,JQG9+1)<=REF(HIGH,2)); //包含成立取最大值//
//按前面顺序//
DZD9:=MIN(REF(HIGH,JQD9+1),REF(HIGH,JQD9+2)); GZD9:=MAX(REF(LOW,JQG9+1),REF(LOW,JQG9+2));
DQGYC9:=MAX(REFX(LOW,1),REFX(LOW,2) );//当前是顶分型,取低点最大值// DQGZC9:=MAX(REF(LOW,1),REF(LOW,2));
DQDYC9:=MIN(REFX(HIGH,1),REFX(HIGH,2) );//当前是底分型,取高点最小值// DQDZC9:=MIN(REF(HIGH,1),REF(HIGH,2)); //高低点包含关系//
BBDQBH9:=LOW//找出特征低点后符合条件的底分型//
FHFXD:= BARSLAST(ZDD)=4 AND FXD AND COUNT(ZDD,BARSLAST(ZGD))=1 AND REF(TZDDDDFZ,BARSLAST(ZDD)) AND HIGH//DRAWTEXT(FHFXD,LOW,'底分型')COL OR RED; //顶分型底分型包含判断//
BDB9:=(FHFXD AND LOWIFELSE(JKDQDZCA9,DQDZC9,REF(HIGH,1)) AND REF(HIGH,JQG9)>IFELSE(BKDQDYC9,DQDYC9,REFX(HIGH,1))
AND LOW[=REF(HIGH,JQG9+1) ]
AND REF(LOW,JQG9)<=REF(LOW,JQG9+1)),REF(LOW,JQG9+2),REF(LOW,JQG9+1)) AND LOW=REF(HIGH,JQG9-1)
AND REF(LOW,JQG9)<=REF(LOW,JQG9-1),REF(LOW,JQG9-2),REF(LOW,JQG9-1)) AND REF(HIGH,JQG9)>IFELSE(LOW<=REFX(LOW,1) AND HIGH>=REFX(HIGH,1) AND LOW<=REF(LOW,1) AND HIGH>=REF(HIGH,1),REFX(HIGH,2),REFX(HIGH,1)) ); //当前底分型,最后一句包含缺口情况 AND LOW//DRAWTEXT(BDB9,LOW*0.98,'底分型')COL OR YELLOW;
//定位第一个底分型// //定位底分型左边一根//
DFXZC1:=REFX(BDB9,1)=1 ;
DFXZC:=DFXZC1 AND COUNT(DFXZC1,BARSLAST(ZGD))=1; //DRAWTEXT(BARSNEXT(BDB9)=1,LOW,'前')COL OR RED; //DRAWTEXT(DFXZC,HIGH,'第一前')COL OR GREEN;//
DWDFXZCFZ:=BACKSET(BDB9 AND LOW<=LLV(LOW,BARSLAST(DFXZC)) AND COUNT(ZGD,BARSLAST(DFXZC))=0,BARSLAST(DFXZC));
DWDYZC:=DWDFXZCFZ AND REFX(DWDFXZCFZ,1)=0;
//DRAWTEXT(DWDYZC,LOW*0.95,'Z底分型')COL OR CYAN;//
TZDQCHD1:=((ZDD AND TZDDDDFZ=0) OR DWDYZC) (DWDFXZCFZ AND ISLASTBAR)
(BARSSINCE(ZDD)=0 AND COUNT(ZGD,BARPOS)=0) ;//特征低去除后低点,产生新低点序列记为TZDQCHD//
//DRAWTEXT(TZDQCHD1,LOW*0.95,'新低序列')COL OR RED;//
//合并低点//
DDQ:=(REFX(TZDQCHD1,1)=1 ) OR
(REFX(TZDQCHD1,1)=1 AND COUNT(ZGD,BARPOS)=0 AND COUNT(TZDQCHD1,BARPOS)=0);
//DRAWTEXT(DDQ,LOW,'前');
DDQ1:=(DDQ AND COUNT(DDQ,BARSLAST(ZGD))=1) OR (BARSSINCE(DDQ)=0); //DRAWTEXT(DDQ1,LOW*0.98,'第一前')COL OR CYAN;//
TZDCJDW:=BACKSET(TZDQCHD1 AND LOW<=LLV(LOW,BARSLAST(DDQ1)) AND COUNT(ZGD,BARSLAST(DDQ1))=0,BARSLAST(DDQ1)); //DRAWTEXT(TZDCJDW ,HIGH,'1')COL OR GREEN;//
TZDQCHD:=(TZDCJDW AND REFX(TZDCJDW,1)=0) OR (TZDCJDW AND ISLASTBAR); //验证//
//DRAWTEXT(TZDQCHD,LOW*0.98,'新低') ; //合并高点//
GDQQ:=(REFX(ZGD,1)=1 )
OR (REFX(ZGD,1)=1 AND COUNT(ZGD,BARPOS)=0 AND COUNT(TZDQCHD,BARPOS)=0);//高点前一根//
GDQQ1:=(GDQQ AND COUNT(GDQQ,BARSLAST(TZDQCHD))=1) OR (BARSSINCE(GDQQ)=0);
FZXGD:=BACKSET(ZGD AND HIGH>=HHV(HIGH,BARSLAST(GDQQ1)) AND COUNT(TZDQCHD,BARSLAST(GDQQ1))=0 ,BARSLAST(GDQQ1) );//赋值新高点,合并,修改过,添加COUNT(ZDD,BARSLAST(GDQQ1))=0// //验证//
//DRAWTEXT(FZXGD,HIGH,'1');
//DRAWTEXT(GDQQ,HIGH,'前')COL OR MAGENTA;
//DRAWTEXT(GDQQ1,HIGH*0.95,'第一前')COL OR CYAN;//
//合并低点后形成的新高点//
TZDQCHG:=((FZXGD AND REFX(FZXGD,1)=0)) OR (FZXGD AND ISLASTBAR) ; //DRAWTEXT(TZDQCHG,HIGH,'新高') ;
OR OR
//找出特征高点//
TZD1:=BACKSET(TZDQCHD AND BARSLAST(TZDQCHG)<4 ,BARSLAST(TZDQCHG));//标记特征低点//
TZDD1:=(TZD1 AND REFX(TZD1,1)=0) OR (TZD1 AND ISLASTBAR);//区分特征低点序列//
TZG1:=BACKSET(TZDQCHG AND BARSLAST(TZDQCHD)<4 ,BARSLAST(TZDQCHD));//标记特征高点//
TZGG1:=(TZG1 AND REFX(TZG1,1)=0) OR (TZG1 AND ISLASTBAR);//区分特征高点序列//
ZQDD:=ZDD AND COUNT(ZGD,BARPOS)=0;//最前低点//
JZG1:=(TZGG1 AND REF(TZDD1,BARSLAST(TZDQCHD))=0 AND REF(REF(TZGG1,BARSLAST(TZDQCHG)),1)=0) OR (TZGG1 AND REF(ZQDD,BARSLAST(TZDQCHD)));//找出特征高点//
TZGQC1:=BACKSET(JZG1,BARSLAST(TZDQCHD));//去除特征高//
TZGQCFZ:=(TZGQC1 AND REFX(TZGQC1,1)=0) OR (TZGQC1 AND ISLASTBAR);//标记定位特征高//
//DRAWTEXT(TZGQCFZ,HIGH*1.05,'去除高点')COL OR MAGENTA;
//定义顶分型//
FXG:= HIGH>=REF(HIGH,1) AND REFX(HIGH,1)<=HIGH;
//找出符合条件底分型//
JQD10:=BARSLAST(TZDQCHD);//距前低// JQG10:=BARSLAST(TZDQCHG);//距前高//
//K线包含处理//
//前面顶部左侧K线第1根是否跟前一根重合//
DQBHGG10:=(REF(LOW,JQG10+1)<=REF(LOW,JQG10+2) AND REF(HIGH,JQG10+1)>=REF(HIGH,JQG10+2)) OR (REF(LOW,JQG10+1)>=REF(LOW,JQG10+2) AND REF(HIGH,JQG10+1)<=REF(HIGH,JQG10+2));
//前面底部的左侧第一根K线是否跟前一根重合//
DDQQBBHH10:=(REF(LOW,JQD10+1)<=REF(LOW,JQD10+2) AND REF(HIGH,JQD10+1)>=REF(HIGH,JQD10+2)) OR (REF(LOW,JQD10+1)>=REF(LOW,JQD10+2) AND REF(HIGH,JQD10+1)<=REF(HIGH,JQD10+2));
//当前位置左右侧跟前面高点点最高点是否包含判断//
ADQGYCA10:=(REFX(LOW,1)<=REFX(LOW,2) AND REFX(HIGH,1)>=REFX(HIGH,2)) OR (REFX(LOW,1)>=REFX(LOW,2) AND REFX(HIGH,JQG10+1)<=REFX(HIGH,2));
KAKDZC10:=(REF(LOW,1)<=REF(LOW,2) AND REF(HIGH,1)>=REF(HIGH,2)) OR (REF(LOW,1)>=REF(LOW,2) AND REF(HIGH,JQG10+1)<=REF(HIGH,2));
BKDQDYC10:=(REFX(LOW,1)<=REFX(LOW,2) AND REFX(HIGH,1)>=REFX(HIGH,2)) OR (REFX(LOW,1)>=REFX(LOW,2) AND REFX(HIGH,JQG10+1)<=REFX(HIGH,2));
JKDQDZCA10:=(REF(LOW,1)<=REF(LOW,2) AND REF(HIGH,1)>=REF(HIGH,2)) OR (R
EF(LOW,1)>=REF(LOW,2) AND REF(HIGH,JQG10+1)<=REF(HIGH,2)); //包含成立取最大值// //按前面顺序//
DZD10:=MIN(REF(HIGH,JQD10+1),REF(HIGH,JQD10+2)); GZD10:=MAX(REF(LOW,JQG10+1),REF(LOW,JQG10+2));
DQGYC10:=MAX(REFX(LOW,1),REFX(LOW,2) );//当前是顶分型,取低点最大值// DQGZC10:=MAX(REF(LOW,1),REF(LOW,2));
DQDYC10:=MIN(REFX(HIGH,1),REFX(HIGH,2) );//当前是底分型,取高点最小值// DQDZC10:=MIN(REF(HIGH,1),REF(HIGH,2)); //高低点包含关系//
BBDQBH10:=LOW//找出特征高点后符合条件的顶分型//
FHFXG:=
BARSLAST(TZDQCHD)>BARSLAST(TZDQCHG) AND BARSLAST(TZDQCHD)>=4 AND FXG AND COUNT(TZDQCHG,BARSLAST(TZDQCHD))=1 AND REF(TZGQCFZ,BARSLAST(TZDQCHG)) AND HIGH>REF(HIGH,BARSLAST(TZDQCHD)); //DRAWTEXT(FHFXG,HIGH*1.03,'顶分型')COL OR YELLOW; //顶分型底分型包含判断//
BGB10:=(FHFXG AND HIGH>IFELSE(DDQQBBHH10,DZD10,REF(HIGH,JQD10+1)) AND REF(LOW,JQD10)REF(CLOSE,JQD10+2) AND HIGH>IFELSE(REF(LOW,JQD10)<=REF(LOW,JQD10+1)
AND REF(HIGH,JQD10)>REF(HIGH,JQD10+1),REF(HIGH,JQD10+2),REF(HIGH,JQD10+1)) AND HIGH>IFELSE(REF(LOW,JQD10)<=REF(LOW,JQD10-1) AND REF(HIGH,JQD10)>REF(HIGH,JQD10-1),REF(HIGH,JQD10-2),REF(HIGH,JQD10-1)) AND REF(LOW,JQD10)=REFX(HIGH,1) AND LOW<=REFX(LOW,1) AND HIGH>=REF(HIGH,1) AND LOW<=REF(LOW,1),REFX(LOW,2),REFX(LOW,1)));//当前顶分型,最后一句是包含缺口情况 AND HIGH>REF(HIGH,JQD)//
//DRAWTEXT(BGB10,HIGH,'顶分型')COL OR RED;//
//定位顶分型左边一根//
GFXZC1:=REFX(BGB10,1)=1;
GFXZC:=GFXZC1 AND COUNT(GFXZC1,BARSLAST(TZDQCHG))=1; //赋值第一个CFXZC//
//DRAWTEXT(BARSNEXT(BGB10)=1 ,LOW,'前')COL OR RED; //DRAWTEXT(GFXZC,HIGH,'第一前')COL OR GREEN;//