Some code to show how small the differences are comparing GMA to MA, as
compared to MA vs EMA.
Title = EncodeColor(4)+ _DEFAULT_NAME()+"; "+EncodeColor(1) +
StrFormat("{{NAME}} - {{INTERVAL}}; {{DATE}}; O=%g, H=%g, L=%g, C=%g
(%.1f%%)
{{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) );
Period = Param("Period",1,1,1000,1);
lnGMA = (1/Period)*Sum(ln(C),Period);
Plot(C,"C",1,64);
Plot(exp(lnGMA),"GMA-C("+WriteVal(Period,1.0)+")",1,5);
Plot(MA(C,Period),"MA-C("+WriteVal(Period,1.0)+")",5,5);
Plot(EMA(C,Period),"EMA-C("+WriteVal(Period,1.0)+")",4,5);
From: [email protected] [mailto:[email protected]] On Behalf
Of Joris Schuller
Sent: Monday, April 26, 2010 4:22 PM
To: [email protected]
Subject: RE: [amibroker] Geometric average
I sent this as a response on Jan 2009 (Message #133785). Look at the
derivation and compare with your formula. I looked at your formula below and
they look identical.
Geometric Moving Average (GMA): the 'n'th root product of 'n' numbers, For
example,( Return1* Return2 *.* Return n)**(1/N). Value Line used and
probably still uses a geometric MA to compute returns.
So for example:
10,100,100; GMA=(10*100**1000)**(1/3) =100.
2,4,8,16; (2*4*8*16)**(1/4) = 5.657
In AFL:
/*
Formula Derivation
C1 = Ref(C,-1);C2 = Ref(C,-2);C3 = Ref(C,-3);Cn = Ref(C,-n);
GMA = Nth root of:(C*C1*C2*C3*C4*...*C(n-1))
lnGMA = (1/N)(ln(C)+ln(C1)+ln(C2)+ln(C3)+...+ln(Cn-1)) =(1/N)*Sum(ln(C),N)
GMA = exp(lnGMA);
*/
/*
//Number examples
Period = Param("Period",1,1,100,1);
//Numbers: 10,100,1000; period = 3;
lnGMA = (1/period)*(ln(10)+ ln(100)+ln(1000));
//Plot(exp(lnGMA ),"GMA",1,5);
//Numbers: 2,4,8,16; period = 4;
lnGMA = (1/period)*(ln(2)+ ln(4)+ln(8)+ln(16));
Plot(exp(lnGMA ),"GMA",1,5);
*/
//In AFL language
Period = Param("Period",1,1,100,1);
lnGMA = (1/Period)*Sum(ln(C),Period);
Plot(exp(lnGMA),"GMA",1,5);
From: [email protected] [mailto:[email protected]] On Behalf
Of droskill
Sent: Monday, April 26, 2010 2:24 PM
To: [email protected]
Subject: [amibroker] Geometric average
Anyone have any AFL code for calculating a geometric average of a data set?
I'm trying to duplicate, in AB, the following:
http://www.investopedia.com/ask/answers/06/geometricmean.asp
I found some code in the group, but it looks a bit funny to me:
Period = Param("Period",1,1,100,1);
lnGMA = (1/Period)*Sum(ln(C),Period);
Plot(exp(lnGMA),"GMA",1,5);
Or, put more simply:
GMA = exp((1/Period)*Sum(ln(C),Period));
Does that look right to anyone? I'm just find it hard to verify the numbers
inside AB....
Any help appreciated!