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

Re: adaptive stochastic oscillator



PureBytes Links

Trading Reference Links

Al,  I am putting a variable into the HHV function.  Not in the v2: definition
but in the hh: definition lower, the "days" needs to vary as "currlen" or
current length of days over which to calculate the stochastic.  --Dave Nadeau

Al Taglavore wrote:

> Are you not putting a variable into the data array portion of HHV?
>
> Al Taglavore
>
> ----------
> > From: Dave Nadeau <dave.nadeau@xxxxxxxx>
> > To: metastock@xxxxxxxxxxxxx
> > Subject: Re: adaptive stochastic oscillator
> > Date: Thursday, June 29, 2000 2:40 PM
> >
> Here's what I come up with.  It doesn't work, and I've run into this issue
> when trying to solve some other problems.
> Does anyone have any ideas for circumventing the problem of putting a
> variable into the "periods" part of the HHV or LLV functions?
> This gives an error when you try to put the code below into Metastock (in
> blue):
> ----------------------------------------------------------------------------
> ----------------------
> {-- © 2K Tushar Chande; Adaptive Stochastic Oscillator --}
>         vars: v1(0), v2(0), v3(0), v4(0) ;
>         vars: lenmax(28), lenmin(7), currlen(0) ;
>         vars: hh(0), ll(0), stoch(0), stochma(0) ;
> lenmax:= 28;
> lenmin:= 7;
> currlen:= 0;
> {-- Calculate 20-day std. Dev. And its 20-day range --}
>         v1 = stddev(c,20) ;
>         v2 = highest(v1, 20) ;
>         v3 = lowest(v1, 20) ;
> v1:= Stdev(Close, 20);
> v2:= HHV(v1,20);
> v3:= LLV(v1,20);
>
> {-- Create v4: stochastic oscillator for 20-day std. dev. --}
> {-- if v1=v2 (highest level) => v4 = 1; if v1=v3 (lowest level) => v4=0 --}
>
>         if (v2-v3) > 0 then v4 = ((v1 - v3)/(v2-v3)) Else v4 = 0 ;
> v4:=If((v2-v3)>0,((v1 - v3)/(v2-v3)),0);
> {-- Calculate current effective length; if v4 = 1, then length = mininum
> --}
>
>         currlen = IntPortion(lenmin + (lenmax-lenmin)*(1-v4)) ;
> currlen:= If(v4=1,lenmin,(Int(lenmin + (lenmax-lenmin)*(1-v4))));
> {-- Calculate stochastic oscillator and its 3-day exponential average --}
>         hh = highest(h, currlen) ;
>         ll = lowest(l, currlen) ;
>         if (hh-ll) > 0 then stoch = ((close - ll)/(hh - ll)) * 100 ;
>         if currentbar = 1 then stochma = 0 else
>                stochma = 0.5*stoch + 0.5*stochma[1] ;
> hh:= HHV(High, currlen);
> ll:= LLV(Low, currlen);
> stoch:=If(((hh-ll)>0,((close - ll)/(hh - ll)) * 100,50) {I set the error
> condition to a stochastic midpoint...I'm open to any other ideas???}
> stochma:= (.5*stoch)+(.5*Ref(stoch,-1))
>
> {-- Plot data --}
>         plot1(stoch, "adapt_stoch") ;
>         plot2(stochma, "stochma") ;
>         plot3(80, "hi_ref") ;
>         plot4(20, "lo_ref") ;
> stoch; stochma; 80; 20;
> { -- End of code --}
> ----------------------------------
> Dave Nadeau
>