Расчет ADX в MetaTrader - PullRequest
       26

Расчет ADX в MetaTrader

0 голосов
/ 28 июня 2019

Я пытаюсь выяснить, как рассчитывается ADX в MetaTrader. Я изучил документацию и код ADX.mq4 , но все еще получаю неправильные результаты.

Я экспериментирую с месячными данными, чтобы увидеть расчет по первым барам истории. Использование стандартного 14 периода и закрытой примененной цены.

Индикатор начинает рисовать на графике с 15-го бара, но в окне данных отображаются значения еще со второго бара, что нормально, поскольку он использует экспоненциальный метод.

Предположим, у нас есть следующие данные бара 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. price move
+M = High(i) - High(i - 1)  =>  0.0204
-M = Low(i - 1) - Low(i)    =>  -0.0402

2. directional move and true range
+DM = if +M > -M and +M > 0 then +M else 0  =>  0.0204
-DM = if -M > +M and -M > 0 then -M else 0  =>  0
TR = Max((High - Low), Abs(High - Close(i - 1)), Abs(Low - Close(i - 1)))   =>  0.0392

3. the first exponential value of directional movement index
+DI = +DM / TR * 100        =>  52.0408
-DI = -DM / TR * 100        =>  0

4. the first exponential value of average directional movement index
ADX = Abs(+DI - -DI) / (+DI + -DI) * 100    =>  100

Но терминал отображает следующее:

+DI = 6.9388
-DI = 0
ADX = 13.3333

Что не так с ручными вычислениями?

PS: такие же результаты наблюдаются в MT5

...