Технический индикатор Индекс Среднего Направления Движения Уайлдера (Average Directional Movement Index Wilder, ADX Wilder) помогает определить наличие ценовой тенденции. Данный индикатор построен в строгом соответствии с алгоритмом, описанным Уэллсом Уайлдером в книге "Новые концепции технических торговых систем".
Торговые правила по данному индикатору описаны в разделе "Average Directional Movement Index".
Сначала вычисляются положительные (dm_plus) и отрицательные (dm_minus) изменения на каждом баре, а также истинный диапазон tr:
Если High(i) - High(i-1) > 0 dm_plus(i) = High[(i) - High(i-1), иначе dm_plus(i) = 0.
Если Low(i-1) - Low(i) > 0 dm_minus(i) = Low(i-1) - Low(i), иначе dm_minus(i) = 0.
tr(i) = Max(ABS(High(i) - High(i-1)), ABS(High(i) - Close(i-1)), ABS(Low(i) - Close(i-1)))
где:
High(i) — максимальная цена текущего бара;
Low(i) — минимальная цена текущего бара;
High(i-1) — максимальная цена предыдущего бара;
Low(i-1) — минимальная цена предыдущего бара;
Close(i-1) — цена закрытия предыдущего бара;
Max (a, b , c) — максимальное значение из трех чисел: a, b и c;
ABS(X) — абсолютное по модулю значение числа X.
Затем вычисляются сглаженные значения Plus_D(i), Minus_D(i) и ATR():
ATR(i) = SMMA(tr, Period_ADX,i)
Plus_D(i) = SMMA(dm_plus, Period_ADX,i)/ATR(i)*100
Minus_D(i) = SMMA(dm_minus, Period_ADX,i)/ATR(i)*100
где:
SMMA(X, N, i) — сглаженная скользящая средняя по значениям серии X на текущем баре;
Perod_ADX — количество периодов, используемых для расчета.
Теперь вычисляется значение индекса направленного движения DX(i) — DIRECTIONAL MOVEMENT INDEX:
DX(i) = ABS(Plus_D(i) - Minus_D(i))/(Plus_D(i) + Minus_D(i)) * 100
После предварительных вычислений получаем значение индикатора ADX(i) на текущем баре путем сглаживания значений индекса DX:
ADX(i) = SMMA(DX, Perod_ADX, i)