股票箱
FH:=HIGH;
FL:=LOW;
SELL:=0*FH;
BUY:=SELL;
SIGNAL:=SELL;
BOXH:SELL,LINETHICK0;
BOXL:SELL,LINETHICK0;
VARIABLE:HC=0,LC=0,BT=FH[1],BB=FH[1];
FOR I=1 TO DATACOUNT DO BEGIN
IF HC>1 THEN BEGIN
IF LC>2 AND BT<=FH[I] THEN BEGIN
BUY[I]:=1;
FOR J=I-1 DOWNTO I-HC DO BEGIN
BOXH[J]:=FH[I-HC],LINETHICK0;
BOXL[J]:=FL[I-LC],LINETHICK0;
END;
HC:=0;
LC:=0;
END;
IF BT>FH[I] THEN BEGIN
IF LC>2 THEN BEGIN
IF BB>=FL[I] THEN BEGIN
SELL[I]:=1;
FOR J=I-1 DOWNTO I-HC DO BEGIN
BOXH[J]:=FH[I-HC],LINETHICK0;
BOXL[J]:=FL[I-LC],LINETHICK0;
END;
HC:=-1;
LC:=0;
END;ELSE BEGIN
BOXH[I]:=FH[I-HC],LINETHICK0;
BOXL[I]:=FL[I-LC],LINETHICK0;
END;
END;
HC:=HC+1;
IF LC>1 THEN BEGIN
IF BB<FL[I] THEN BEGIN
LC:=LC+1;
IF LC=3 THEN BEGIN
SIGNAL[I-HC+1]:=1;
FOR J=I DOWNTO I-HC+1 DO BEGIN
BOXH[J]:=FH[I-HC+1],LINETHICK0;
BOXL[J]:=FL[I-LC+1],LINETHICK0;
END;
END;
END;ELSE
LC:=0;
END;ELSE
IF LC=1 THEN BEGIN
IF BB<FL[I] THEN BEGIN
LC:=LC+1;
END;ELSE
LC:=0;
END;
IF LC=0 AND HC>1 THEN BEGIN
BB:=FL[I];
LC:=LC+1;
END;
END;ELSE BEGIN
HC:=0;
LC:=0;
END;
END;ELSE
IF HC=1 THEN BEGIN
IF BT>FH[I] THEN
HC:=HC+1;ELSE BEGIN
HC:=0;
LC:=0;
END;
END;
IF HC=0 THEN BEGIN
BT:=FH[I];
HC:=HC+1;
END;
END;
PARTLINE(BOXH AND BOXH=REF(BOXH,1),BOXH),POINTDOT,colorFFFF;
PARTLINE(BOXL AND BOXL=REF(BOXL,1),BOXL),POINTDOT,colorFFFF;
PARTLINE(BOXL AND BOXL=REF(BOXL,1),(BOXL+BOXH)/2),POINTDOT,colorFFFF;
STICKLINE((SIGNAL OR REFX(BUY OR SELL,1)) AND BOXH,BOXH,BOXL,0.1,0),POINTDOT,colorFFFF;
DRAWICON(BUY,LOW*0.98,4);
DRAWICON(SELL,HIGH*1.02,5);
BOXHL:=(BOXL+BOXH)/2;
HAC:=CLOSE;
VARIABLE:HA=1;
FOR I=2 TO DATACOUNT DO BEGIN
IF BOXH[I-1]=0 AND BOXH[I]>0 AND (BOXH[I]<>BOXH[I-1] OR BOXL[I]<>BOXL[I-1]) THEN
HAC[I]:=0;
IF BOXH[I-1]>0 AND BOXH[I]>0 AND (BOXH[I]<>BOXH[I-1] OR BOXL[I]<>BOXL[I-1]) THEN
HAC[I]:=0;
IF BOXH[I-1]>0 AND BOXH[I]>0 AND BOXH[I]=BOXH[I-1] AND BOXL[I]<>BOXL[I-1] THEN
HAC[I]:=0;
IF BOXH[I-1]>0 AND BOXH[I]>0 AND BOXH[I]=BOXH[I-1] AND BOXL[I]=BOXL[I-1] THEN
HAC[I]:=HA;
IF BOXH[I-1]>0 AND BOXH[I]>0 AND BOXH[I]=BOXH[I-1] AND BOXL[I]<>BOXL[I-1] THEN
HAC[I]:=HA;
IF BOXH[I-1]>0 AND BOXH[I]>0 AND BOXH[I]=BOXH[I-1] AND BOXH[I-2]=BOXH[I-1] THEN
HAC[I]:=HAC[I-1]+HA;
IF BOXH[I-1]>0 AND BOXH[I]=0 THEN
HAC[I]:=0;
IF BOXH[I-1]=0 AND BOXH[I]=0 THEN
HAC[I]:=0;
END;
NV:=HAC;
KK:=HAC[1];
LL:=HAC[1];
LLT:=HAC[1];
MM:=HAC[1];
MMT:=HAC[1];
FOR I=2 TO DATACOUNT DO BEGIN
IF HAC[I-1]=0 AND HAC[I]>0 THEN
KK:=I-1;
IF HAC[I-1]>0 AND HAC[I]>0 THEN
LLT:=I-1;
IF HAC[I-1]>0 AND HAC[I]>0 THEN
FOR J=KK TO LLT DO BEGIN
NV[J]:=HAC[I]+1;
END;
IF HAC[I-1]>0 AND HAC[I]=0 THEN
LL:=I-1;
IF HAC[I-1]>0 AND HAC[I]=0 THEN
FOR J=KK TO LL DO BEGIN
NV[J]:=HAC[I-1]+1;
END;
END;
XX:=NV;
BB25:=(BOXH-BOXL)/(NV-1)*IF(ISLASTBAR,HAC-1,HAC)*(TAN(-26.5659*3.14159/180))+BOXH;
PARTLINE(REF(BB25,1)<>0 AND BOXH=REF(BOXH,1) AND BB25>0 AND BB25>BOXL-BOXL*0.05,BB25),POINTDOT,LINETHICK1,colorFF00FF;
DRAWLINE(BB25>0 AND BB25=BOXH AND BARSCOUNT(CLOSE)>DATACOUNT-45,BB25,BB25>0 AND BB25=BOXL AND BARSCOUNT(CLOSE)>DATACOUNT-45,BB25,1),colorFF00FF;
BB45:=(BOXH-BOXL)/(NV-1)*IF(ISLASTBAR,HAC-1,HAC)*(TAN(-45*3.14159/180))+BOXH;
PARTLINE(REF(BB45,1)<>0 AND BOXH=REF(BOXH,1) AND BB45>0 AND BB45>BOXL-BOXL*0.05,BB45),LINETHICK1,colorFF00FF;
DRAWLINE(BB45>0 AND BB45=BOXH AND BARSCOUNT(CLOSE)>DATACOUNT-45,BB45,BB45>0 AND BB45=BOXL AND BARSCOUNT(CLOSE)>DATACOUNT-45,BB45,1),colorFF00FF;
BB66:=(BOXH-BOXL)/(NV-1)*IF(ISLASTBAR,HAC-1,HAC)*(TAN(-63.435*3.14159/180))+BOXH;
PARTLINE(REF(BB66,1)<>0 AND BOXH=REF(BOXH,1) AND BB66>0 AND BB66>BOXL-BOXL*0.025,BB66),POINTDOT,LINETHICK1,colorFF00FF;
XBB23:=(BOXH-BOXL)/(NV-1)*IF(ISLASTBAR,HAC-1,HAC)*TAN(26.5659*3.14159/180)+BOXL;
PARTLINE(XBB23>0 AND XBB23>BOXL AND XBB23<BOXH+BOXH*0.05,XBB23),POINTDOT,LINETHICK1,colorFF00;
DRAWLINE(XBB23>0 AND XBB23=BOXL AND BARSCOUNT(CLOSE)>DATACOUNT-45,XBB23,XBB23>0 AND XBB23=BOXH AND BARSCOUNT(CLOSE)>DATACOUNT-45,XBB23,1),colorFF00;
XBB45:=(BOXH-BOXL)/(NV-1)*IF(ISLASTBAR,HAC-1,HAC)*TAN(45*3.14159/180)+BOXL;
PARTLINE(XBB45>0 AND XBB45>BOXL AND XBB45<BOXH+BOXH*0.05,XBB45),LINETHICK1,colorFF00;
DRAWLINE(XBB45>0 AND XBB45=BOXL AND BARSCOUNT(CLOSE)>DATACOUNT-45,XBB45,XBB45>0 AND XBB45=BOXH AND BARSCOUNT(CLOSE)>DATACOUNT-45,XBB45,1),colorFF00;
XBB66:=(BOXH-BOXL)/(NV-1)*IF(ISLASTBAR,HAC-1,HAC)*TAN(63.435*3.14159/180)+BOXL;
PARTLINE(XBB66>0 AND XBB66>BOXL AND XBB66<BOXH+BOXH*0.025,XBB66),POINTDOT,LINETHICK1,colorFF00;
AC:=CLOSE;
AH:=HIGH;
AL:=LOW;
AO:=OPEN;
STICKLINE(AC>=AO,AH,AC,1,0),color8899;
STICKLINE(AC>=AO,AH,AC,0,0),color77FFEE;
STICKLINE(AC>=AO,AO,AL,1,0),color8899;
STICKLINE(AC>=AO,AO,AL,0,0),color77FFEE;
STICKLINE(AC>AO,AC,AO,8,0),color8899;
STICKLINE(AC>AO,AC,AO,7,0),color1199AA;
STICKLINE(AC>AO,AC,AO,6,0),color22AABB;
STICKLINE(AC>AO,AC,AO,5,0),color33BBCC;
STICKLINE(AC>AO,AC,AO,4,0),color44CCDD;
STICKLINE(AC>AO,AC,AO,3,0),color55DDEE;
STICKLINE(AC>AO,AC,AO,2,0),color66EEEE;
STICKLINE(AC>AO,AC,AO,1,0),color77FFEE;
STICKLINE(AC<=AO,AH,AC,1,0),colorFF8800;
STICKLINE(AC<=AO,AH,AC,0,0),colorFFFF33;
STICKLINE(AC<=AO,AO,AL,1,0),colorFF8800;
STICKLINE(AC<=AO,AO,AL,0,0),colorFFFF33;
STICKLINE(AC<=AO,AC,AO,8,0),colorFF8800;
STICKLINE(AC<=AO,AC,AO,7,0),colorFF9900;
STICKLINE(AC<=AO,AC,AO,6,0),colorFFAA11;
STICKLINE(AC<=AO,AC,AO,5,0),colorFFBB11;
STICKLINE(AC<=AO,AC,AO,4,0),colorFFCC22;
STICKLINE(AC<=AO,AC,AO,3,0),colorFFDD22;
STICKLINE(AC<=AO,AC,AO,2,0),colorFFEE33;
STICKLINE(AC<=AO,AC,AO,1,0),colorFFFF33; |