Trendline Finder Function

post your indicators here

Moderator: moderators

drtrade
rank: <50 posts
rank: <50 posts
Posts: 1
Joined: Tue Oct 02, 2007 7:41 pm
Reputation: 0
Gender: Male

Trendline Finder Function

Postby drtrade » Sun Dec 30, 2007 7:34 pm

This function will find the closest support or resistance line of a specified color and give the value for it. Works great but is pretty slow.

Any input on how to optimize the code to process faster would be greatly appreciated.

Thanks

Code: Select all

         
inputs: 
    TrendLineID( numeric ),
    TLColor( Numeric);
 
Variables:
   DateTime(0),
   Distance(0),
   TLClose(0),
   BeginDate(0),
   EndDate(0),
   Extension(0);
Array: int PrevValue[1](1);

_TL_FindColorClosest = -1;
Distance = 999;
TLClose = 0;
Extension = 0;
If TrendLineID = -1 then Value1 = TL_GetNext( PrevValue[0], 3 ) ;
If TrendLineID = 1 then Value1 = TL_GetNext( PrevValue[1], 3 ) ;
DateTime = ELDateToDateTime(Date) + ELTimeToDateTime(Time);

if Value1 >= 0 then
   while Value1 >= 0 begin
      BeginDate = ELDateToDateTime(TL_GetBeginDate(Value1)) + ELTimeToDateTime(TL_GetBeginTime(Value1));
      EndDate = ELDateToDateTime(TL_GetEndDate(Value1)) + ELTimeToDateTime(TL_GetEndTime(Value1));
      If Date > CalcDate(CurrentDate,-10) then
         if TL_GetExtRight(Value1) = True then
            Extension = 1;
         if TL_GetColor( Value1 ) = TLColor and BeginDate <= DateTime AND (EndDate >= DateTime OR Extension = 1) then
         begin
      If TrendLineID = -1 AND TL_GetValue( Value1, D, T ) <= High then begin
      if AbsValue(Close - TL_GetValue( Value1, D, T )) < Distance then begin
      Distance = AbsValue(Close - TL_GetValue( Value1, D, T ));
      TLClose = Value1;
      end;
      end;
      If TrendLineID = 1 AND TL_GetValue( Value1, D, T ) >= Low then begin
      if AbsValue(Close - TL_GetValue( Value1, D, T )) < Distance then begin
      Distance = AbsValue(Close - TL_GetValue( Value1, D, T ));
      TLClose = Value1;
      end;
      end;
         end;
      if TL_GetColor( Value1 ) = TLColor AND BeginDate > DateTime then begin
         Value1 = -2 ;
      end
      else begin
         Value1 = TL_GetNext( Value1, 3 ) ;
       end;
   end ;

_TL_FindColorClosest = TLClose;
//PRINT (FILE ("c:\TsBars1.txt"), DATE, Time, "  Return Value   ", TLClose) ;
//Print(Date, Time, "Return Value   ", TLClose);
If TLClose > 20 AND TrendLineID = -1 then PrevValue[0] = TLClose - 20;
If TLClose > 20 AND TrendLineID = 1 then PrevValue[1] = TLClose - 20;


And here is the code to call the function

Code: Select all

Vars: FibResistance(0), FibSupport(0);
Value10 = _TL_FindColorClosest( -1, Blue);

if Value10 > 0 then 
FibSupport = TL_GetValue( Value10, D, T );

Value11 = _TL_FindColorClosest( 1, Red);

if Value11 > 0 then 
FibResistance = TL_GetValue( Value11, D, T );

Please add www.kreslik.com to your ad blocker white list.
Thank you for your support.

Return to “Tradestation indicators”