Below is what I coded from a news letter. Can't remember from which one. /* Hull Moving Average (HMA) Author: Alan Hall web site: www.alanhall.com */ //user paramters prmPeriod = Param("Period", 25, 2, 100, 1); prmColor = ParamColor("Color", colorAqua); prmStyle = ParamStyle("Style", styleLine, maskAll); prmField = ParamField("Fields", 3); //calculations HMA = WMA(2 * WMA(prmField,int(prmPeriod/2)) - WMA(prmField,prmPeriod), int(sqrt(prmPeriod))); // paint the chart Plot(HMA,"HMA",prmColor, prmStyle); John -----Original Message----- From: amibroker@yahoogroups.com [mailto:[EMAIL PROTECTED] Behalf Of Ton Sieverding Sent: Sunday, December 31, 2006 7:15 AM To: amibroker@yahoogroups.com Subject: Re: [amibroker] Hull Moving Averages
Bruce do you know what is causing the difference between "YourHull" and "MyHull" when changing the period ? Interesting to see that both calculations for certain periods give the same result and for others not. I just don't see the difference from a code point of view ... Ton. MA1=WMA(C,Periods); MA2=WMA(C,Periods/2); HMA=WMA(2*MA2-MA1,round(sqrt(Periods))); Plot( HMA, "MyHull", colorBlue,styleLine ); ----- Original Message ----- From: Bruce Hawkins To: amibroker@yahoogroups.com Sent: Sunday, December 31, 2006 4:28 AM Subject: Re: [amibroker] Hull Moving Averages Try this: function HullMaFunction( P, Periods, Delay ) { X = 2 * WMA(P,round(Periods/2)) - WMA(P,Periods); HullMA = WMA(X,round(sqrt(Periods))); HullMA = Ref(HullMA,-Delay); return HullMa; } PlotPriceField = ParamToggle("PriceField","HIDE|SHOW",1); P = ParamField("Price field",-1); Periods = Param("Periods", 15, 2, 200, 1, 10 ); Delay = Param("Delay", 0, 0, 10, 1 ); HullMA = HullMaFunction( P, Periods, Delay ); if( PlotPriceField ) Plot(C,"",1,128); Plot( HullMA, _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style") ); ianjw2 wrote: I've only just become aware of the Hull Moving Average. It seems to be on top of the normal MA lag and manages to maintain nice smoothing at the same time. Has anyone done any AFL code for it and is willing to share? MetaStock Formula period:=Input("Period",1,200,20) ; sqrtperiod:=Input("Square Root of Period",1,20,4); Mov(2*(Mov(C,period/2,W))-Mov(C,period,W),sqrtperiod,W); Above is the Metastock code, but I have no idea how to convert it. ijw -------------------------------------------------------------------------- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.1.409 / Virus Database: 268.15.28/604 - Release Date: 12/26/2006