Одной из задач, решаемых при использовании взвешенных средних, является увеличение чувствительности индикатора WMA к изменению последнего значения цены (при сохранении свойства сглаживания). Для этого в индикаторе придается большие веса последним значениям цены.
Второй задачей WMA является избавление от свойства «собака лает дважды», которое проявляется в резком изменении значения индикатора при выходе из окна расчета существенно отличающейся цены от среднего значения. Для этого обычно используется постепенное уменьшение веса к началу окна.
Пример:
Исходный текст:
Код: Выделить всё
function Initialize()
{
  IndicatorName = "WMA";   
  PriceStudy = true;   
  AddInput("Input", Inputs.Price);   
  AddSeries("WMA", DrawAs.Line, Color.Red);   
  AddParameter("Period", 20, 1);   
}
function Evaluate()
{
  // AlfaDirect. 2014. OX
  // ВЗВЕШЕННАЯ СКОЛЬЗЯЩАЯ СРЕДНЯЯ  (WMA – MOVING AVERAGE WEIGHTED)
  if ( CurrentIndex >= Period ) 
  {
    var cWMA = 0.0;
    var cZn = 0.0; 
    for (var i=0; i<Period; i++ )
    {     
       cWMA = cWMA + Input[-i]*(Period-i);
       cZn = cZn + (i+1);
    } 
    WMA = cWMA/cZn;
  }
  else
    WMA = Input[0];
}
Индикатор WMA – является встроенным индикатором, поэтому создавать пользовательский индикатор не имеет смысла.