General Topics
Markets
Technical Topics
Brokerage Firms
Company Specific
Community Lounge
Site Support

# Plotting Fibonnacci Lines automatically(TS2000i)

Discussion in 'Strategy Building' started by Jana, Jan 18, 2003.

1. ### Jana

Hi,
i`m looking for the ELA to plot the fibo-lines automatically.
e.g. of the high/low of the last 60 minutes.
I have only the formular to plot it, if you input every time the high/low. Can someone modify it?
Thanks

Fibtool
input: PvtsID("ab"), Fib1(1), Fib2(.382), Fib3(.50), Fib4(.618), Fib5(.787), Fib6(0), BaseColor(999);

{ Note: if Fibx <> 999, then show the line; if BaseColr = 999 then set the FibColors below }

var: ShoPrice(true), { Show the calculated Fib price }
ShoDiag(true), { Show the Diagonal line }
tlsize(0), { Width of the Fib lines }
extend(true); { Extend Fib lines to the right }

{ Note: JGW - 12/26/02 - I used Clyde Lee's ellipse code (which ironically was
based on my Andrews Pitchfork), and coerced it to draw Fib lines instead of
ellipses. Removed some obvious vestigial code, but didn't pretty it up.}

var: fib(0), FirstTime(true); { JGW }
Array: Fibs[10](999), FibColors[10](cyan); { JGW }

var: date1(0),time1(0),price1(0),date2(0),time2(0),price2(0);
var: ii(0), ok2draw(true);
var: handl(0), ss("");
var: han(0),IPass(0);
var: AryCount(0);

Arrays: DateAry[10000](0), TimeAry[10000](0);
Arrays: Dates[26](0), Times[26](0), Chars[26](""), Comp[26](2);
Arrays: PriceC[26](0), PriceH[26](0), PriceL[26](0), Abars[26](0);
Vars: CharKnt(0);

AryCount=AryCount+1;
DateAry[AryCount]=Date;
TimeAry[AryCount]=Time;
If AryCount>9999 then begin
ok2draw = false;
AryCount=9999;
End;

if currentbar = 1 then begin
{find out how many we are looking for}
CharKnt=strlen(PvtsID);
For Value1=1 to CharKnt begin
Chars[Value1]=UpperStr(midstr(PvtsID,Value1,1));
End;
handl = text_getfirst(2);
Value9=0;
while handl >= 0 begin
ss = text_getstring(handl);
ss = UpperStr(ss);
For Value1=1 to CharKnt begin
if LeftStr(ss,1) = Chars[Value1] then begin
Dates[Value1] = text_getdate(handl);
Times[Value1] = text_gettime(handl);
PriceC[Value1]= Text_GetValue(handl);
If strlen(ss)>1
then Comp[Value1]=StrToNum(MidStr(ss,2,Strlen(ss)-1))
else Comp[Value1]=1;
end;
end;
Value9=Value9+1;
handl = text_getnext(handl,2); { IMPORTANT -- infinite loop if this is missing! }
end;
{Check to see we have them all and good dates/times}
For Value1=1 to CharKnt-1 begin
For Value2=Value1+1 to CharKnt begin
If Dates[Value2] and Times[Value2] Value3=Dates[Value2];Dates[Value2]=Dates[Value1];Dates[Value1]=value3;
Value3=Times[Value2];Times[Value2]=Times[Value1];Times[Value1]=value3;
Value3=PriceC[Value2];PriceC[Value2]=PriceC[Value1];PriceC[Value1]=value3;
End;
End;
end;
Value3=0;
For Value1=1 to CharKnt-1 begin
If Date[Value1]=0 or Time[Value1]=0 then Value3=Value3+1;
End;
If Value3<>0 then begin
CharKnt=CharKnt-Value3;
For Value1=1 to CharKnt begin
Dates[Value1]=Dates[Value1+Value3];
Times[Value1]=Times[Value1+Value3];
PriceC[Value1]=PriceC[Value1+Value3];
End;
End;
{Have Stuff in arrays and sorted by D+T -- Now Scan dates for bars/price}

{ JGW }
Fibs[1] = Fib1;
Fibs[2] = Fib2;
Fibs[3] = Fib3;
Fibs[4] = Fib4;
Fibs[5] = Fib5;
Fibs[6] = Fib6;
if BaseColor = 999 then begin
FibColors[1] = cyan;
FibColors[2] = green;
FibColors[3] = white;
FibColors[4] = red;
FibColors[5] = green;
FibColors[6] = cyan;
end else begin
FibColors[1] = BaseColor;
FibColors[2] = BaseColor;
FibColors[3] = BaseColor;
FibColors[4] = BaseColor;
FibColors[5] = BaseColor;
FibColors[6] = BaseColor;
end;
end;

If IPass if date = dates[Ipass+1] and time = times[Ipass+1] then begin
IPass=IPass+1;
PriceH[IPass] = h;
PriceL[IPass] = l;
ABars[IPass] = CurrentBar;
{ plot1(h,"",cyan,default,5);} { JGW - uncomment to show the selected point }
end;
end;

if FirstTime then { JGW - prevent redraw on each new bar }
if lastbaronchart then begin
FirstTime = false;
If IPass<>CharKnt then begin
If PriceC[Ipass+1]<>0 then begin
Ipass=Ipass+1;
PriceH[IPass] = PriceC[IPass];
PriceL[IPass] = PriceC[IPass];
Value1=Round((DateToJulian(Dates[IPass])-DateToJulian(date))*5/7,0);
ABars[IPass] = CurrentBar+Value1;
For Value1=1 to 100 begin
Value2=BarsToDate_Time(0, Value1, Value3, Value4);
AryCount=AryCount+1;
DateAry[AryCount]=Value3;
TimeAry[AryCount]=Value4;
If AryCount>9999 then begin
ok2draw = false;
AryCount=9999;
End;
End;
End;
End;

If IPass<>CharKnt or ok2draw=false or CharKnt <> 2 then begin
Value1 = text_new(date,time,c,"Missing Label/Or too many "+NumToStr(AryCount,0));
text_setstyle(Value1,1,1);
End
Else begin
FOR IPASS=1 TO CHARKNT-1 BEGIN {start of plotting loop}
Date1 = Dates[Ipass];
Time1 = Times[Ipass];
Date2 = Dates[Ipass+1];
Time2 = Times[Ipass+1];

{ JGW - Fib code }
if PriceC[IPass] < PriceC[IPass+1] then begin
Price1 = PriceL[IPass];
Price2 = PriceH[IPass+1];
end else begin
Price1 = PriceH[IPass];
Price2 = PriceL[IPass+1];
end;
if ShoDiag then begin
han = tl_new(date1,time1,price1,date2,time2,price2);
tl_setcolor(han,fibcolors[ii]);
tl_setextleft(han,false);
tl_setextright(han,false);
tl_setsize(han,0);
end;
for ii = 1 to 6 begin
if fibs[ii] <> 999 then begin
if fibs[ii] > 1 then fib = price1 + fibs[ii] * (price2 - price1)
else fib = price1 + (1 - fibs[ii]) * (price2 - price1);
han = tl_new(date1,time1,fib,date2,time2,fib);
tl_setcolor(han,fibcolors[ii]);
tl_setextleft(han,false);
tl_setextright(han,extend);
tl_setsize(han,tlsize);
if ShoPrice then begin
ss = " ("+NumToStr(fibs[ii],3)+")"+spaces(2)+
NumToStr(round(fib,1),2)+spaces(2);
han = text_new(date2,time2,fib,ss);
text_setcolor(han,fibcolors[ii]);
text_setstyle(han,1,2);
end;
end;
end; { end of Fib code }
End; {end IPASS loop}
End; {end of the for valid NChars loop}
END; {End last bar test}

if false then begin
plot1(0,"");
plot2(0,"");
plot3(0,"");
plot4(0,"");
end;

ET IS FREE FOR TRADERS BECAUSE OF THE FINANCIAL SUPPORT FROM THESE SPONSORS: