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

Re: Not Average



PureBytes Links

Trading Reference Links

That's explains two things:

1. What was going wrong.
2. Why I'm not a programmer.

Many thanks, Gary...

Ian

> >  diff=c-c[1];
> >  diff=average(diff,3);
> >  plot1(diff1,"diff");
> > 
> > Someone said the problem happens because "diff" has already been
> > used. I was trying to be thrifty (:-). However, I thought you were
> > allowed to change the value of a variable by referencing itself such
> > as: 
> > count=count+1;
> > 
> > So I assumed my version would work. Is there some obtuse aspect of
> > EL at work here? 
> 
> No, just a programming error.  
> 
> The average function calculates the average of the value of diff 
> on the last 3 bars.  You want the 3-bar average of c-c[1].  But 
> what is the value of "diff" for the last 3 bars?  On the current 
> bar, it's c-c[1].  But on the previous two bars, it's NOT c-c[1], 
> but the average you calculated on those bars!
> 
> So instead of calculating the average of (c-c[1]), (c-c[1])[1], 
> and (c-c[1])[2], which is what you wanted, you were calculating 
> the average value of (c-c[1]), average(diff,3)[1], and 
> average(diff,3)[2].
> 
> When you added in the additional diff1 variable, you no longer 
> overwrote diff with the average, so diff still contained the 
> difference of c-c[1], and the average of diff was correct.
> 
> If you want to use two separate vars like that, I suggest you 
> change diff1 to avgdiff or something like that so it's clear what 
> it is.
> 
>  diff=c-c[1];
>  avgdiff=average(diff,3);
>  plot1(avgdiff,"avgdiff");
> 
> Gary
> 
>