// Downloaded From https://www.WiseStockTrader.com
"Arnaud Legoux Moving Average";
/*________________________________________________________________________________________________
AFL code by hiscores. Originally posted here http://finance.groups.yahoo.com/grou...message/154257

Minor mod by rmike to Modify the AFL in conformance with NinjaTrader & Metatrader
releases by the original developer. 

Release Date - 09 Nov 10

AFL Usage - Moving Average. Further information Can be found at http://www.arnaudlegoux.com/
________________________________________________________________________________________________*/

_SECTION_BEGIN("ALMA");
p = ParamField("Price Field");
windowSize = Param("Window Size", 9, 5, 201, 2);
sigma = Param("Sigma", 6, 1, 20);
Offset = Param("Offset", 0.85, 0.05, 1.0, 0.05);

m = floor(Offset * (windowSize - 1));
s = windowSize / sigma;

w = 0;
wSum = 0;

for(i = 1; i < windowSize; i++)
{
     w[i] = exp(-((i-m)*(i-m))/(2*s*s));
     wSum += w[i];
}

for(i = 1; i < windowSize; i++)
{
     w[i] = w[i] / wSum;
}

alma = Null;

for(j = 1; j < BarCount; j++)
{
     alSum = 0;

     if(j < windowSize)
     {
         alma[j] = Null;
     }
     else
     {
         for(i = 1; i < windowSize; i++)
         {
             alSum += p[j - (windowSize - 1 - i)] * w[i];
         }

         alma[j] = alSum;
     }
}

Plot(alma, "ALMA("+windowSize+","+sigma+","+Offset+")", ParamColor("ALMA Color", colorRed), ParamStyle("ALMA Style", styleLine|styleThick|styleNoLabel), maskDefault);  
_SECTION_END();