1

我试图弄清楚如何在 MetaTrader 中计算 ADX。我研究了文档和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中观察到相同的结果

4

0 回答 0