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

Re: [amibroker] Re: MA, DEMA and TEMA can take array parameters, but EMA can't?



PureBytes Links

Trading Reference Links

Dimitris,

Yes we can call them equivalent because Wilders( array, 1/x) function uses
exactly the same formula as AMA( array, 1/ x):

WildersToday = ( Array + ( Periods - 1 ) * WildersYesterday ) / Periods.

This is mathematically strictly the same as:

WildersToday = Array * ( 1/ Periods )  + (1 - (1/Periods) ) * WildersYesterday;

Now AMA is:

AMAToday = Array * Factor + (1-Factor) * AMAYesterday

When Factor = 1/periods those two are mathematically strictly equivalent.

There is no magic, just pure math.

It does not really matters if Factor is variable or not because the formula
is constant.

You are making false assumption thinking that

evenbar = BarIndex()%2 == 0;

AMA( C, IIF( evenbar, 10, 11 ) ) 

will work like

IIF( evenbar, AMA( C, 10 ), AMA( C,11 ) )

but this is just that - false assumption. You assume that
switching periods would cause all calculations to start from the very beginning,
but it is not the case. 
As for analogy: it is well known thing in electroacustics.

The EMA (AMA, etc) is single pole recursive low pass filter aka
as infinite impulse response filter (IIR)
http://www.ece.utexas.edu/~bevans/courses/realtime/lectures/06_IIR_Filters/lecture6.pdf


If you have PHYSICAL single pole low pass filter (for example simple RC or LC circuit) and you change
the 'cut-off' frequency (by changing capacity of condenser for example) 
then you are not able to 'start from the beginning'
because physical filter has it's state and if you change
the parameters these parameters are applied to current state.
This is *exactly* how variable period AMA works.
AMA and others work in 'real time'. They preserve its state (previous value of AMA)
and apply parameters (smoothing factor) to produce next value. Exactly like physical circuit.
Physical RC circuit can not go back and take the series voltage numbers from past year to calculate
todays value. It just remembers its current state.
Exactly the same AMA - all it needs is CURRENT data (price) and its previous state (single number
representing previous value of AMA). It does not re-start calculations from the very beginning, ever.

And this is fundamentally different from FIR filter (Finite impulse
response) like MA that is re-calculated for N-bars, not for infinite number of bars.

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "DIMITRIS TSOKAKIS" <TSOKAKIS@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Wednesday, October 15, 2003 2:47 PM
Subject: [amibroker] Re: MA, DEMA and TEMA can take array parameters, but EMA can't?


> Tomasz,
> I clearly understand the recursive nature of these functions.
> This is not the subject.
> The question is : Can we call "equivalent" two never touching lines ?
> It is somehow tricky to ask from the user to accept the following 
> story:
> 1. Wilders(C,x) is N/A for  variable x  
> 2. For fixed x the Wilders(C,x)=AMA(C,1/x) is true
> 3. Please accept the "analog" meaning for the argument
> Arg. 1 : Wilders(C,x) is *also* AMA(C,1/x) *even when* x is variable
> or
> Arg. 2 : You may call AMA(C,1/x) as Wilders(C,x), x variable, 
> *because* AMA(C,1/x) *is* Wilders(C,x), when x=fixed !!
> 
> We have no evidence that this "analogy" exists and, form my experiece 
> in Physics, it is dangerous to speak [and use] for analogies just 
> because we like them. 
> >From this point of view, it is better not to have variable periods 
> for EMA, Wilders. Now, AMA(C,1/x) , 10<=x<=20 is an interesting 
> line "between" AMA(C,1/10) and AMA(C,1/20) and this could be the 
> happy end of the story. If someone needs to call it Wilders with 
> variable period, it is OK, but there is no evidence to do it.
> Dimitris Tsokakis
> --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <amibroker@xxxx> 
> wrote:
> > Dimitris,
> > 
> > The explanation should be obvious to someone with the deep 
> background
> > in physics and mathematics as you.
> > 
> > The reason is that AMA, EMA, TEMA, DEMA, Wilders
> > are all recursive functions. See
> > http://www.amibroker.com/guide/afl/afl_view.php?name=AMA
> > and
> > http://www.amibroker.com/guide/afl/afl_view.php?name=DEMA
> > 
> > for detailed recursive algorithm.
> > 
> > What does it mean? It means that current value depends
> > on input data array and PREVIOUS value of the indicator.
> > The PREVIOUS value includes the value of "previous-previous" value
> > and so on. 
> > Now if you change the period every bar all these changes (for all 
> previous bars)
> > affect current bar value and that's why variable period AMA is 
> smooth and
> > does not jump from Wilders10-Wilders11.
> > 
> > Best regards,
> > Tomasz Janeczko
> > amibroker.com
> > ----- Original Message ----- 
> > From: "DIMITRIS TSOKAKIS" <TSOKAKIS@xxxx>
> > To: <amibroker@xxxxxxxxxxxxxxx>
> > Sent: Wednesday, October 15, 2003 1:36 PM
> > Subject: [amibroker] Re: MA, DEMA and TEMA can take array 
> parameters, but EMA can't?
> > 
> > 
> > > Tomasz,
> > > How do we understand this equivalence ?
> > > x=10+(Cum(1)%11);  
> > > is equal to 10 every 11 bars.
> > > The
> > > Wp=10;Plot(Wilders(C,Wp),"Wilders",1,1);
> > > and
> > > Plot(AMA(C,1/x),"AMA",7,8);
> > > do not touch every 11 bars...
> > > The same with Wilders(c,20).
> > > See, for example the
> > > 
> > > x=10+(Cum(1)%11);  
> > > Wp10=10;Plot(Wilders(C,Wp10),"Wilders10",1,1);
> > > Wp20=20;Plot(Wilders(C,Wp20),"Wilders20",1,1);
> > > Plot(AMA(C,1/X),"AMA",7,1);
> > > Plot(AMA(C,1/10),"AMA 1/10",4,8);
> > > Plot(AMA(C,1/20),"AMA 1/20",4,8);
> > > 
> > > AMA(C,1/10) is 1-1 equivalent to Wilders(C,10).
> > > On the other side, AMA(C,1/X) touches only by coincidence the 
> Wp10 or 
> > > Wp20.
> > > 
> > > Dimitris Tsokakis
> > > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" 
> <amibroker@xxxx> 
> > > wrote:
> > > > Stephane,
> > > > 
> > > > That's true but Wilders is nothing more nothing less than just 
> AMA
> > > > with 1/n smoothing factor.
> > > > 
> > > > Wilders( array, N )  =>>>  AMA( array, 1 / N )
> > > > 
> > > > 
> > > > Best regards,
> > > > Tomasz Janeczko
> > > > amibroker.com
> > > > ----- Original Message ----- 
> > > > From: "Stephane Carrasset" <nenapacwanfr@xxxx>
> > > > To: <amibroker@xxxxxxxxxxxxxxx>
> > > > Sent: Wednesday, October 15, 2003 1:03 PM
> > > > Subject: [amibroker] Re: MA, DEMA and TEMA can take array 
> > > parameters, but EMA can't?
> > > > 
> > > > 
> > > > > Hi, Dimitri,
> > > > > 
> > > > > Wilders does not accept variable period
> > > > > 
> > > > > Plot(Wilders(C,RSI(3)),"",2,1);
> > > > > 
> > > > > return a bad argument
> > > > > 
> > > > > stepghane
> > > > > 
> > > > > 
> > > > > <nenapacwanfr@xxxx> wrote:
> > > > > > Dimitri,
> > > > > > 
> > > > > > I didn't know that wilders accept variable period...
> > > > > > Thanks
> > > > > > 
> > > > > > Stephane
> > > > > > 
> > > > > > > Dave,
> > > > > > > I have posted in the files section the varPER.txt with 
> the 
> > > EMA, 
> > > > > AMA 
> > > > > > > and WILDERS smoothing relations.
> > > > > > > AMA and WILDERS do accept variable periods, like MA.
> > > > > > > You will also find some RSI applications there.
> > > > > > > Dimitris Tsokakis
> > > > > > > --- In amibroker@xxxxxxxxxxxxxxx, "Dave Merrill" 
> > > <dmerrill@xxxx> 
> > > > > > > wrote:
> > > > > > > > thanks, much appreciated. seems like there's a new 
> version 
> > > just 
> > > > > > out 
> > > > > > > too (:-)
> > > > > > > > 
> > > > > > > > any chance of variable period RSI, CCI, ROC and the 
> rest of 
> > > the 
> > > > > AB
> > > > > > > > indicators I'm forgetting right now? some of these I've 
> > > coded 
> > > > > up 
> > > > > > > myself in
> > > > > > > > AFL, but they're much slower than the built in 
> versions. 
> > > I'd 
> > > > > > > imagine your
> > > > > > > > dll would be pretty close to built in speed, yes?
> > > > > > > > 
> > > > > > > > dave
> > > > > > > >   In Indicators.dll varperiod Indicators are
> > > > > > > >   Stochastic
> > > > > > > >   GraphXSpace=1;
> > > > > > > >   Plot(StochK(9,1),"",colorBlue,1);
> > > > > > > >   Plot(scStoch(9),"",colorGreen,1+8);
> > > > > > > >   Plot(scStoch(RSI(14)),"",colorRed,1);
> > > > > > > > 
> > > > > > > >   Ema
> > > > > > > >   Plot(EMA(C,21),"",colorBlue,1);
> > > > > > > >   Plot(scEMA(C,21),"",colorGreen,1+8);
> > > > > > > >   Plot(scEMA(C,RSI(14)),"",colorRed,1);
> > > > > > > >   Plot(C,"",1,64);
> > > > > > > > 
> > > > > > > >   Linregslope
> > > > > > > >   Plot(LinRegSlope(C,21),"",colorBlue,1);
> > > > > > > >   Plot(scLinRegSlope(C,21),"",colorGreen,1+8);
> > > > > > > >   Plot(scLinRegSlope(C,RSI(14)),"",colorRed,1);
> > > > > > > > 
> > > > > > > >   MFI // just added today
> > > > > > > >   Plot(MFI(21),"",colorBlue,1);
> > > > > > > >   Plot(scMFI(21),"",colorGreen,1+8);
> > > > > > > >   Plot(scMFI(RSI(14)),"",colorRed,1);
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > >   > thanks stephane, I'll take a look. until I do, can 
> you 
> > > tell 
> > > > > > me 
> > > > > > > if
> > > > > > > >   it also
> > > > > > > >   > contains variable period versions of other built in 
> AB 
> > > > > > > indicators?
> > > > > > > >   other
> > > > > > > >   > than allowing variable periods, do they perform the 
> > > same as 
> > > > > > the
> > > > > > > >   native
> > > > > > > >   > versions? if so, that'd be a nice workaround until 
> > > variable 
> > > > > > > periods
> > > > > > > >   are a
> > > > > > > >   > native AB capability for everything.
> > > > > > > >   >
> > > > > > > >   > dave
> > > > > > > >   >   if you want, in indicators.dll there is a Ema 
> with 
> > > > > variable 
> > > > > > > period
> > > > > > > >   >
> > > > > > > >   >   Plot(scEMA(C,RSI(14)),"",colorRed,1);
> > > > > > > >   >   Plot(C,"",1,64);
> > > > > > > >   >
> > > > > > > >   >
> > > > > > > >   >   stephane
> > > > > > > > 
> > > > > > > > 
> > > > > > > >         Yahoo! Groups Sponsor
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > >   Send BUG REPORTS to bugs@xxxx
> > > > > > > >   Send SUGGESTIONS to suggest@xxxx
> > > > > > > >   -----------------------------------------
> > > > > > > >   Post AmiQuote-related messages ONLY to: 
> > > > > amiquote@xxxxxxxxxxxxxxx
> > > > > > > >   (Web page: 
> > > http://groups.yahoo.com/group/amiquote/messages/)
> > > > > > > >   --------------------------------------------
> > > > > > > >   Check group FAQ at:
> > > > > > > > 
> http://groups.yahoo.com/group/amibroker/files/groupfaq.html
> > > > > > > > 
> > > > > > > >   Your use of Yahoo! Groups is subject to the Yahoo! 
> Terms 
> > > of 
> > > > > > > Service.
> > > > > 
> > > > > 
> > > > > 
> > > > > Send BUG REPORTS to bugs@xxxx
> > > > > Send SUGGESTIONS to suggest@xxxx
> > > > > -----------------------------------------
> > > > > Post AmiQuote-related messages ONLY to: 
> amiquote@xxxxxxxxxxxxxxx 
> > > > > (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> > > > > --------------------------------------------
> > > > > Check group FAQ at: 
> > > http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> > > > > 
> > > > > Your use of Yahoo! Groups is subject to 
> > > http://docs.yahoo.com/info/terms/ 
> > > > > 
> > > > > 
> > > > >
> > > 
> > > 
> > > 
> > > Send BUG REPORTS to bugs@xxxx
> > > Send SUGGESTIONS to suggest@xxxx
> > > -----------------------------------------
> > > Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
> > > (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> > > --------------------------------------------
> > > Check group FAQ at: 
> http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> > > 
> > > Your use of Yahoo! Groups is subject to 
> http://docs.yahoo.com/info/terms/ 
> > > 
> > > 
> > >
> 
> 
> 
> Send BUG REPORTS to bugs@xxxxxxxxxxxxx
> Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
> -----------------------------------------
> Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
> (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> --------------------------------------------
> Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> 
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 
> 
> 
> 

------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for your HP, Epson, Canon or Lexmark
Printer at MyInks.com. Free s/h on orders $50 or more to the US & Canada.
http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/mOAaAA/3exGAA/qnsNAA/GHeqlB/TM
---------------------------------------------------------------------~->

Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 

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