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

RE: [amibroker] Re: (fred #2) EasyLanguage question



PureBytes Links

Trading Reference Links

Thanks to Fred and Dalengo for getting Twitch converted to Amibroker.

Here is the completed code that appears to be working as intended.

 

//---------------- START OF CODE ---------------------

 

//TWITCHER v4. Concept from FUTURES Magazine, January 2006, page 39.

//Code converted from EasyLanguage by Fred AND dalengo.

//Final changes by Terry on 2/1/2006

 

// The formula for X seems to be dealing with degrees rather than radians and

// probably should be changed to use cos(3.14159 * 2 / Length) instead of cos(360 / Length)

// ... Fred

 

SetChartOptions(1,chartShowDates);

 

initLength = Param("initLength", 21, 2, 60, 1); //To use a list, comment OUT this line

 

length = Max(2,initLength);

 

x    = (1 - cos(3.14159 * 2 / Length)) / 0.414213562;

u    = -x + sqrt(x ^ 2 + 2 * x);

u1   = 1.0 - u;

u1_2 = u1 ^ 2;

u_2  = u ^ 2;

y[0] = C[0];

y[1] = C[1];

 

for (i = 2; i < BarCount; i++)

{

    y[i]  = u_2 * C[i] + 2 * u1 * y[i-1] - u1_2 * y[i-2];

}

 

Plot(y, "Twitch", colorWhite);

Plot(C, "Close"colorRed);

 

Filter = 1;

 

AddColumn(x,    "x",    1.5);

AddColumn(u,    "u",    1.5);

AddColumn(u1,   "u1",   1.5);

AddColumn(u1_2, "u1_2", 1.5);

AddColumn(u_2,  "u_2"1.5);

AddColumn(y,    "y",    1.5);

AddColumn(C,    "C",    1.5);

 

Title = NumToStr(initLength ,1.0) + "   {{VALUES}}";

//---------------- END OF CODE ---------------------

 

--

Terry

 

-----Original Message-----
From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of Fred
Sent: Tuesday, January 31, 2006 22:30
To: amibroker@xxxxxxxxxxxxxxx
Subject: [amibroker] Re: (fred #2) EasyLanguage question

 

Sorry ... didn't look at the reference ...

 

Removing the function, simplifying the code somewhat, adding some

breathing room for the operators and making use of AddColumn's to

investigate the constants one can see that the formula appears to be

doing what it is supposed to as the results can be checked easily

enough against Excel ...

 

However, the formula for X seems to be dealing with degrees rather

than radians and probably should be changed to read ...

 

x = (1 - cos(3.14159 * 2 / Length)) / 0.414213562;

 

--------------------------------------------------

 

initLength = Param("initLength", 21, 2, 60, 1);

 

if (initLength < 2)

    length = 2;

else

    length = initlength;

 

x    = (1 - cos(360 / Length)) / 0.414213562;

u    = -x + sqrt(x ^ 2 + 2 * x);

u1   = 1.0 - u;

u1_2 = u1 ^ 2;

u_2  = u ^ 2;

y[0] = C[0];

y[1] = C[1];

 

for (i = 2; i < BarCount; i++)

{

y[i]  = u_2 * C[i] + 2 * u1 * y[i-1] - u1_2 * y[i-2];

}

 

Plot(y, "twitch", colorWhite);

Plot(C, "Close",  colorRed);

 

Filter = 1;

 

AddColumn(x,    "x",    1.5);

AddColumn(u,    "u",    1.5);

AddColumn(u1,   "u1",   1.5);

AddColumn(u1_2, "u1_2", 1.5);

AddColumn(u_2,  "u_2",  1.5);

AddColumn(y,    "y",    1.5);

AddColumn(C,    "C",    1.5);

 

--- In amibroker@xxxxxxxxxxxxxxx, "dalengo" <dalengo@xxxx> wrote:

>

> "Read your statements one at a time ONCE AND ONLY ONCE and tell me "

> OK, lets do that::

>

> y1=y2=P[0]   // y,y1,y2 in my AFL are numbers, not arrays

> ____________________________________

> procedure::

> y = u_2* P[i]+2*u1*y1-u1_2*y2;

> y2=y1;

> y1=y;

> ====================================

> Run it from i=1 to N-1::

>

> i=1

> y = u_2* P[1]+2*u1*y1-u1_2*y2;

> y2=y1  /* =P[0] */;

> y1=y   /* =tw[1], #1 array member that we got here;

>

> i=2

> y = u_2* P[2]+2*u1*y1-u1_2*y2; //NB: here y1=tw[1], y2=P[0]

> y2=y1 // =tw[1] ;

> y1=y  // =tw[2],  #2 array member that we got at this step};

>       // here we get tw[2] as a function of tw[1], etc.

> .......

>

> as we see, tw[i+1] depends on tw[i] (and P[i+1], ...)

> I would call this autoregression, or a recursive relation

(wikipedia)

>

> Is that correct? I refer to my code in #93076::

> /////////////////////////////////////////////////////

> function twitch(price,initLength)

> // alex-- ARMA(2) "twitch" v.2 simplified

> {

> length = x = u = u1 = u1_2 = u_2 =0;

> y=y1=y2=0;

> if ( initLength < 2 ) length = 2; else length = initlength;

>

>

> x =(1- cos(360/Length))/0.414213562;

> u =-x + sqrt(x*x+2*x);

> u1 = 1.0-u;

> u1_2 =u1*u1;

> u_2 =u*u;

> y1 =price[0];

> y2 =y1;

> tw = Cum(0);

> for ( i = 1; i < BarCount; i++ )

> {

> y = u_2* price[i]+2*u1*y1-u1_2*y2;

> y2=y1;

> y1=y;

> tw[i]=y;

> }

> return tw;

> }

>

> initL = Param("init",3,2,50,1);

> tw = twitch(C,initL);

>

> Plot(tw,"twitch",1,1);

> Plot(C,"c",1,64);

>

>

> --- In amibroker@xxxxxxxxxxxxxxx, "Fred" <ftonetti@xxxx> wrote:

> >

> > Read your statements one at a time ONCE AND ONLY ONCE and tell me

> > where you see recursion ...

> >

> > --- In amibroker@xxxxxxxxxxxxxxx, "dalengo" <dalengo@xxxx> wrote:

> > >

> > > could you please take a look at msg #93076.

> > > this is a simple recursion, constructs a moving average.

> > > do you see any problem with the code? it should do what

> > > TS code does. Code below does not...

> > > ?

> > >

>

 

 

 

 

 

 

 

------------------------ Yahoo! Groups Sponsor --------------------~-->

Try Online Currency Trading with GFT. Free 50K Demo. Trade

24 Hours. Commission-Free.

http://us.click.yahoo.com/RvFikB/9M2KAA/U1CZAA/GHeqlB/TM

--------------------------------------------------------------------~->

 

Please note that this group is for discussion between users only.

 

To get support from AmiBroker please send an e-mail directly to

SUPPORT {at} amibroker.com

 

For other support material please check also:

http://www.amibroker.com/support.html

 

 

Yahoo! Groups Links

 

<*> To visit your group on the web, go to:

    http://groups.yahoo.com/group/amibroker/

 

<*> To unsubscribe from this group, send an email to:

    amibroker-unsubscribe@xxxxxxxxxxxxxxx

 

<*> Your use of Yahoo! Groups is subject to:

    http://docs.yahoo.com/info/terms/

 

 



Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com

For other support material please check also:
http://www.amibroker.com/support.html





SPONSORED LINKS
Investment management software Real estate investment software Investment property software
Software support Real estate investment analysis software Investment software


YAHOO! GROUPS LINKS