[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Indicator works in TS4 but not in TS2000



PureBytes Links

Trading Reference Links

RS, I have the same code but it also has the following message attached
which indicates it was written by Greg Wood. Perhaps yours doesn't have this
attachment. For such a nice piece of code, it is important to give credit
where credit is due.

{ ======================================
This is my implementation of Linear Regression Channels. You are welcome to
use this code freely.  You may redistribute it provided you include this
comment block, plus a description of any changes you make.

If you extend it, or adapt it to other uses, I'd appreciate a look at what
you've done.  Thanks.

     Gregory Wood
     SwissFranc@xxxxxxxxxxxxxxxx

01/26/97 v1.0 - Initial distribution
========================================}



-----Original Message-----
From: R S <randall21@xxxxxxxxxxx>
To: omega-list@xxxxxxxxxx <omega-list@xxxxxxxxxx>
Date: Thursday, November 23, 2000 1:54 PM
Subject: Indicator works in TS4 but not in TS2000


>Below is the .ela code (incl function) for a very clever Linear Regression
>Channel indicator (very similar to Advanced Get's channels).
>
>This was written for TS4 several years ago, but for some reason it will not
>work with TS2000.
>
>Perhaps someone can figure out why?
>
>Thank you.
>
>
>{Indicator: Linear Regression Channel
>
>USAGE:
>
>Use the text tool to indicate the beginning and end of the channel(s) you
>want.  The default uses "R"s (upper case, no quotes). Then to show the
>channel(s), go to Format Analysis Techniques, select this indicator, and
>press the "Status" button two times (this is not a double-click, really
>press it two times).
>
>The channel is based on Price, which defaults to Close, but you can change
>it to High or Low.
>
>You can set the color and thickness of the channels.
>
>You can show a series of channels by putting more "R"s on the chart.  Each
>pair of "R"s will get its own channel.
>
>If you want separate channels or different colors, you can add the
indicator
>multiple times. Be sure to give each one a different labTL value.}
>
>
>input:  price(c), labTL("R"), colorTL(tool_yellow), thickTL(0);
>
>array: dd[20](0),tt[20](0),vv[20](0),bb[20](0);
>var: iMax(20), ix(0), hh(0), ll(0), hhbb(0), llbb(0);
>var: pvv1(0), pbb1(0), pvv2(0), pbb2(0), x1(0), x2(0), y1(0), y2(0);
>var: ii(0), jj(0), kk(0), hval(0), lval(0);
>var: handl(0);
>
>if currentbar = 1 then begin { examine all the text strings and save some
>info about the ones we recognize }
>   handl = text_getfirst(2);
>   while handl > 0 begin
>      if text_getstring(handl) = labTL then begin { save the item's date,
>time, value and handle }
>            if ix < iMax - 1 then begin
>                tt[ix] = text_gettime(handl);
>                dd[ix] = text_getdate(handl);
>                vv[ix] = text_getvalue(handl);
>                ix = ix + 1;
>           end;
>      end;
>      handl = text_getnext(handl,2); { IMPORTANT -- infinite loop if this
is
>missing!  }
>   end;
>end;
>
>for ii = 0 to ix - 1 begin { check each point }
>   if time = tt[ii] and date = dd[ii] then begin { we've found a selected
>point }
>      bb[ii] = currentbar; { remember where we found it }
>      plot1(price,""); { show the user which point we used for the
>calculations }
>      if ii > 0 then begin { need at least 1 point }
>         { The regression line passes through (x1,y1) and (x2,y2) }
>         x1 = bb[ii];
>         x2 = bb[ii-1];
>         y1 = LinearRegValue(price, x1-x2 ,0);
>         y2 = LinearRegValue(price, x1-x2, x1-x2);
>
>         { Draw the regression line }
>         handl = TL_New(date[currentbar-x2],time[currentbar-x2],y2,
>date[currentbar-x1],time[currentbar-x1],y1 );
>         TL_SetExtRight(handl, true);
>         TL_SetExtLeft(handl, false);
>         TL_SetSize(handl, thickTL);
>         TL_SetColor(handl, colorTL);
>
>         { find the max excursion on each side of the line }
>         hval = 0;
>         lval = 0;
>         for kk = x2 to x1 begin
>             value1 = pnt2line(x1,y1,x2,y2, barnumber[currentbar-kk],
>high[currentbar-kk]);
>             if value1 > 0 and hval < value1 then begin
>                hval = value1;
>                hh = h[currentbar-kk];
>                hhbb = kk;
>             end;
>             value2 = pnt2line(x1,y1,x2,y2, barnumber[currentbar-kk],
>low[currentbar-kk]);
>             if value2 < 0 and lval > value2 then begin
>                lval = value2;
>                ll = l[currentbar-kk];
>                llbb = kk;
>             end;
>         end;
>
>         { Now draw the channel lines }
>         plot2[currentbar-hhbb](hh,"");
>         pvv1 = TLValue(ll,llbb, ll-(y2-y1), llbb-(x2-x1), x1);
>         pvv2 = TLValue(ll,llbb, ll-(y2-y1), llbb-(x2-x1), x2);
>         handl = TL_New(date[currentbar-x2],time[currentbar-x2],pvv2,
>date[currentbar-x1], time[currentbar-x1],pvv1);
>         TL_SetExtRight(handl, true);
>         TL_SetExtLeft(handl, false);
>         TL_SetSize(handl, thickTL);
>         TL_SetColor(handl, colorTL);
>
>         plot3[currentbar-llbb](ll,"");
>         pvv1 = TLValue(hh,hhbb, hh-(y2-y1), hhbb-(x2-x1), x1);
>         pvv2 = TLValue(hh,hhbb, hh-(y2-y1), hhbb-(x2-x1), x2);
>         handl = TL_New(date[currentbar-x2],time[currentbar-x2],pvv2,
>date[currentbar-x1], time[currentbar-x1],pvv1);
>         TL_SetExtRight(handl, true);
>         TL_SetExtLeft(handl, false);
>         TL_SetSize(handl, thickTL);
>         TL_SetColor(handl, colorTL);
>
>      end;
>   end;
>end;
>
>
>
>{Function: pnt2line}
>
>input: x1(numericsimple), y1(numericsimple),
>          x2(numericsimple), y2(numericsimple),
>          x(numericsimple),   y(numericsimple);
>
>{ returns the distance from (x,y) to the line formed by (x1,y1) (x2, y2) }
>
>var: qq(0), m1(0), m2(0);
>
>if x-x2 <> 0 then begin
> m1 = (y1-y2) / (x1-x2);
> m2 = (y-y2) / (x-x2);
> qq = SquareRoot(Square(y-y2)+Square(x-x2));
> value1 = qq * sine( arctangent( (m2-m1) / (1 + m1*m2)));
>end else
> value1 = 0;
>
>pnt2line = value1;
>
>