Расчет ADX

 

Всем доброго дня и ночи!

Пытаюсь разобраться как MT4 рассчитывает индикатор ADX. Перелопатил кучу статей с описанием расчета, читал и скудное описание в доке самой платформы, но что-то никак не сходится.

Экспериментирую на месячных данных, чтобы видеть расчет от первого бара истории. Использую стандартный период 14 и цену Close.
На графике индикатор начинает рисоваться от 15-го бара, но если включить Окно Данных, то там значения показываются уже со второго бара.
Из документации MT5 понял, что применяется экспоненциальное сглаживание, что собственно и объясняется наличие значений со второго бара.

Допустим значения OHLC первых двух баров следующие:

2002.06.01,00:00,0.93240,0.99140,0.93240,0.99100
2002.07.01,00:00,0.99100,1.01180,0.97260,0.97730

Тогда расчет первого значения (со второго бара) должен быть таким:

1. изменение цены
+M = High(i) - High(i - 1) => 0.0204
-M = Low(i - 1) - Low(i) => -0.0402

2. направленное движения
+DM = если +M > -M и +M > 0, то +M, иначе 0 => 0.0204
-DM = если -M > +M и -M > 0, то -M, иначе 0 => 0
TR = Max((High - Low), Abs(High - Close(i - 1)), Abs(Low - Close(i - 1))) => 0.0392

3. первое экспоненциальное значение индекса направленного движения
+DI = +DM / TR * 100 => 52.0408
-DI = -DM / TR * 100 => 0

4. первое экспоненциальное значение усредненного индекса направленного движения
ADX = Abs(+DI - -DI) / (+DI + -DI) * 100 => 100

В терминале же в окне данных выдает:
+DI = 6.9388
-DI = 0
ADX = 13.3333

Что тут не так?

 
Yauhen:

Всем доброго дня и ночи!

Пытаюсь разобраться как MT4 рассчитывает индикатор ADX. Перелопатил кучу статей с описанием расчета, читал и скудное описание в доке самой платформы, но что-то никак не сходится.

Экспериментирую на месячных данных, чтобы видеть расчет от первого бара истории. Использую стандартный период 14 и цену Close.
На графике индикатор начинает рисоваться от 15-го бара, но если включить Окно Данных, то там значения показываются уже со второго бара.
Из документации MT5 понял, что применяется экспоненциальное сглаживание, что собственно и объясняется наличие значений со второго бара.

Допустим значения OHLC первых двух баров следующие:

2002.06.01,00:00,0.93240,0.99140,0.93240,0.99100
2002.07.01,00:00,0.99100,1.01180,0.97260,0.97730

Тогда расчет первого значения (со второго бара) должен быть таким:

1. изменение цены
+M = High(i) - High(i - 1) => 0.0204
-M = Low(i - 1) - Low(i) => -0.0402

2. направленное движения
+DM = если +M > -M и +M > 0, то +M, иначе 0 => 0.0204
-DM = если -M > +M и -M > 0, то -M, иначе 0 => 0
TR = Max((High - Low), Abs(High - Close(i - 1)), Abs(Low - Close(i - 1))) => 0.0392

3. первое экспоненциальное значение индекса направленного движения
+DI = +DM / TR * 100 => 52.0408
-DI = -DM / TR * 100 => 0

4. первое экспоненциальное значение усредненного индекса направленного движения
ADX = Abs(+DI - -DI) / (+DI + -DI) * 100 => 100

В терминале же в окне данных выдает:
+DI = 6.9388
-DI = 0
ADX = 13.3333

Что тут не так?

индикатор ADX

 
Alekseu Fedotov:

индикатор ADX

Алексей, спасибо за ссылку. Но я ее изучил уже вдоль и поперек. Алгоритм моего ручного расчета полностью совпадает с описанием, но почему результат не сходится то?