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

[Metastockusers] Re: Pseudo Loop and Rafter Moving Trend/Linear Regression Indicator



PureBytes Links

Trading Reference Links

Good work Tom.

This is your code with a few extra loops added:

---8<-------------------------

{ Example of MetaStock pseudo-loop code,
  MetaStock Linear Regression Indicator }
{ Tom Sprunger 2004 }

pds:=Input("Lin Reg periods",1,37,21);
y:=Input("use Open=1 High=2 Low=3 Close=4 WClose=5 P=6",1,6,4);

y:=If(y=1,O,If(y=2,H,If(y=3,L,If(y=5,WC(),If(y=6,P,C)))));
k1:=(pds+1)/3;

{ Start pseudo loop }
x:=(pds-k1)*y;
n:=pds-1;
x:=If(n>0,x+(n-k1)*Ref(y,-1),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-2),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-3),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-4),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-5),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-6),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-7),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-8),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-9),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-10),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-11),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-12),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-13),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-14),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-15),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-16),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-17),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-18),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-19),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-20),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-21),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-22),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-23),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-24),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-25),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-26),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-27),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-28),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-29),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-30),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-31),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-32),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-33),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-34),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-35),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-36),x);
n:=n-1;
x:=If(n>0,x+(n-k1)*Ref(y,-37),x);
{ End pseudo loop }

k2:=6/(pds*(pds+1));
wt:=x*k2;

wt

---8<-------------------------

jose '-)



--- In Metastockusers@xxxxxxxxxxxxxxx, "Tom Sprunger" <tlsprunger@xxxx
> wrote:
> A few days ago I posted a question on a formula.  The answer was I 
couldn't
> do it easily because it required a loop which Metastock does not 
support.  A
> good example of hard coding was presented.  However, I took up the 
challenge
> to perform a loop in Metastock.  What I came up functions like a 
loop.  The
> disadvantage is that there are limits to how many iterations can be 
done in
> the loop, basically you run out of room.
> 
> The formula below is for Rafter's Moving Trend, which is the same as 
the
> Linear Regression Indicator in Metastock.
> 
> the loop implements the below
> 
> n=20;
> for(i = n; i > 0; i--)
> sum += (i - (n + 1) / 3) * close(i - n);
> 
> I used the ability to do x=x+y  and the ability to reuse a variable, 
then
> put in an if statement to see if the loop was finished.
> 
> Hope this can help in the future
> 
> Tom
> 
> --- Rafter Moving Trend, or the Metastock Linear Regression 
Indicator ---
> pds:=20;  {must be between 1 and 30}
> k1:=(pds+1)/3;
> k2:=6/(pds*(pds+1));
> n:=pds;
> 
> {start pseudo loop}
> x:=(n-k1)*CLOSE; {"0" bar}
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds))); {-1 bar}
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds))); {-3}
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds))); {-6}
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds))); {-9}
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds))); {-12}
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds))); {-15}
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds))); {-18}
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds))); {-21}
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds))); {-24}
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds))); {-27}
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds)));
> n:=n-1;
> x:=If(n<=0,x,x+(n-k1)*Ref(C,(n-pds))); {-30}
> {end pseudo loop}
> 
> wt:=x*k2;
> wt



------------------------ Yahoo! Groups Sponsor --------------------~--> 
Make a clean sweep of pop-up ads. Yahoo! Companion Toolbar.
Now with Pop-Up Blocker. Get it for free!
http://us.click.yahoo.com/L5YrjA/eSIIAA/yQLSAA/zMEolB/TM
--------------------------------------------------------------------~-> 

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/Metastockusers/

<*> To unsubscribe from this group, send an email to:
    Metastockusers-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/