麻煩老師幫我改博弈的,謝謝 [博易POBO]
咨詢內容:
麻煩老師幫我改博弈的,謝謝
來自 Pobo 5.5.88.0
N:=5;
J:=1;
S:=1;
M:=20;
G:=MA(C,5);
D:=MA(C,10);
NNH:=BARSLAST(H=HHV(H,M)) ,NODRAW;
NNL:=BARSLAST(L=LLV(L,M)) ,NODRAW;
NN:=IF? (REF(G,NNH)>REF(D,NNH) AND NNH<=M-3,NNH,IF? (REF(G,NNL)<REF(D,NNL) AND NNL<=M-3,NNL,M-2)) ,NODRAW;
NNN:=IF? (ISLASTBAR AND NN>0,NN,M-2) ,NODRAW;
H1:=REF(H,NNN)=HHV(H,M-1);
L1:=REF(L,NNN)=LLV(L,M-1);
FG01:=BACKSET(H1,NNN+1)>BACKSET(H1,NNN),NODRAW;//只設置前面第M-1個
FD01:=BACKSET(L1,NNN+1)>BACKSET(L1,NNN) ,NODRAW;
FG02:=FG01=FD01 AND G>D,NODRAW;
FD02:=FG01=FD01 AND G<D,NODRAW;
TTTT:=BARSLAST(FD01),NODRAW;
FG0:=FG01 AND IF? (FG02=1,H=HHV(H,BARSLAST(REF(FD01,1))+1),H=HHV(H,IF? (BARSLAST(L=LLV(L,M))>=M-2,M-2,BARSLAST(FD01)))) AND FD02=0 ,NODRAW;
FD0:=FD01 AND IF? (FD02=1,L=LLV(L,BARSLAST(REF(FG01,1))+1),L=LLV(L,IF? (BARSLAST(H=HHV(L,M))>=M-2,M-2,BARSLAST(FG01))))? AND FG02=0 ,NODRAW;
//高低點間周期
GT:=BARSLAST(FG0),NODRAW;
DT:=BARSLAST(FD0),NODRAW;
//第一次處理高低點間多余的點
LLLL:=DT=0 AND REF(DT,1)<GT AND L>REF(L,REF(DT,1)+1),NODRAW;
FG1:=BACKSET(REFX(GT,1)=0 AND GT<DT AND REFX(H,1)>=REF(H,GT),GT+1),NODRAW;
FD1:=BACKSET(REFX(DT,1)=0 AND DT<GT AND REFX(L,1)<=REF(L,DT),DT+1),NODRAW;
FG11:=IF? (GT=0 AND REF(GT,1)<DT AND IF? (REF(G,BARSLAST(L=LLV(L,M)))>REF(D,BARSLAST(L=LLV(L,M))),BARSLAST(L=LLV(L,M))<M-2,1) AND? H<REF(H,REF(GT,1)+1),1,0),NODRAW;
FD11:=IF? (DT=0 AND REF(DT,1)<GT AND IF? (REF(G,BARSLAST(H=HHV(H,M)))<REF(D,BARSLAST(H=HHV(H,M))),BARSLAST(H=HHV(H,M))<M-2,1) AND L>REF(L,REF(DT,1)+1),1,0),NODRAW;
GT1:=BARSLAST(FG11<>1 AND FG1<>1 AND FG0),NODRAW;
DT1:=BARSLAST(FD11<>1 AND FD1<>1 AND FD0),NODRAW;
FD2:=BACKSET(REFX(GT1,1)=0 AND DT1<3 AND GT1-DT1<4 AND REF(L,DT1)>LLV(L,GT1+M-2),DT1+1),NODRAW;
FG2A:=BACKSET(REFX(GT1,1)=0 AND DT1<3 AND GT1-DT1<4 AND REF(L,DT1)<=LLV(L,GT1+M-2) AND REF(H,GT1)>HHV(H,GT1+M-2),GT1+1),NODRAW;
FG2B:=IF? (GT1=0 AND DT1<4 AND REF(GT1,1)-DT1<4 AND REF(L,DT1)<=LLV(L,REF(GT1,1)+M-1) AND H>HHV(H,REF(GT1,1)+M-1),1,0),NODRAW;
FG2:=BACKSET(REFX(DT1,1)=0 AND GT1<3 AND DT1-GT1<4 AND REF(H,GT1)<HHV(H,DT1+M-2),GT1+1),NODRAW;
FD2A:=BACKSET(REFX(DT1,1)=0 AND GT1<3 AND DT1-GT1<4 AND REF(H,GT1)>=HHV(L,DT1+M-2) AND REF(L,DT1)>LLV(L,DT1+M-2),DT1+1),NODRAW;
FD2B:=IF? (DT1=0 AND GT1<4 AND REF(DT1,1)-GT1<4 AND REF(H,GT1)>=HHV(H,REF(DT1,1)+6) AND L>LLV(L,REF(DT1,1)+M-1),1,0),NODRAW;
TTTTTT:= H<REF(H,REF(GT1,1)+1) AND DT1<4,NODRAW;
HHHHHH:=REF(LLV(L,10),DT1),NODRAW;
//前長后短;
FG21:=IF? (GT1=0 AND DT1<4 AND H<=REF(H,REF(GT1,1)+1)? ,1,0),NODRAW;
FD21:=IF? (DT1=0 AND GT1<4? AND L>=REF(L,REF(DT1,1)+1) ,1,0),NODRAW;
FD231:=BACKSET(REFX(GT1,1)=0 AND DT1>3 AND GT1>DT1 AND GT1-DT1<4 AND REFX(H,1)>REF(H,GT1) AND REF(L,DT1)>REF(LLV(L,10),DT1),DT1+1),NODRAW;
FG23:=BACKSET(REFX(GT1,1)=0 AND DT1>3 AND GT1>DT1 AND? GT1-DT1<4 AND REFX(H,1)>REF(H,GT1) AND (REF(H,GT1)<REF(HHV(H,13),GT1) OR REF(FD231,DT1)=0),GT1+1),NODRAW;
FG231:=BACKSET(REFX(DT1,1)=0 AND GT1>3? AND DT1>GT1 AND DT1-GT1<4 AND REFX(L,1)<REF(L,DT1) AND REF(H,GT1)<REF(HHV(H,10),GT1) ,GT1+1),NODRAW;
FD23:=BACKSET(REFX(DT1,1)=0 AND GT1>3? AND DT1>GT1 AND DT1-GT1<4 AND REFX(L,1)<REF(L,DT1) AND ( REF(L,DT1)>REF(LLV(L,13),DT1) OR REF(FG231,GT1)=0),DT1+1),NODRAW;
FDD23:=REF(H,GT1)<REF(HHV(H,10),GT1) OR REF(FD23,DT1)=0,NODRAW;
FD24:=BACKSET(REFX(GT1,1)=0 AND DT1>3 AND GT1>DT1 AND GT1-DT1<4 AND REFX(H,1)<HHV(H,GT1+3) AND REF(L,DT1)>LLV(L,DT1+5),DT1+1),NODRAW;
FG24:=BACKSET(REFX(DT1,1)=0 AND GT1>3? AND DT1>GT1 AND DT1-GT1<4 AND REFX(L,1)>LLV(L,DT1+3) AND REF(H,GT1)<HHV(H,GT1+5),GT1+1),NODRAW;
GT2:=BARSLAST(FG21<>1 AND FG23<>1 AND FG231<>1 AND FG24<>1? ?AND FG2<>1 AND FG2A<>1 AND FG2B<>1 AND GT1=0),NODRAW;
DT2:=BARSLAST(FD21<>1 AND FD23<>1 AND FD231<>1 AND FD24<>1? AND FD2<>1 AND FD2A<>1 AND FD2B<>1 AND DT1=0),NODRAW;
FG3:=BACKSET(REFX(GT2,1)=0 AND GT2<DT2 AND REFX(H,1)>=REF(H,GT2),GT2+1),NODRAW;
FD3:=BACKSET(REFX(DT2,1)=0 AND DT2<GT2 AND REFX(L,1)<=REF(L,DT2),DT2+1),NODRAW;
FG31:=IF? (GT2=0 AND REF(GT2,1)<DT2 AND H<REF(H,REF(GT2,1)+1),1,0),NODRAW;
FD31:=IF? (DT2=0 AND REF(DT2,1)<GT2 AND L>REF(L,REF(DT2,1)+1),1,0),NODRAW;
GT3:=BARSLAST(GT2=0 AND FG3<>1 AND FG31<>1 ),NODRAW;
DT3:=BARSLAST(DT2=0 AND? FD3<>1 AND FD31<>1),NODRAW;
FG4:=BACKSET(REFX(GT3,1)=0 AND GT3<DT3 AND REFX(H,1)>=REF(H,GT3),GT3+1),NODRAW;
FD4:=BACKSET(REFX(DT3,1)=0 AND DT3<GT3 AND REFX(L,1)<=REF(L,DT3),DT3+1),NODRAW;
FG41:=IF? (GT3=0 AND REF(GT3,1)<DT3 AND H<REF(H,REF(GT3,1)+1),1,0),NODRAW;
FD41:=IF? (DT3=0 AND REF(DT3,1)<GT3 AND L>REF(L,REF(DT3,1)+1),1,0),NODRAW;
HHH:=GT3=0 AND FG31<>1 AND? FG3<>1,NODRAW;
LLL:=DT3=0 AND FD31<>1 AND? FD3<>1,NODRAW;
//DRAWNUMBER1(HHH,C,ABS(H-VALUEWHEN(LLL,L)),1);
//DRAWNUMBER1(LLL,O,ABS(L-VALUEWHEN(HHH,H)),1),VALIGN0;
A:=H>REF(H,1)&&H>REFX(H,1)&&L>REF(L,1)&&L>REFX(L,1)&&C<O;
AA:=H<REF(H,1)&&H<REFX(H,1)&&L<REF(L,1)&&L<REFX(L,1)&&C>O;
DRAWICON(HHH,H,2);
DRAWICON(LLL,L,1),VALIGN0;
DRAWCOLORKLINE(LLL,COLORMAGENTA,1);
DRAWCOLORKLINE(HHH,COLORMAGENTA,1);
P:=BACKSET(ISLASTBAR,SUMBARS(HHH||LLL,2));
XX:=BARSLAST(REF(HHH,1))<BARSLAST(REF(LLL,1))&&L<LV(L,BARSLAST(REF(HHH,1))),ICON(0,'ICO145'),VALIGN0;
XX1:=BARSLAST(REF(HHH,1))<BARSLAST(REF(LLL,1))&&EXIST(XX,BARSLAST(REF(HHH,1)))&&REFX(XX||ISLASTBAR&&BARSLAST(REF(HHH,1))<BARSLAST(REF(LLL,1)),1)&&EXIST(H>VALUEWHEN(XX,H),BARSLAST(XX)+1),ICON(1,'ICO12');
//DRAWSL( CROSS( BACKSET(XX1,HHVBARS(H,BARSLAST(XX)+1)+1),0.5),H,0,5,0,COLORWHITE);
YY:=BARSLAST(REF(HHH,1))>BARSLAST(REF(LLL,1))&&H>HV(H,BARSLAST(REF(LLL,1))),ICON(0,'ICO145'),VALIGN0;
YY1:=BARSLAST(REF(HHH,1))>BARSLAST(REF(LLL,1))&&EXIST(YY,BARSLAST(REF(LLL,1)))&&REFX(YY||ISLASTBAR&&BARSLAST(REF(HHH,1))>BARSLAST(REF(LLL,1)),1)&&EXIST(L<VALUEWHEN(YY,L),BARSLAST(YY)+1),ICON(1,'ICO12');
//DRAWSL( CROSS( BACKSET(YY1,LLVBARS(L,BARSLAST(YY)+1)+1),0.5),L,0,5,0,COLORWHITE),DOT;
//需要修改涉及的部分
PA:=CROSS(COUNT(CROSS(BACKSET(XX1,HHVBARS(H,BARSLAST(XX)+1)+1),0.5),BARSLAST(REF(HHH,1)))=J,0.5);
PB:=CROSS(BACKSET(PA,LLVBARS(L,BARSLAST(REF(HHH,1)))+1),0.5);
QA:=CROSS(COUNT(CROSS( BACKSET(YY1,LLVBARS(L,BARSLAST(YY)+1)+1),0.5),BARSLAST(REF(LLL,1)))=S,0.5);
QB:=CROSS(BACKSET(QA,HHVBARS(H,BARSLAST(REF(LLL,1)))+1),0.5);
//DRAWSL(PA&&P,H,0,5,0,COLORRED);
//DRAWSL(PB&&P,L,0,5,0,COLORGREEN);
X:=C<VALUEWHEN(PA,H-((H-VALUEWHEN(PB,L))*1.382));
PA1:=CROSS(BACKSET(XX1,HHVBARS(H,BARSLAST(XX)+1)+1),0.5) && EXIST(C<H-((H-VALUEWHEN(PB,L))*1.382),BARSLAST(REF(HHH,1))) && EXIST(PA,BARSLAST(REF(HHH,1)));
PB1:=CROSS(BACKSET(PA1,LLVBARS(L,BARSLAST(CROSS(COUNT(C<(H-(H-VALUEWHEN(PB,L)))*1.382,BARSLAST(PA))=1,0.5)))+1),0.5);
//DRAWSL(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5)&&P,H,0,5,0,COLORRED);
//DRAWSL(CROSS(BACKSET(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5)&&P,BARSLAST(PB1)+1),0.5),L,0,5,0,COLORGREEN);
//DRAWSL(QA&&P,L,0,5,0,COLORRED);
//DRAWSL(QB&&P,H,0,5,0,COLORGREEN);
Y:=C>VALUEWHEN(QA,VALUEWHEN(QB,H)+(VALUEWHEN(QB,H)-L)*0.382);
QA1:=CROSS(BACKSET(YY1,LLVBARS(L,BARSLAST(YY)+1)+1),0.5) && EXIST(C>VALUEWHEN(QA,VALUEWHEN(QB,H)+(VALUEWHEN(QB,H)-L)*0.382),BARSLAST(REF(LLL,1))) && EXIST(QA,BARSLAST(REF(LLL,1)));
QB1:=CROSS(BACKSET(QA1,HHVBARS(H,BARSLAST(CROSS(COUNT(C>VALUEWHEN(QA,VALUEWHEN(QB,H)+(VALUEWHEN(QB,H)-L)*0.382),BARSLAST(QA))=1,0.5)))+1),0.5);
//DRAWSL(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,L,0,5,0,COLORRED);
//DRAWSL(CROSS(BACKSET(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,BARSLAST(QB1)+1),0.5),H,0,5,0,COLORGREEN);
//需要修改涉及的部分
QAX:=CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5),NODRAW;
PAX:=CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5),NODRAW;
////DRAWSL(PAX,H-((H-VALUEWHEN(PB1,L))*1.382),0,5,0,COLORYELLOW);
////DRAWSL(PA,H-((H-VALUEWHEN(PB,L))*1.382),0,5,0,COLORYELLOW);
////DRAWSL(QA,VALUEWHEN(QB,H)+((VALUEWHEN(QB,H)-L)*0.382),0,5,0,COLORYELLOW);
////DRAWSL(QAX,L+((VALUEWHEN(QB1,H)-L)*1.382),0,5,0,COLORYELLOW);
/*
DRAWCOLORKLINE( COUNT(H>VALUEWHEN(QA,VALUEWHEN(QB,H)+((VALUEWHEN(QB,H)-L)*0.382)),BARSLAST(QA))=1&&H>VALUEWHEN(QA,VALUEWHEN(QB,H)+((VALUEWHEN(QB,H)-L)*0.382))&&P,COLORYELLOW,0);
DRAWCOLORKLINE(COUNT(H>VALUEWHEN(QAX,L+((VALUEWHEN(QB1,H)-L)*1.382)),BARSLAST(QAX))=1&& H>VALUEWHEN(QAX,L+((VALUEWHEN(QB1,H)-L)*1.382)) &&P? ,COLORYELLOW,0 );
DRAWCOLORKLINE(COUNT(L<VALUEWHEN(PA,H-((H-VALUEWHEN(PB,L))*1.382)),BARSLAST(PA))=1&&L<VALUEWHEN(PA,H-((H-VALUEWHEN(PB,L))*1.382))? &&P ,COLORYELLOW,0? ?);
DRAWCOLORKLINE(COUNT(L<VALUEWHEN(PAX,H-((H-VALUEWHEN(PB1,L))*1.382)),BARSLAST(PAX))=1&&L<VALUEWHEN(PAX,H-((H-VALUEWHEN(PB1,L))*1.382)) &&P,COLORYELLOW,0 );
*/
//HXM為最后笑臉之后的最高點,LXM為最后哭臉之后的最低點
HXM:=IF(VALUEWHEN(ISLASTBAR,BARSLAST(LLL))<VALUEWHEN(ISLASTBAR,BARSLAST(HHH)),HHV(H,BARSLAST(LLL)+1),REF(H,BARSLAST(HHH)));
////DRAWSL(ISLASTBAR,HXM,0,-MIN(BARSLAST(HHH),BARSLAST(LLL)),0,COLORYELLOW),LINETHICK4;??
LXM:=IF(VALUEWHEN(ISLASTBAR,BARSLAST(HHH))<VALUEWHEN(ISLASTBAR,BARSLAST(LLL)),LLV(L,BARSLAST(HHH)+1),REF(L,BARSLAST(LLL)));
////DRAWSL(ISLASTBAR,LXM,0,-MIN(BARSLAST(HHH),BARSLAST(LLL)),0,COLORYELLOW);?
//以下為二合一高低點公式
HX1:=VALUEWHEN(PA,H);//PAH
LX1:=VALUEWHEN(PA,VALUEWHEN(PB,L));
HX2:=VALUEWHEN(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5),H);//PA1H
LX2:=VALUEWHEN(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5),VALUEWHEN(PB1,L));
PX:=CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5),NODRAW;
LX3:=VALUEWHEN(QA,L);//QAH
HX3:=VALUEWHEN(QA,VALUEWHEN(QB,H));
LX4:=VALUEWHEN(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5),L);//PA1H
HX4:=VALUEWHEN(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5),VALUEWHEN(QB1,H));
QX:=CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5),NODRAW;
ZZ:=IF(PA||PX,IF(PA,LX1,IF(PX,LX2,0)),0),NODRAW;
ZZ1:=IF(QA||QX,IF(QA,HX3,IF(QX,HX4,0)),0),NODRAW;
PPP:=ZZ-REFX1(LXM,10000),NODRAW;
QQQ:=REFX1(HXM,10000)-ZZ1,NODRAW;
PP1:=BACKSET(ISLASTBAR,LLVBARS(QQQ,MIN(BARSLAST(HHH),BARSLAST(LLL)))+1);
PP2:=BACKSET(ISLASTBAR,LLVBARS(IF(PPP>0,PPP,99999),MIN(BARSLAST(HHH),BARSLAST(LLL)))+1);
COND1:=REFX1(BARSLAST(HHH)>BARSLAST(LLL),10000);
COND2:=BACKSET(ISLASTBAR,MIN(BARSLAST(HHH),BARSLAST(LLL)));
//DRAWTEXT(CROSS(PP1,0.5)&&(QA||QX)&&COND1&&COND2,L,'低點'),VALIGN0;//上升低點
高點1:=BACKSET(CROSS(PP1,0.5),IF(QA,BARSLAST(QB),BARSLAST(QX))+1);
//DRAWTEXT(CROSS(高點1,0.5)&&COND1&&COND2,H,'高點');//上升高點
//DRAWTEXT(CROSS(PP2,0.5)&&(PA||PX)&&NOT(COND1)&&COND2,H,'高點');//下降高點
低點1:=BACKSET(CROSS(PP2,0.5),IF(PA,BARSLAST(PB),BARSLAST(PX))+1);
//DRAWTEXT(CROSS(低點1,0.5)&&NOT(COND1)&&COND2,L,'低點'),VALIGN0;//下降低點
X0:=CROSS( BACKSET(ISLASTBAR,SUMBARS(HHH||LLL,1)),0.5);
//變量AAA的設置
AAA:=VALUEWHEN(X0,IF(HHH,H,L)),NODRAW;
BBB:=IF(VALUEWHEN(X0,HHH),REFX1(LXM,10000),REFX1(HXM,10000)),NODRAW ;
//DRAWTEXT(ISLASTBAR,AAA,'表情位置'),VALIGN1,ALIGN0;
//DRAWTEXT(ISLASTBAR,BBB,'XM線位置'),VALIGN1,ALIGN0;
WE:=CROSS(高點1,0.5)&&COND1&&COND2;
WR:=CROSS(PP2,0.5)&&(PA||PX)&&NOT(COND1)&&COND2;
RE:=REFX1(VALUEWHEN(WE||WR,H),10000);
QW:=CROSS(PP1,0.5)&&(QA||QX)&&COND1&&COND2;//低
QR:=CROSS(低點1,0.5)&&NOT(COND1)&&COND2;
QE:=REFX1(VALUEWHEN(QW||QR,L),10000);
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)<BARSLAST(LLL)&&EXIST(WE||WR,BARPOS)=0,BBB+(AAA-BBB)*0.382,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)<BARSLAST(LLL)&&EXIST(WE||WR,BARPOS)=0,BBB+(AAA-BBB)*0.618,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)<BARSLAST(LLL)&&EXIST(WE||WR,BARPOS)=1,BBB+(RE-BBB)*0.382,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)<BARSLAST(LLL)&&EXIST(WE||WR,BARPOS)=1,BBB+(RE-BBB)*0.618,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)>BARSLAST(LLL)&&EXIST(QW||QR,BARPOS)=0,BBB-(BBB-AAA)*0.382,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)>BARSLAST(LLL)&&EXIST(QW||QR,BARPOS)=0,BBB-(BBB-AAA)*0.618,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)>BARSLAST(LLL)&&EXIST(QW||QR,BARPOS)=1,BBB-(BBB-QE)*0.382,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)>BARSLAST(LLL)&&EXIST(QW||QR,BARPOS)=1,BBB-(BBB-QE)*0.618,0,10,0,COLORBLUE),DOT;
HH:=VALUEWHEN(CROSS(PP2,0.5)&&(PA||PX)&&NOT(COND1)&&COND2,H),NODRAW;
LL:=VALUEWHEN( CROSS(低點1,0.5)&&NOT(COND1)&&COND2,L),NODRAW;
////DRAWSL(ISLASTBAR, BBB+ (HH-LL) /(AAA-LL) *(AAA-BBB),0,10,0,COLORRED),DOT;
HH0:=VALUEWHEN(CROSS(高點1,0.5)&&COND1&&COND2,H),NODRAW;
LL0:=VALUEWHEN(CROSS(PP1,0.5)&&(QA||QX)&&COND1&&COND2,L),NODRAW;
////DRAWSL(ISLASTBAR, AAA+? (LL0-AAA)/(HH0-AAA) *(BBB-AAA)? ,0,10,0,COLORRED),DOT;
DF:=(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(PA&&P,H),10000))/(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(PA&&P,VALUEWHEN(PB,L)),10000)),NODRAW;
SF:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*DF,NODRAW;
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),SF,0,10,0,COLORYELLOW);
SFX:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(BBB,10000))*DF,NODRAW;
////DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),SFX,0,10,0,COLORYELLOW),DOT;
HONG:=VALUEWHEN(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5)&&P,H);
LU:=VALUEWHEN(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5)&&P,VALUEWHEN(PB1,L));
DF1:=(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(HONG,10000))/(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(LU,10000)),NODRAW;
SF1:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*DF1,NODRAW;
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),SF1,0,10,0,COLORYELLOW);
SF1X:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(BBB,10000))*DF1,NODRAW;
////DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),SF1X,0,10,0,COLORYELLOW),DOT;
DTD:=(REFX1(VALUEWHEN(QA&&P,L),10000)-REFX1(VALUEWHEN(LLL,L),10000))/(REFX1(VALUEWHEN(QA&&P,VALUEWHEN(QB,H)),10000)-REFX1(VALUEWHEN(LLL,L),10000)),NODRAW;
ST:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*DTD,NODRAW;
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),ST,0,10,0,COLORYELLOW);
STX:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(BBB,10000)-REFX1(VALUEWHEN(LLL,L),10000))*DTD,NODRAW;
////DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),STX,0,10,0,COLORYELLOW),DOT;
//VERTLINE(QA&&P,COLORMAGENTA);//倒數(shù)第二組 粉?
HONG1:=VALUEWHEN(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,L);
LU1:=VALUEWHEN(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,VALUEWHEN(QB1,H));
//VERTLINE(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,COLORRED);//最后一組紅?
DTT:=(REFX1(HONG1,10000)-REFX1(VALUEWHEN(LLL,L),10000))/(REFX1(LU1,10000)-REFX1(VALUEWHEN(LLL,L),10000)),NODRAW;
STT:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*DTT,NODRAW;
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HH),STT,0,10,0,COLORYELLOW);?
STTX:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(BBB,10000)-REFX1(VALUEWHEN(LLL,L),10000))*DTT,NODRAW;
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),STTX,0,10,0,COLORYELLOW),LINETHICK2;?
//設最近圖標為AAAA,次近圖標為BBBB
AAAA:=CROSS(BACKSET(ISLASTBAR,SUMBARS(HHH||LLL,1)),0.5);
BBBB:=CROSS(BACKSET(ISLASTBAR,SUMBARS(HHH||LLL,2)),0.5);
//VALUEWHEN(AAAA,IF(HHH,H,L));
//VALUEWHEN(BBBB,IF(HHH,H,L));
XC1:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*0.382;
XC2:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*0.618;
XC3:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*1.382;
/*
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),XC1,0,15,0,COLORBLUE);
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),XC2,0,15,0,COLORBLUE);
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),XC3,0,15,0,COLORBLUE);
*/
XC4:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*0.382;
XC5:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*0.618;
XC6:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*1.382;
/*
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),XC4,0,15,0,COLORBLUE);
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),XC5,0,15,0,COLORBLUE);
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),XC6,0,15,0,COLORBLUE);
*/
HM:=CROSS(BACKSET(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),HHVBARS(H,BARSLAST(LLL)+1)+1),0.5),ICON(1,'ICO12'),VALIGN0;
LM:=CROSS(BACKSET(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),LLVBARS(L,BARSLAST(HHH)+1)+1),0.5),ICON(1,'ICO11');
WW:=CROSS( BACKSET(XX1,HHVBARS(H,BARSLAST(XX)+1)+1),0.5),NODRAW;
TT:=IF(( HHH||WW) &&H>REFX1(VALUEWHEN(HM,H),10000),H-REFX1(VALUEWHEN(HM,H),10000),99999999 ),NODRAW;
ZX:=CROSS(BACKSET(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),LLVBARS(TT,BARPOS)+1),0.5),ICON(0,'ICO16圖6');
////DRAWSL(ZX,H,0,1,2,COLORGREEN),LINETHICK2;
ZQA1:=SUMBARS(PA&&P||CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5)&&P ,1);
ZQA2:=SUMBARS(QA&&P||CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,1);
HS1:=BACKSET(ISLASTBAR,ZQA1);
HS2:=BACKSET(ISLASTBAR,ZQA2);
////DRAWSL(CROSS(HS1=1,0.5),H,0,5,0,COLORRED),LINETHICK3;
////DRAWSL(CROSS(HS2=1,0.5),L,0,5,0,COLORRED),LINETHICK3;
ZQB1:=SUMBARS(QB&&P||CROSS(BACKSET(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,BARSLAST(QB1)+1),0.5),1);
ZQB2:=SUMBARS(PB&&P||CROSS(BACKSET(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5)&&P,BARSLAST(PB1)+1),0.5),1);
LS1:=BACKSET(ISLASTBAR,ZQB1);
LS2:=BACKSET(ISLASTBAR,ZQB2);
////DRAWSL(CROSS(LS1=1,0.5),H,0,5,0,COLORGREEN),LINETHICK3;
////DRAWSL(CROSS(LS2=1,0.5),L,0,5,0,COLORGREEN),LINETHICK3;
<lv?要改為<=llv
DRAWCOLORKLINE換成 drawklineex
畫圖標函數(shù)用 drawicon
refx1換成refx,然后10000都改為datacount-barpos-1 改了不行 來源 程序化久久網
J:=1;
S:=1;
M:=20;
G:=MA(C,5);
D:=MA(C,10);
NNH:=BARSLAST(H=HHV(H,M)) ,NODRAW;
NNL:=BARSLAST(L=LLV(L,M)) ,NODRAW;
NN:=IF? (REF(G,NNH)>REF(D,NNH) AND NNH<=M-3,NNH,IF? (REF(G,NNL)<REF(D,NNL) AND NNL<=M-3,NNL,M-2)) ,NODRAW;
NNN:=IF? (ISLASTBAR AND NN>0,NN,M-2) ,NODRAW;
H1:=REF(H,NNN)=HHV(H,M-1);
L1:=REF(L,NNN)=LLV(L,M-1);
FG01:=BACKSET(H1,NNN+1)>BACKSET(H1,NNN),NODRAW;//只設置前面第M-1個
FD01:=BACKSET(L1,NNN+1)>BACKSET(L1,NNN) ,NODRAW;
FG02:=FG01=FD01 AND G>D,NODRAW;
FD02:=FG01=FD01 AND G<D,NODRAW;
TTTT:=BARSLAST(FD01),NODRAW;
FG0:=FG01 AND IF? (FG02=1,H=HHV(H,BARSLAST(REF(FD01,1))+1),H=HHV(H,IF? (BARSLAST(L=LLV(L,M))>=M-2,M-2,BARSLAST(FD01)))) AND FD02=0 ,NODRAW;
FD0:=FD01 AND IF? (FD02=1,L=LLV(L,BARSLAST(REF(FG01,1))+1),L=LLV(L,IF? (BARSLAST(H=HHV(L,M))>=M-2,M-2,BARSLAST(FG01))))? AND FG02=0 ,NODRAW;
//高低點間周期
GT:=BARSLAST(FG0),NODRAW;
DT:=BARSLAST(FD0),NODRAW;
//第一次處理高低點間多余的點
LLLL:=DT=0 AND REF(DT,1)<GT AND L>REF(L,REF(DT,1)+1),NODRAW;
FG1:=BACKSET(REFX(GT,1)=0 AND GT<DT AND REFX(H,1)>=REF(H,GT),GT+1),NODRAW;
FD1:=BACKSET(REFX(DT,1)=0 AND DT<GT AND REFX(L,1)<=REF(L,DT),DT+1),NODRAW;
FG11:=IF? (GT=0 AND REF(GT,1)<DT AND IF? (REF(G,BARSLAST(L=LLV(L,M)))>REF(D,BARSLAST(L=LLV(L,M))),BARSLAST(L=LLV(L,M))<M-2,1) AND? H<REF(H,REF(GT,1)+1),1,0),NODRAW;
FD11:=IF? (DT=0 AND REF(DT,1)<GT AND IF? (REF(G,BARSLAST(H=HHV(H,M)))<REF(D,BARSLAST(H=HHV(H,M))),BARSLAST(H=HHV(H,M))<M-2,1) AND L>REF(L,REF(DT,1)+1),1,0),NODRAW;
GT1:=BARSLAST(FG11<>1 AND FG1<>1 AND FG0),NODRAW;
DT1:=BARSLAST(FD11<>1 AND FD1<>1 AND FD0),NODRAW;
FD2:=BACKSET(REFX(GT1,1)=0 AND DT1<3 AND GT1-DT1<4 AND REF(L,DT1)>LLV(L,GT1+M-2),DT1+1),NODRAW;
FG2A:=BACKSET(REFX(GT1,1)=0 AND DT1<3 AND GT1-DT1<4 AND REF(L,DT1)<=LLV(L,GT1+M-2) AND REF(H,GT1)>HHV(H,GT1+M-2),GT1+1),NODRAW;
FG2B:=IF? (GT1=0 AND DT1<4 AND REF(GT1,1)-DT1<4 AND REF(L,DT1)<=LLV(L,REF(GT1,1)+M-1) AND H>HHV(H,REF(GT1,1)+M-1),1,0),NODRAW;
FG2:=BACKSET(REFX(DT1,1)=0 AND GT1<3 AND DT1-GT1<4 AND REF(H,GT1)<HHV(H,DT1+M-2),GT1+1),NODRAW;
FD2A:=BACKSET(REFX(DT1,1)=0 AND GT1<3 AND DT1-GT1<4 AND REF(H,GT1)>=HHV(L,DT1+M-2) AND REF(L,DT1)>LLV(L,DT1+M-2),DT1+1),NODRAW;
FD2B:=IF? (DT1=0 AND GT1<4 AND REF(DT1,1)-GT1<4 AND REF(H,GT1)>=HHV(H,REF(DT1,1)+6) AND L>LLV(L,REF(DT1,1)+M-1),1,0),NODRAW;
TTTTTT:= H<REF(H,REF(GT1,1)+1) AND DT1<4,NODRAW;
HHHHHH:=REF(LLV(L,10),DT1),NODRAW;
//前長后短;
FG21:=IF? (GT1=0 AND DT1<4 AND H<=REF(H,REF(GT1,1)+1)? ,1,0),NODRAW;
FD21:=IF? (DT1=0 AND GT1<4? AND L>=REF(L,REF(DT1,1)+1) ,1,0),NODRAW;
FD231:=BACKSET(REFX(GT1,1)=0 AND DT1>3 AND GT1>DT1 AND GT1-DT1<4 AND REFX(H,1)>REF(H,GT1) AND REF(L,DT1)>REF(LLV(L,10),DT1),DT1+1),NODRAW;
FG23:=BACKSET(REFX(GT1,1)=0 AND DT1>3 AND GT1>DT1 AND? GT1-DT1<4 AND REFX(H,1)>REF(H,GT1) AND (REF(H,GT1)<REF(HHV(H,13),GT1) OR REF(FD231,DT1)=0),GT1+1),NODRAW;
FG231:=BACKSET(REFX(DT1,1)=0 AND GT1>3? AND DT1>GT1 AND DT1-GT1<4 AND REFX(L,1)<REF(L,DT1) AND REF(H,GT1)<REF(HHV(H,10),GT1) ,GT1+1),NODRAW;
FD23:=BACKSET(REFX(DT1,1)=0 AND GT1>3? AND DT1>GT1 AND DT1-GT1<4 AND REFX(L,1)<REF(L,DT1) AND ( REF(L,DT1)>REF(LLV(L,13),DT1) OR REF(FG231,GT1)=0),DT1+1),NODRAW;
FDD23:=REF(H,GT1)<REF(HHV(H,10),GT1) OR REF(FD23,DT1)=0,NODRAW;
FD24:=BACKSET(REFX(GT1,1)=0 AND DT1>3 AND GT1>DT1 AND GT1-DT1<4 AND REFX(H,1)<HHV(H,GT1+3) AND REF(L,DT1)>LLV(L,DT1+5),DT1+1),NODRAW;
FG24:=BACKSET(REFX(DT1,1)=0 AND GT1>3? AND DT1>GT1 AND DT1-GT1<4 AND REFX(L,1)>LLV(L,DT1+3) AND REF(H,GT1)<HHV(H,GT1+5),GT1+1),NODRAW;
GT2:=BARSLAST(FG21<>1 AND FG23<>1 AND FG231<>1 AND FG24<>1? ?AND FG2<>1 AND FG2A<>1 AND FG2B<>1 AND GT1=0),NODRAW;
DT2:=BARSLAST(FD21<>1 AND FD23<>1 AND FD231<>1 AND FD24<>1? AND FD2<>1 AND FD2A<>1 AND FD2B<>1 AND DT1=0),NODRAW;
FG3:=BACKSET(REFX(GT2,1)=0 AND GT2<DT2 AND REFX(H,1)>=REF(H,GT2),GT2+1),NODRAW;
FD3:=BACKSET(REFX(DT2,1)=0 AND DT2<GT2 AND REFX(L,1)<=REF(L,DT2),DT2+1),NODRAW;
FG31:=IF? (GT2=0 AND REF(GT2,1)<DT2 AND H<REF(H,REF(GT2,1)+1),1,0),NODRAW;
FD31:=IF? (DT2=0 AND REF(DT2,1)<GT2 AND L>REF(L,REF(DT2,1)+1),1,0),NODRAW;
GT3:=BARSLAST(GT2=0 AND FG3<>1 AND FG31<>1 ),NODRAW;
DT3:=BARSLAST(DT2=0 AND? FD3<>1 AND FD31<>1),NODRAW;
FG4:=BACKSET(REFX(GT3,1)=0 AND GT3<DT3 AND REFX(H,1)>=REF(H,GT3),GT3+1),NODRAW;
FD4:=BACKSET(REFX(DT3,1)=0 AND DT3<GT3 AND REFX(L,1)<=REF(L,DT3),DT3+1),NODRAW;
FG41:=IF? (GT3=0 AND REF(GT3,1)<DT3 AND H<REF(H,REF(GT3,1)+1),1,0),NODRAW;
FD41:=IF? (DT3=0 AND REF(DT3,1)<GT3 AND L>REF(L,REF(DT3,1)+1),1,0),NODRAW;
HHH:=GT3=0 AND FG31<>1 AND? FG3<>1,NODRAW;
LLL:=DT3=0 AND FD31<>1 AND? FD3<>1,NODRAW;
//DRAWNUMBER1(HHH,C,ABS(H-VALUEWHEN(LLL,L)),1);
//DRAWNUMBER1(LLL,O,ABS(L-VALUEWHEN(HHH,H)),1),VALIGN0;
A:=H>REF(H,1)&&H>REFX(H,1)&&L>REF(L,1)&&L>REFX(L,1)&&C<O;
AA:=H<REF(H,1)&&H<REFX(H,1)&&L<REF(L,1)&&L<REFX(L,1)&&C>O;
DRAWICON(HHH,H,2);
DRAWICON(LLL,L,1),VALIGN0;
DRAWCOLORKLINE(LLL,COLORMAGENTA,1);
DRAWCOLORKLINE(HHH,COLORMAGENTA,1);
P:=BACKSET(ISLASTBAR,SUMBARS(HHH||LLL,2));
XX:=BARSLAST(REF(HHH,1))<BARSLAST(REF(LLL,1))&&L<LV(L,BARSLAST(REF(HHH,1))),ICON(0,'ICO145'),VALIGN0;
XX1:=BARSLAST(REF(HHH,1))<BARSLAST(REF(LLL,1))&&EXIST(XX,BARSLAST(REF(HHH,1)))&&REFX(XX||ISLASTBAR&&BARSLAST(REF(HHH,1))<BARSLAST(REF(LLL,1)),1)&&EXIST(H>VALUEWHEN(XX,H),BARSLAST(XX)+1),ICON(1,'ICO12');
//DRAWSL( CROSS( BACKSET(XX1,HHVBARS(H,BARSLAST(XX)+1)+1),0.5),H,0,5,0,COLORWHITE);
YY:=BARSLAST(REF(HHH,1))>BARSLAST(REF(LLL,1))&&H>HV(H,BARSLAST(REF(LLL,1))),ICON(0,'ICO145'),VALIGN0;
YY1:=BARSLAST(REF(HHH,1))>BARSLAST(REF(LLL,1))&&EXIST(YY,BARSLAST(REF(LLL,1)))&&REFX(YY||ISLASTBAR&&BARSLAST(REF(HHH,1))>BARSLAST(REF(LLL,1)),1)&&EXIST(L<VALUEWHEN(YY,L),BARSLAST(YY)+1),ICON(1,'ICO12');
//DRAWSL( CROSS( BACKSET(YY1,LLVBARS(L,BARSLAST(YY)+1)+1),0.5),L,0,5,0,COLORWHITE),DOT;
//需要修改涉及的部分
PA:=CROSS(COUNT(CROSS(BACKSET(XX1,HHVBARS(H,BARSLAST(XX)+1)+1),0.5),BARSLAST(REF(HHH,1)))=J,0.5);
PB:=CROSS(BACKSET(PA,LLVBARS(L,BARSLAST(REF(HHH,1)))+1),0.5);
QA:=CROSS(COUNT(CROSS( BACKSET(YY1,LLVBARS(L,BARSLAST(YY)+1)+1),0.5),BARSLAST(REF(LLL,1)))=S,0.5);
QB:=CROSS(BACKSET(QA,HHVBARS(H,BARSLAST(REF(LLL,1)))+1),0.5);
//DRAWSL(PA&&P,H,0,5,0,COLORRED);
//DRAWSL(PB&&P,L,0,5,0,COLORGREEN);
X:=C<VALUEWHEN(PA,H-((H-VALUEWHEN(PB,L))*1.382));
PA1:=CROSS(BACKSET(XX1,HHVBARS(H,BARSLAST(XX)+1)+1),0.5) && EXIST(C<H-((H-VALUEWHEN(PB,L))*1.382),BARSLAST(REF(HHH,1))) && EXIST(PA,BARSLAST(REF(HHH,1)));
PB1:=CROSS(BACKSET(PA1,LLVBARS(L,BARSLAST(CROSS(COUNT(C<(H-(H-VALUEWHEN(PB,L)))*1.382,BARSLAST(PA))=1,0.5)))+1),0.5);
//DRAWSL(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5)&&P,H,0,5,0,COLORRED);
//DRAWSL(CROSS(BACKSET(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5)&&P,BARSLAST(PB1)+1),0.5),L,0,5,0,COLORGREEN);
//DRAWSL(QA&&P,L,0,5,0,COLORRED);
//DRAWSL(QB&&P,H,0,5,0,COLORGREEN);
Y:=C>VALUEWHEN(QA,VALUEWHEN(QB,H)+(VALUEWHEN(QB,H)-L)*0.382);
QA1:=CROSS(BACKSET(YY1,LLVBARS(L,BARSLAST(YY)+1)+1),0.5) && EXIST(C>VALUEWHEN(QA,VALUEWHEN(QB,H)+(VALUEWHEN(QB,H)-L)*0.382),BARSLAST(REF(LLL,1))) && EXIST(QA,BARSLAST(REF(LLL,1)));
QB1:=CROSS(BACKSET(QA1,HHVBARS(H,BARSLAST(CROSS(COUNT(C>VALUEWHEN(QA,VALUEWHEN(QB,H)+(VALUEWHEN(QB,H)-L)*0.382),BARSLAST(QA))=1,0.5)))+1),0.5);
//DRAWSL(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,L,0,5,0,COLORRED);
//DRAWSL(CROSS(BACKSET(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,BARSLAST(QB1)+1),0.5),H,0,5,0,COLORGREEN);
//需要修改涉及的部分
QAX:=CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5),NODRAW;
PAX:=CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5),NODRAW;
////DRAWSL(PAX,H-((H-VALUEWHEN(PB1,L))*1.382),0,5,0,COLORYELLOW);
////DRAWSL(PA,H-((H-VALUEWHEN(PB,L))*1.382),0,5,0,COLORYELLOW);
////DRAWSL(QA,VALUEWHEN(QB,H)+((VALUEWHEN(QB,H)-L)*0.382),0,5,0,COLORYELLOW);
////DRAWSL(QAX,L+((VALUEWHEN(QB1,H)-L)*1.382),0,5,0,COLORYELLOW);
/*
DRAWCOLORKLINE( COUNT(H>VALUEWHEN(QA,VALUEWHEN(QB,H)+((VALUEWHEN(QB,H)-L)*0.382)),BARSLAST(QA))=1&&H>VALUEWHEN(QA,VALUEWHEN(QB,H)+((VALUEWHEN(QB,H)-L)*0.382))&&P,COLORYELLOW,0);
DRAWCOLORKLINE(COUNT(H>VALUEWHEN(QAX,L+((VALUEWHEN(QB1,H)-L)*1.382)),BARSLAST(QAX))=1&& H>VALUEWHEN(QAX,L+((VALUEWHEN(QB1,H)-L)*1.382)) &&P? ,COLORYELLOW,0 );
DRAWCOLORKLINE(COUNT(L<VALUEWHEN(PA,H-((H-VALUEWHEN(PB,L))*1.382)),BARSLAST(PA))=1&&L<VALUEWHEN(PA,H-((H-VALUEWHEN(PB,L))*1.382))? &&P ,COLORYELLOW,0? ?);
DRAWCOLORKLINE(COUNT(L<VALUEWHEN(PAX,H-((H-VALUEWHEN(PB1,L))*1.382)),BARSLAST(PAX))=1&&L<VALUEWHEN(PAX,H-((H-VALUEWHEN(PB1,L))*1.382)) &&P,COLORYELLOW,0 );
*/
//HXM為最后笑臉之后的最高點,LXM為最后哭臉之后的最低點
HXM:=IF(VALUEWHEN(ISLASTBAR,BARSLAST(LLL))<VALUEWHEN(ISLASTBAR,BARSLAST(HHH)),HHV(H,BARSLAST(LLL)+1),REF(H,BARSLAST(HHH)));
////DRAWSL(ISLASTBAR,HXM,0,-MIN(BARSLAST(HHH),BARSLAST(LLL)),0,COLORYELLOW),LINETHICK4;??
LXM:=IF(VALUEWHEN(ISLASTBAR,BARSLAST(HHH))<VALUEWHEN(ISLASTBAR,BARSLAST(LLL)),LLV(L,BARSLAST(HHH)+1),REF(L,BARSLAST(LLL)));
////DRAWSL(ISLASTBAR,LXM,0,-MIN(BARSLAST(HHH),BARSLAST(LLL)),0,COLORYELLOW);?
//以下為二合一高低點公式
HX1:=VALUEWHEN(PA,H);//PAH
LX1:=VALUEWHEN(PA,VALUEWHEN(PB,L));
HX2:=VALUEWHEN(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5),H);//PA1H
LX2:=VALUEWHEN(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5),VALUEWHEN(PB1,L));
PX:=CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5),NODRAW;
LX3:=VALUEWHEN(QA,L);//QAH
HX3:=VALUEWHEN(QA,VALUEWHEN(QB,H));
LX4:=VALUEWHEN(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5),L);//PA1H
HX4:=VALUEWHEN(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5),VALUEWHEN(QB1,H));
QX:=CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5),NODRAW;
ZZ:=IF(PA||PX,IF(PA,LX1,IF(PX,LX2,0)),0),NODRAW;
ZZ1:=IF(QA||QX,IF(QA,HX3,IF(QX,HX4,0)),0),NODRAW;
PPP:=ZZ-REFX1(LXM,10000),NODRAW;
QQQ:=REFX1(HXM,10000)-ZZ1,NODRAW;
PP1:=BACKSET(ISLASTBAR,LLVBARS(QQQ,MIN(BARSLAST(HHH),BARSLAST(LLL)))+1);
PP2:=BACKSET(ISLASTBAR,LLVBARS(IF(PPP>0,PPP,99999),MIN(BARSLAST(HHH),BARSLAST(LLL)))+1);
COND1:=REFX1(BARSLAST(HHH)>BARSLAST(LLL),10000);
COND2:=BACKSET(ISLASTBAR,MIN(BARSLAST(HHH),BARSLAST(LLL)));
//DRAWTEXT(CROSS(PP1,0.5)&&(QA||QX)&&COND1&&COND2,L,'低點'),VALIGN0;//上升低點
高點1:=BACKSET(CROSS(PP1,0.5),IF(QA,BARSLAST(QB),BARSLAST(QX))+1);
//DRAWTEXT(CROSS(高點1,0.5)&&COND1&&COND2,H,'高點');//上升高點
//DRAWTEXT(CROSS(PP2,0.5)&&(PA||PX)&&NOT(COND1)&&COND2,H,'高點');//下降高點
低點1:=BACKSET(CROSS(PP2,0.5),IF(PA,BARSLAST(PB),BARSLAST(PX))+1);
//DRAWTEXT(CROSS(低點1,0.5)&&NOT(COND1)&&COND2,L,'低點'),VALIGN0;//下降低點
X0:=CROSS( BACKSET(ISLASTBAR,SUMBARS(HHH||LLL,1)),0.5);
//變量AAA的設置
AAA:=VALUEWHEN(X0,IF(HHH,H,L)),NODRAW;
BBB:=IF(VALUEWHEN(X0,HHH),REFX1(LXM,10000),REFX1(HXM,10000)),NODRAW ;
//DRAWTEXT(ISLASTBAR,AAA,'表情位置'),VALIGN1,ALIGN0;
//DRAWTEXT(ISLASTBAR,BBB,'XM線位置'),VALIGN1,ALIGN0;
WE:=CROSS(高點1,0.5)&&COND1&&COND2;
WR:=CROSS(PP2,0.5)&&(PA||PX)&&NOT(COND1)&&COND2;
RE:=REFX1(VALUEWHEN(WE||WR,H),10000);
QW:=CROSS(PP1,0.5)&&(QA||QX)&&COND1&&COND2;//低
QR:=CROSS(低點1,0.5)&&NOT(COND1)&&COND2;
QE:=REFX1(VALUEWHEN(QW||QR,L),10000);
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)<BARSLAST(LLL)&&EXIST(WE||WR,BARPOS)=0,BBB+(AAA-BBB)*0.382,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)<BARSLAST(LLL)&&EXIST(WE||WR,BARPOS)=0,BBB+(AAA-BBB)*0.618,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)<BARSLAST(LLL)&&EXIST(WE||WR,BARPOS)=1,BBB+(RE-BBB)*0.382,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)<BARSLAST(LLL)&&EXIST(WE||WR,BARPOS)=1,BBB+(RE-BBB)*0.618,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)>BARSLAST(LLL)&&EXIST(QW||QR,BARPOS)=0,BBB-(BBB-AAA)*0.382,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)>BARSLAST(LLL)&&EXIST(QW||QR,BARPOS)=0,BBB-(BBB-AAA)*0.618,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)>BARSLAST(LLL)&&EXIST(QW||QR,BARPOS)=1,BBB-(BBB-QE)*0.382,0,10,0,COLORBLUE),DOT;
////DRAWSL(ISLASTBAR&&BARSLAST(HHH)>BARSLAST(LLL)&&EXIST(QW||QR,BARPOS)=1,BBB-(BBB-QE)*0.618,0,10,0,COLORBLUE),DOT;
HH:=VALUEWHEN(CROSS(PP2,0.5)&&(PA||PX)&&NOT(COND1)&&COND2,H),NODRAW;
LL:=VALUEWHEN( CROSS(低點1,0.5)&&NOT(COND1)&&COND2,L),NODRAW;
////DRAWSL(ISLASTBAR, BBB+ (HH-LL) /(AAA-LL) *(AAA-BBB),0,10,0,COLORRED),DOT;
HH0:=VALUEWHEN(CROSS(高點1,0.5)&&COND1&&COND2,H),NODRAW;
LL0:=VALUEWHEN(CROSS(PP1,0.5)&&(QA||QX)&&COND1&&COND2,L),NODRAW;
////DRAWSL(ISLASTBAR, AAA+? (LL0-AAA)/(HH0-AAA) *(BBB-AAA)? ,0,10,0,COLORRED),DOT;
DF:=(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(PA&&P,H),10000))/(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(PA&&P,VALUEWHEN(PB,L)),10000)),NODRAW;
SF:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*DF,NODRAW;
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),SF,0,10,0,COLORYELLOW);
SFX:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(BBB,10000))*DF,NODRAW;
////DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),SFX,0,10,0,COLORYELLOW),DOT;
HONG:=VALUEWHEN(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5)&&P,H);
LU:=VALUEWHEN(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5)&&P,VALUEWHEN(PB1,L));
DF1:=(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(HONG,10000))/(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(LU,10000)),NODRAW;
SF1:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*DF1,NODRAW;
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),SF1,0,10,0,COLORYELLOW);
SF1X:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(BBB,10000))*DF1,NODRAW;
////DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),SF1X,0,10,0,COLORYELLOW),DOT;
DTD:=(REFX1(VALUEWHEN(QA&&P,L),10000)-REFX1(VALUEWHEN(LLL,L),10000))/(REFX1(VALUEWHEN(QA&&P,VALUEWHEN(QB,H)),10000)-REFX1(VALUEWHEN(LLL,L),10000)),NODRAW;
ST:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*DTD,NODRAW;
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),ST,0,10,0,COLORYELLOW);
STX:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(BBB,10000)-REFX1(VALUEWHEN(LLL,L),10000))*DTD,NODRAW;
////DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),STX,0,10,0,COLORYELLOW),DOT;
//VERTLINE(QA&&P,COLORMAGENTA);//倒數(shù)第二組 粉?
HONG1:=VALUEWHEN(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,L);
LU1:=VALUEWHEN(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,VALUEWHEN(QB1,H));
//VERTLINE(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,COLORRED);//最后一組紅?
DTT:=(REFX1(HONG1,10000)-REFX1(VALUEWHEN(LLL,L),10000))/(REFX1(LU1,10000)-REFX1(VALUEWHEN(LLL,L),10000)),NODRAW;
STT:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*DTT,NODRAW;
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HH),STT,0,10,0,COLORYELLOW);?
STTX:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(BBB,10000)-REFX1(VALUEWHEN(LLL,L),10000))*DTT,NODRAW;
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),STTX,0,10,0,COLORYELLOW),LINETHICK2;?
//設最近圖標為AAAA,次近圖標為BBBB
AAAA:=CROSS(BACKSET(ISLASTBAR,SUMBARS(HHH||LLL,1)),0.5);
BBBB:=CROSS(BACKSET(ISLASTBAR,SUMBARS(HHH||LLL,2)),0.5);
//VALUEWHEN(AAAA,IF(HHH,H,L));
//VALUEWHEN(BBBB,IF(HHH,H,L));
XC1:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*0.382;
XC2:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*0.618;
XC3:=REFX1(VALUEWHEN(LLL,L),10000)+(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*1.382;
/*
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),XC1,0,15,0,COLORBLUE);
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),XC2,0,15,0,COLORBLUE);
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),XC3,0,15,0,COLORBLUE);
*/
XC4:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*0.382;
XC5:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*0.618;
XC6:=REFX1(VALUEWHEN(HHH,H),10000)-(REFX1(VALUEWHEN(HHH,H),10000)-REFX1(VALUEWHEN(LLL,L),10000))*1.382;
/*
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),XC4,0,15,0,COLORBLUE);
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),XC5,0,15,0,COLORBLUE);
//DRAWSL(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),XC6,0,15,0,COLORBLUE);
*/
HM:=CROSS(BACKSET(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),HHVBARS(H,BARSLAST(LLL)+1)+1),0.5),ICON(1,'ICO12'),VALIGN0;
LM:=CROSS(BACKSET(ISLASTBAR&&BARSLAST(LLL)>BARSLAST(HHH),LLVBARS(L,BARSLAST(HHH)+1)+1),0.5),ICON(1,'ICO11');
WW:=CROSS( BACKSET(XX1,HHVBARS(H,BARSLAST(XX)+1)+1),0.5),NODRAW;
TT:=IF(( HHH||WW) &&H>REFX1(VALUEWHEN(HM,H),10000),H-REFX1(VALUEWHEN(HM,H),10000),99999999 ),NODRAW;
ZX:=CROSS(BACKSET(ISLASTBAR&&BARSLAST(LLL)<BARSLAST(HHH),LLVBARS(TT,BARPOS)+1),0.5),ICON(0,'ICO16圖6');
////DRAWSL(ZX,H,0,1,2,COLORGREEN),LINETHICK2;
ZQA1:=SUMBARS(PA&&P||CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5)&&P ,1);
ZQA2:=SUMBARS(QA&&P||CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,1);
HS1:=BACKSET(ISLASTBAR,ZQA1);
HS2:=BACKSET(ISLASTBAR,ZQA2);
////DRAWSL(CROSS(HS1=1,0.5),H,0,5,0,COLORRED),LINETHICK3;
////DRAWSL(CROSS(HS2=1,0.5),L,0,5,0,COLORRED),LINETHICK3;
ZQB1:=SUMBARS(QB&&P||CROSS(BACKSET(CROSS(COUNT(QA1&&NOT(QA)&&EXIST(Y,BARSLAST(QA)),BARSLAST(QA))=1,0.5)&&P,BARSLAST(QB1)+1),0.5),1);
ZQB2:=SUMBARS(PB&&P||CROSS(BACKSET(CROSS(COUNT(PA1&&NOT(PA)&&EXIST(X,BARSLAST(PA)),BARSLAST(PA))=1,0.5)&&P,BARSLAST(PB1)+1),0.5),1);
LS1:=BACKSET(ISLASTBAR,ZQB1);
LS2:=BACKSET(ISLASTBAR,ZQB2);
////DRAWSL(CROSS(LS1=1,0.5),H,0,5,0,COLORGREEN),LINETHICK3;
////DRAWSL(CROSS(LS2=1,0.5),L,0,5,0,COLORGREEN),LINETHICK3;
?
?來源:程序化99網( www.weiqiv.net.cn )
博易技術人員: 您好,這個公式看了一下,一些函數(shù)需要替換,<lv?要改為<=llv
DRAWCOLORKLINE換成 drawklineex
畫圖標函數(shù)用 drawicon
refx1換成refx,然后10000都改為datacount-barpos-1 改了不行 來源 程序化久久網
有思路,想編寫各種指標公式,交易模型,選股公式,還原公式的朋友
可聯(lián)系技術人員 QQ: 262069696 或微信號:cxh99cxh99 進行 有償收費 編寫!
(注:由于人數(shù)限制,QQ或微信請選擇方便的一個聯(lián)系我們就行,加好友時請簡單備注下您的需求,否則無法通過。謝謝您!)
相關文章
-
沒有相關內容