Bonjour
De memoire j’avais un zig zag a l’époque sous ts qui me permettait de choisir une variation en points ou pourcentage , me donnait la valeur des points haut et bas , la variation en points entre chaque et d y ajouter les niveaux de fib.
J’ai complétement lâcher depuis 15 ans la prog, si une aimable âme arrivait a me le convertir ? je ne sais plus lequel des 2 prog j’utilisais.
nputs: WavePcnt(5), Color(Yellow), Thicknes(1),LastWave(0),Firstwave(3);
Variables: ll(0),kk(0),ii(0),j(0),SH(0), SL(0), RP(0), RPDate(0), RPTime(0), Switch(0);
Input: TextFib(1),TextHL(1),ABC(1),PFTactif(1),ZZon(0);
Var: TLStyle(1),Hval(1),Vval(1);
Array: RPD[50](0) , RPT[50](0) , RPV[50](0), ZigZag[50](0),FibLevel[50,10](0),FibTxt[50,10](“”);
Input: NbFib(2),Fib1(-.618),Fib2(-.5),Fib3(.707),Fib4(.5),Fib5(0),Fib6(1),Fib7(.707),Fib8(0),Fib9(1);
Array:Fib[10,2](0),Lcolor[10](0);
Array: Thl[2,50](0),Ret[50,10](0),TLRet[50,10](0),TLABC[50](0),TxtABC[50](0);
Array: Tswing[50](“”),Tlevel[50,10](“”),TFib[10](“”);
Array:TLpft[50,5](0),TxtPft[50,5](0),Pft[5,2](0),PFTval[50,5](0);
input:History(0),Line1(1),Txt1(1),Varlevel(0.01),Line0(0),Txt0(0),R3(0),Plotline(1),SUP0orRES1(1),DateText(0),TimeText(-60),Will(1);
var: oDate(0),oTime(0);
var:HValR(1), VValR(0),HValS(1), VValS(1);
Var: jj(0);
Array: Tx[2](0),Tline[2](0),style[2](0);;
Array : Levels[3,21](0),Title[21](“”),Colors[21](0),Txt[3,21](0),TL[3,21](0);
IF CurrentBar = 1 Then
Begin
Style[0]=3;Style[1]=1;
Tx[0]=Txt0;Tx[1]=Txt1;
Tline[0]=line0;Tline[1]=line1;
kk=1;
Title[kk]=”Piv”;
Title[kk+1]=”S1″;
Title[kk+2]=”R1″;
Title[kk+3]=”S2″;
Title[kk+4]=”R2″;
Title[kk+5]=”S3″;
Title[kk+6]=”R3″;
Title[kk+7]=”S1v”;
Title[kk+8]=”R1v”;
Title[kk+9]=”WillSup”;
Title[kk+10]=”WillRes”;
Title[kk+11]=”SMA162″;
Title[kk+12]=”SMA262″;
Colors[kk]=LightGray;
Colors[kk+1]=Cyan;
Colors[kk+2]=Magenta;
Colors[kk+3]=Blue;
Colors[kk+4]=Yellow;
Colors[kk+5]=DarkCyan;
Colors[kk+6]=Green;
Colors[kk+7]=Cyan;
Colors[kk+8]=Magenta;
Colors[kk+9]=Red;
Colors[kk+10]=Green;
Colors[kk+11]=White;
Colors[kk+12]=Yellow;
RP = MedianPrice;
RPDate = Date;
RPTime = Time;
Fib[1,1]=2;Fib[1,0]=Fib1;
Fib[2,1]=3;Fib[2,0]=Fib2;
Fib[3,1]=5;Fib[3,0]=Fib3;
Fib[4,1]=6;Fib[4,0]=Fib4;
Fib[5,1]=10;Fib[5,0]=Fib5;
Fib[6,1]=11;Fib[6,0]=Fib6;
Fib[7,1]=8;Fib[7,0]=Fib7;
Fib[8,1]=7;Fib[8,0]=Fib8;
Fib[9,1]=7;Fib[9,0]=Fib9;
for ii=1 to 9
begin
if Fib[ii,0]=.5 then Lcolor[ii]=cyan
else if Fib[ii,0]=.618 then Lcolor[ii]=red
else if Fib[ii,0]=.707 then Lcolor[ii]=magenta
else if Fib[ii,0]=.382 then Lcolor[ii]=blue
else if Fib[ii,0]=1 then Lcolor[ii]=yellow
else if Fib[ii,0]=0 then Lcolor[ii]=yellow
else if Fib[ii,0]=-.5 then Lcolor[ii]=cyan
else if Fib[ii,0]=-.618 then Lcolor[ii]=red
else Lcolor[ii]=lightgray;
End;
Pft[1,0]=.237; Pft[1,1]=magenta;
Pft[2,0]=.382; Pft[2,1]=magenta;
Pft[3,0]=.5; Pft[3,1]=magenta;
Pft[4,0]=.618; Pft[4,1]=magenta;
End;
SH = SwingHigh(1, High, 1, 2);
SL = SwingLow(1, Low, 1, 2);
IF SH <> -1 Then
Begin
IF Switch <> -1 AND SH >= RP * (1+(WavePcnt*.01)) Then
Begin
Condition1 = True;
Switch = -1;
Condition2 = True;
For Value1 = 48 DownTo 0
Begin
RPD[Value1+1] = RPD[Value1];
RPT[Value1+1] = RPT[Value1];
RPV[Value1+1] = RPV[Value1];
Value2=value2+1;
End;
RPD[0] = RPDate;
RPT[0] = RPTime;
RPV[0] = RP;
End;
IF Condition1 = False AND Switch = -1 AND SH >= RP Then
Begin
RPD[0] = Date[1];
RPT[0] = Time[1];
RPV[0] = SH;
Condition2 = True;
End;
IF Condition2 Then
Begin
Condition2 = False;
RP = SH;
RPDate = Date[1];
RPTime = Time[1];
End;
End;
IF SL <> -1 Then Begin
IF Switch <> 1 AND SL <= RP – (RP*(WavePcnt*.01)) Then
Begin
Condition1 = True;
Switch = 1;
Condition2 = True;
For Value1 = 48 DownTo 0
Begin
RPD[Value1+1] = RPD[Value1];
RPT[Value1+1] = RPT[Value1];
RPV[Value1+1] = RPV[Value1];
value2=value2+1;
End;
RPD[0] = RPDate;
RPT[0] = RPTime;
RPV[0] = RP;
End;
IF Condition1 = False AND Switch = 1 AND SL <= RP Then
Begin
RPD[0] = Date[1];
RPT[0] = Time[1];
RPV[0] = SL;
Condition2 = True;
End;
IF Condition2 Then
Begin
Condition2 = False;
RP = SL;
RPDate = Date[1];
RPTime = Time[1];
End;
End;
IF Condition1 Then
Begin
RPD[0] = RPDate;
RPT[0] = RPTime;
RPV[0] = RP;
Condition1 = False;
End;
For ii=0 to 1
Begin
Levels[ii,kk]=(HighD(ii)+LowD(ii)+CloseD(ii))/3;
Levels[ii,kk+1]=2*Levels[ii,kk]-Highd(ii);
Levels[ii,kk+2]=2*Levels[ii,kk]-Lowd(ii);
Levels[ii,kk+3]=Levels[ii,kk]+Levels[ii,kk+1]-Levels[ii,kk+2];
Levels[ii,kk+4]=Levels[ii,kk]-Levels[ii,kk+1]+Levels[ii,kk+2];
Levels[ii,kk+5]=Levels[ii,kk+3]+Levels[ii,kk+1]-Levels[ii,kk];
Levels[ii,kk+6]=Levels[ii,kk+4]+Levels[ii,kk+2]-Levels[ii,kk];
if ii>0 then
Begin
if (closeD(ii)-OpenD(ii-1))/closeD(ii)>=Varlevel then
begin
Levels[ii,kk+7] = (highD(ii)+closeD(ii)+(2*lowD(ii)))*.5-highD(ii);
Levels[ii,kk+8] = (highD(ii)+closeD(ii)+(2*lowD(ii)))*.5-lowD(ii);
end;
if (closeD(ii)-OpenD(ii-1))/closeD(ii)<=-Varlevel then
begin
Levels[ii,kk+7] = (lowD(ii)+closeD(ii)+(2*highD(ii)))*.5-highD(ii);
Levels[ii,kk+8] = (lowD(ii)+closeD(ii)+(2*highD(ii)))*.5-lowD(ii);
end;
if (closeD(ii)-OpenD(ii-1))/closeD(ii)<Varlevel and (closeD(ii)-OpenD(ii-1))/closeD(ii)>-Varlevel then
begin
Levels[ii,kk+7] = (highD(ii)+lowD(ii)+(2*closeD(ii)))*.5-highD(ii);
Levels[ii,kk+8] = (highD(ii)+lowD(ii)+(2*closeD(ii)))*.5-lowD(ii);
end;
Levels[ii,kk+9]= OpenD(ii-1)-(OpenD(ii)-LowD(ii));
Levels[ii,kk+10]= OpenD(ii-1)+HighD(ii)-Opend(ii);
End;
Levels[ii,kk+11]=average(C,162);
Levels[ii,kk+12]=average(C,262);
End;
If Plotline<>0 then
Begin
if history<>0 or (history=0 and date=lastcalcdate )then
begin
Plot1(Levels[1,kk],”Piv”,Colors[kk]);
If SUP0orRES1=1 then
Begin
Plot2(Levels[1,kk+2],”SR1″,Colors[kk+2]);
Plot3(Levels[1,kk+4],”SR2″,Colors[kk+4]);
if R3=0 then Plot4(Levels[1,kk+8],”SR1v-3″,Colors[kk+8]) else Plot4(Levels[1,kk+6],”SR1v-3″,Colors[kk+6]);
End
Else
Begin
Plot2(Levels[1,kk+1],”SR1″,Colors[kk+1]);
Plot3(Levels[1,kk+3],”SR2″,Colors[kk+3]);
if R3=0 then Plot4(Levels[1,kk+7],”SR1v-3″,Colors[kk+7]) else Plot4(Levels[1,kk+5],”SR1v-3″,Colors[kk+5]);
End;
End;
End;
If date=lastcalcdate and time=lastcalctime then
begin
for j=LastWave to Minlist(Value2,Firstwave)
Begin
jj=0;
value1=$addDateTime(D,T,DateText,TimeText,oDate,oTime);
for jj=0 to 1
begin
For ll=0 to 10
Begin
if Tline[jj]<>0 then
Begin
if TL[jj,kk+ll]=0 then TL[jj,kk+ll]=TL_New(oDate,oTime,Levels[jj,kk+ll] ,oDate,lastcalctime,Levels[jj,kk+ll]);
TL_setcolor(TL[jj,kk+ll],Colors[kk+ll]);
TL_setstyle(TL[jj,kk+ll],style[jj]);
TL_setextRight(TL[jj,kk+ll],true);
End;
If Tx[jj]<>0 then
Begin
If Txt[jj,kk+ll]=0 then Txt[jj,kk+ll]=Text_New(oDate,oTime,Levels[jj,kk+ll],Title[kk+ll]&” “&numtostr(Levels[jj,kk+ll],1))
else Text_setstring(Txt[jj,kk+ll],Title[kk+ll]&” “&numtostr(Levels[jj,kk+ll],1));
Text_setlocation(Txt[jj,kk+ll],oDate,oTime,Levels[jj,kk+ll]);
Text_setstyle(Txt[jj,kk+ll],HValS, VValS);
Text_Setcolor(Txt[jj,kk+ll],Colors[kk+ll]);
End;
End;
End;
If ZZon<>0 then
Begin
If ZigZag[j]<=0 then Zigzag[j]= TL_New(RPD[j], RPT[j], RPV[j], RPD[j+1], RPT[j+1], RPV[j+1]);
TL_SetSize(ZigZag[j], Thicknes);
TL_SetColor(ZigZag[j], Color);
TL_SetExtRight(ZigZag[j], False);
TL_SetExtLeft(ZigZag[j], False);
End;
for kk=1 to minlist(NbFib,9)
begin
FibLevel[j,kk]=RPV[j]+(RPV[j+1]-RPV[j])*Fib[kk,0];
if TLRet[j,kk]<=0 then TLRet[j,kk]=TL_New(RpD[j+1], RpT[j+1], FibLevel[j,kk],RpD[j], RpT[j],FibLevel[j,kk]);
TL_setextright(TLret[j,kk],false);
TL_SetColor(TLRet[j,kk], Lcolor[kk]);
If TextFib<>0 then
Begin
Tswing[j]=Numtostr(j,0);
Tlevel[j,kk]=numtostr($2nb(FibLevel[j,kk]),1);
Tfib[kk]=numtostr(Fib[kk,0]*100,1);
FibTxt[j,kk]=”w”&Tswing[j]&”: “&Tlevel[j,kk]&” : “&Tfib[kk]&”%”;
if ret[j,kk]<=0 then Ret[j,kk]=Text_New(RpD[j+1], RpT[j+1], FibLevel[j,kk],FibTxt[j,kk]);
Text_SetColor(Ret[j,kk], Lcolor[kk]);
Text_SetStyle(Ret[j,kk], Hval, Vval);
End;
end;
if TextHL<>0 then
begin
if Thl[0,j]=0 then Thl[0,j]=Text_New(RPD[j], RPT[j], RPV[j],” “&numtostr($2nb(RPV[j]),1)&” (“&numtostr(RPV[j]-RPV[j+1],1)&” = “&numtostr(100*iff(RPV[j+2]-RPV[j+1]=0,0,(RPV[j]-RPV[j+1])/(RPV[j+2]-RPV[j+1])),1)&”%) “);
Text_SetColor(Thl[0,j], color);
if RPV[j]>RPV[j+1] then
begin
Text_SetStyle(Thl[0,j], 0, 0);
Text_SetStyle(Thl[1,j], 0, 1);
end
else
begin
Text_SetStyle(Thl[0,j], 1, 1);
Text_SetStyle(Thl[1,j], 1, 0);
End;
End;
If ABC<>0 then
Begin
if TLABC[j]<=0 then TLABC[j]=TL_New(RpD[j+1], RpT[j+1],RPV[j+1]+RPV[j+2]-RPV[j],RpD[j], RpT[j],RPV[j+1]+RPV[j+2]-RPV[j]);
if TxtABC[j]<=0 then TxtABC[j]=Text_New(RpD[j+1], RpT[j+1],RPV[j+1]+RPV[j+2]-RPV[j],”w”&Tswing[j]&”: “&numtostr($2nb(RPV[j+1]+RPV[j+2]-RPV[j]),1));
TL_setextright(TLABC[j],false);
TL_SetColor(TLABC[j], color);
TL_SetStyle(TLABC[j], 3);
Text_SetColor(TxtABC[j], color);
Text_SetStyle(TxtABC[j], Hval, Vval);
End;
If PFTactif<>0 then
Begin
for ll=1 to 4
begin
PFTval[j,ll]=(RPV[j+1]*pft[ll,0]-RPV[j])/(pft[ll,0]-1);
if TLpft[j,ll]<=0 then TLpft[j,ll]=TL_New(RpD[j+1], RpT[j+1], PFTval[j,ll],date, time,PFTval[j,ll]);
if Txtpft[j,ll]<=0 then TxtPft[j,ll]=Text_New(RpD[j+1], RpT[j+1], PFTval[j,ll],”w”&numtostr(j,0)&” “&numtostr(PFTval[j,ll],1));
TL_setextright(TLABC[j],false);
TL_SetColor(TLpft[j,ll], red);
TL_SetStyle(TLpft[j,ll], 3);
Text_SetColor(Txtpft[j,ll], red);
Text_SetStyle(Txtpft[j,ll], Hval, Vval);
end;
End;
End;
End;
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Inputs: WavePcnt(5),FirstWave(45),LastWave(0),TextHL(1),NbFib(0),
Color(Yellow), Thicknes(1);
Input:
Fib1(.382),Fib2(.5),Fib3(.618),Fib4(.707),Fib5(0),Fib6(1),Fib7(.707),Fib8(0)
,Fib9(1);
Input: TextFib(1),Posi(1);
Variables: SH(0), SL(0), RP(0), RPDate(0), RPTime(0), Switch(0),
NextZig(0),mm(0),kk(0),PosD(0),PosT(0),Hval(1),Vval(1);
Var:Tfib(“”);
Array: RPD[50](0) , RPT[50](0) ,
RPV[50](0),RPB[50](0),RPM[50](0),RPA[50](0);
Array: Thl[2,50](0),Ret[50,10](0),TLRet[50,10](0),Fib[10,2](0), ZigZag[50](0);
Array: Tswing[50](“”),Tlevel[50,10](“”);
Fib[1,1]=2;
Fib[2,1]=3;
Fib[3,1]=5;
Fib[4,1]=6;
Fib[5,1]=10;
Fib[6,1]=11;
Fib[7,1]=8;
Fib[8,1]=7;
Fib[9,1]=7;
Fib[1,0]=Fib1;
Fib[2,0]=Fib2;
Fib[3,0]=Fib3;
Fib[4,0]=Fib4;
Fib[5,0]=Fib5;
Fib[6,0]=Fib6;
Fib[7,0]=Fib7;
Fib[8,0]=Fib8;
Fib[9,0]=Fib9;
IF CurrentBar = 1 Then Begin
RP = MedianPrice;
RPDate = Date;
RPTime = Time;
NextZig = Text_New(Date, Time, 0, NumToStr(WavePcnt, 0)+”%-“);
Text_SetColor(NextZig, Color);
End;
SH = SwingHigh(1, High, 1, 2);
SL = SwingLow(1, Low, 1, 2);
IF SH <> -1 Then Begin
IF Switch <> -1 AND SH >= RP * (1+(WavePcnt*.01)) Then Begin
Condition1 = True;
Switch = -1;
Condition2 = True;
For Value1 = 49 DownTo 0
Begin
RPD[Value1+1] = RPD[Value1];
RPT[Value1+1] = RPT[Value1];
RPV[Value1+1] = RPV[Value1];
End;
RPD[0] = RPDate;
RPT[0] = RPTime;
RPV[0] = RP;
End;
IF Condition1 = False AND Switch = -1 AND SH >= RP Then Begin
RPD[0] = Date[1];
RPT[0] = Time[1];
RPV[0] = SH;
Condition2 = True;
End;
IF Condition2 Then Begin
Condition2 = False;
RP = SH;
RPDate = Date[1];
RPTime = Time[1];
End;
End;
IF SL <> -1 Then Begin
IF Switch <> 1 AND SL <= RP – (RP*(WavePcnt*.01)) Then Begin
Condition1 = True;
Switch = 1;
Condition2 = True;
For Value1 = 49 DownTo 0
Begin
RPD[Value1+1] = RPD[Value1];
RPT[Value1+1] = RPT[Value1];
RPV[Value1+1] = RPV[Value1];
End;
RPD[0] = RPDate;
RPT[0] = RPTime;
RPV[0] = RP;
End;
IF Condition1 = False AND Switch = 1 AND SL <= RP Then Begin
RPD[0] = Date[1];
RPT[0] = Time[1];
RPV[0] = SL;
Condition2 = True;
End;
IF Condition2 Then Begin
Condition2 = False;
RP = SL;
RPDate = Date[1];
RPTime = Time[1];
End;
End;
IF Condition1 Then
Begin
RPD[0] = RPDate;
RPT[0] = RPTime;
RPV[0] = RP;
Condition1 = False;
End;
if date=lastcalcdate and time=lastcalctime then
begin
for mm=lastwave to firstwave
begin
If posi=0 then
begin
PosD=RPD[mm];
PosT=RPT[mm];
end;
If posi=1 then
begin
PosD=RPD[mm+1];
PosT=RPT[mm+1];
end;
If posi=2 then
begin
PosD=lastcalcdate;
PosT=lastcalctime;
end;
if zigzag[mm]=0 then ZigZag[mm] = TL_New(RPD[mm+1],RPT[mm+1],RPV[mm+1],
RPD[mm],RPT[mm],RPV[mm])
else
begin
TL_SetBegin(ZigZag[mm], RPD[mm+1], RPT[mm+1] , RPV[mm+1]);
TL_SetEnd(ZigZag[mm], RPD[mm], RPT[mm] , RPV[mm]);
end;
TL_SetSize(ZigZag[mm], Thicknes);
TL_SetColor(ZigZag[mm], Color);
TL_SetExtRight(ZigZag[mm], False);
TL_SetExtLeft(ZigZag[mm], False);
IF False Then Plot1[1](RP, “RP”);
for kk=1 to minlist(NbFib,9)
begin
if TLRet[mm,kk]<=0 then TLRet[mm,kk]=TL_New(RpD[mm+1], RpT[mm+1],
RPV[mm]+(RPV[mm+1]-RPV[mm])*Fib[kk,0],date,
time,RPV[mm]+(RPV[mm+1]-RPV[mm])*Fib[kk,0])
else
Begin
TL_setbegin(TLret[mm,kk],RPD[mm+1],RPT[mm+1],
RPV[mm]+(RPV[mm+1]-RPV[mm])*Fib[kk,0]);
TL_setend(TLret[mm,kk],date, time,
RPV[mm]+(RPV[mm+1]-RPV[mm])*Fib[kk,0]);
End;
TL_setextright(TLret[mm,kk],true);
TL_SetColor(TLRet[mm,kk], Fib[kk,1]);
if fib[kk,0]=.5 then TL_SetStyle(TLRet[mm,kk],1) else
TL_SetStyle(TLRet[mm,kk],3);
Tswing[mm]=Numtostr(mm,0);
Tlevel[mm,kk]=numtostr($2nb(RPV[mm]+(RPV[mm+1]-RPV[mm])*Fib[kk,0]),1);
Tfib=numtostr(Fib[kk,0]*100,1);
if ret[mm,kk]<=0 then Ret[mm,kk]=Text_New(RPDate, RPTime,
RPV[mm]+(RPV[mm+1]-RPV[mm])*Fib[kk,0],”w”&Tswing[mm]&”: “&Tlevel[mm,kk]&” :”&Tfib&”%”)
else
begin
if TextFib<>0 then Text_SetString(Ret[mm,kk],”w”&Tswing[mm]&”:”&Tlevel[mm,kk]&” : “&Tfib&”%”)
else Text_SetString(Ret[mm,kk],leftstr(numtostr(Fib[kk,0]*100,1),1));
end;
Text_SetLocation(Ret[mm,kk], PosD, PosT,
RPV[mm]+(RPV[mm+1]-RPV[mm])*Fib[kk,0]);
Text_SetColor(Ret[mm,kk], Fib[kk,1]);
Text_SetStyle(Ret[mm,kk], Hval, Vval);
end;
if TextHL<>0 then
begin
if Thl[0,mm]=0 then Thl[0,mm]=Text_New(RPD[mm], RPT[mm], RPV[mm],””&numtostr($2nb(RPV[mm]),1)&” (“&numtostr(RPV[mm]-RPV[mm+1],1)
&” =”&numtostr(100*iff(RPV[mm+2]-RPV[mm+1]=0,0,(RPV[mm]-RPV[mm+1])/(RPV[mm+1])),1)&”%) “)
else text_SetString(Thl[0,mm],” “&numtostr($2nb(RPV[mm]),1)&”(“&numtostr(RPV[mm]-RPV[mm+1],1)
&” =”&numtostr(100*iff(RPV[mm+2]-RPV[mm+1]=0,0,(RPV[mm+0]-RPV[mm+1])/(RPV[mm+1])),1)&”%) “);
Text_SetLocation(Thl[0,mm], RPD[mm], RPT[mm], RPV[mm]);
Text_SetColor(Thl[0,mm], color);
if RPV[mm]>RPV[mm+1] then
begin
Text_SetStyle(Thl[0,mm], 0, 0);
Text_SetStyle(Thl[1,mm], 0, 1);
end
else begin
Text_SetStyle(Thl[0,mm], 1, 1);
Text_SetStyle(Thl[1,mm], 1, 0);
End;
End;
End;
End;