PureBytes Links
Trading Reference Links
|
Tomasz,
Thanks for your "other point of view" on how to look at the math
involved (being an electrical engineer, I should have seen that! :)
However, I have run into another problem. sc (the smoothing constant
here is a moving target....it changes based on the stock's movement
(adapative). Below is the entire code:
fast = 2/(2+1);
slow = 2/(30+1);
dir=abs(close-ref(close,-10));
vol=sum(abs(close-ref(close,-1)),10);
ER=dir/vol;
sc =( ER*(fast-slow)+slow)^2;
graph1=sc;
x =-1 + round(2/sc);
AMA = ema(close,x);
And the error is:
AMA = ema(close,round(2/sc))
^
Bad args
which leds me to believe that this adaptive moving average can not be
done. But prehaps you have a better idea on how to get this to work.
Once again, thanks for all your help, and keep up the great work!! :)
Regards,
Jared James
jjames@xxxx
--- In amibroker@xxxx, "Tomasz Janeczko" <tjaneczk@xxxx> wrote:
> Hi,
>
> Sometimes things look more complicated than they should :-)
>
> Your formula:
>
> AMA = ref(AMA,-1)+sc*(close-ref(AMA,-1));
>
> Is the same as:
>
> AMA = sc * close + ( 1 - sc ) * Previous( AMA );
>
> This one is in fact the formula for exponential moving average
> sc is simply smoothing constant = 2 / (periods + 1)
>
> So periods = -1 + 2/sc
>
> So you final AFL code for your AMA is:
>
> AMA = ema( close, -1 + 2/sc );
>
> It is not only faster to execute but also does not have any self-
references.
>
> In AFL you can reference the same variable in the assignment
statement
> (you must initialize it however):
>
> testvar = 0;
> testvar = testvar + close;
>
> But... AFL is a vector (or array) based language performing
operations on array
> in one run (that's why it is so fast) - so you can not iterate thru
elements
> of the array. Statements like variable = ref( variable, -1 ) +
something
> will not work correctly.
> To overcome this problem functions like cum(), sum(), ema() should
be used.
>
> Best regards,
> Tomasz Janeczko
>
>
> ----- Original Message -----
> From: <jmjames@xxxx>
> To: <amibroker@xxxx>
> Sent: Tuesday, March 13, 2001 05:34
> Subject: [amibroker] Help with an indicator...
>
>
> > Hi!
> >
> > I have had trouble getting an indicator to work. More specific,
I
> > have had trouble with the following line:
> >
> > AMA = ref(AMA,-1)+sc*(close-ref(AMA,-1));
> >
> > It comes back with an error of:
> >
> > AMA = ref(AMA,
> > ^
> >
> > Unknown identifier
> >
> > Am I doing something wrong, or will AmiBroker not handel a ref to
> > itself?
> >
> > Thank for your time and effort on my questions!!
> >
> > Regards,
> >
> > Jared James
> > jjames@xxxx
> >
> >
> >
> >
> >
> >
> > Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/
> >
> >
|