Одной из задач, решаемых при использовании взвешенных средних, является увеличение чувствительности индикатора 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 – является встроенным индикатором, поэтому создавать пользовательский индикатор не имеет смысла.