我试图弄清楚如何在 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中观察到相同的结果