Directional Movement DMI with Cross Alerts
- 指标
- 版本: 1.0
Directional Movement DMI with Cross Alerts 是一款适用于 MetaTrader 5 的 TV 兼容趋向指标(DMI)。它以与 TradingView 内置 "Directional Movement Index" 相同的方式计算 ADX、+DI 和 -DI,并在单独的窗口中以相同的默认颜色绘制:ADX(#F50057)、+DI(#2962FF)和 -DI(#FF6D00)。
DMI 描述近期走势有多强(ADX),以及哪一方的走势更大(+DI 或 -DI)。它是图表分析的辅助工具,不是买入或卖出信号,也不预测价格的走向。
计算方法
- up = high - 前一根 high,down = 前一根 low - low。当 up > down 且 up > 0 时 +DM = up,否则为 0。当 down > up 且 down > 0 时 -DM = down,否则为 0。
- TR = 真实波幅(true range):high - low、|high - 前一根 close| 和 |low - 前一根 close| 中的最大值。
- +DI = 100 x RMA(+DM) / RMA(TR),-DI = 100 x RMA(-DM) / RMA(TR),周期为 DI Length(默认 14)。
- ADX = 100 x RMA(|+DI - -DI| / (+DI + -DI)),周期为 ADX Smoothing(默认 14)。
- RMA 是 Wilder 平滑,与 TradingView 的 ta.rma() 相同:第一个值为简单平均,之后 alpha = 1 / length。
- 数值比较使用与 Pine Script 相同的微小容差(1e-10),因此即使两条线几乎相等,交叉也会出现在与 TradingView 相同的K线上。
我们如何验证
- 我们将 TradingView 自身的价格K线导入 MetaTrader,并将输出与 TradingView 内置 DMI 进行比较。ADX、+DI 和 -DI 在浮点舍入范围内一致(差异约为 1e-12)。
- 在经纪商的图表上,数值会略有不同,因为价格来自不同的数据源。
- Wilder 平滑从已加载的最早一根K线开始。如果您的历史数据起始K线与 TradingView 不同,图表最早的部分可能略有差异;随着计算的K线增多,这种影响会逐渐消失。
显示
- 单独窗口中的三条线。颜色和线宽(1 至 5)可以更改。
- 可选的 ADX 阈值虚线(默认 25,灰色)。TradingView 内置 DMI 没有这条线;这是附加功能。25 只是常用的参考水平,并非规则。
- 数值显示 4 位小数,与 TradingView 相同。
最新K线(重绘)
- 仍在形成中的K线会在每个 tick 重新计算,与 TradingView 完全相同。在该K线收盘前,其数值可能改变。
- K线一旦收盘,其数值不再改变。
警报(默认关闭)
- +DI / -DI 交叉:在刚收盘的K线上,+DI 向上或向下穿过 -DI。
- ADX 阈值:在刚收盘的K线上,ADX 向上穿过阈值(仅限向上穿越)。
- 每根已收盘K线检查一次。指标加载之前已收盘的K线不会触发警报,因此加载指标或重启 MT5 不会产生旧警报。
- 消息示例:"DMI TV EURUSD H1: +DI crossed above -DI (+DI 27.41 / -DI 19.85)"。
- 弹窗、声音和推送通知可以组合使用。推送需要在终端选项中设置您的 MetaQuotes ID。警报文字为英文或日文。
面向 EA 和 iCustom 用户
- 缓冲区 0 = ADX,缓冲区 1 = +DI,缓冲区 2 = -DI。没有数值的K线返回 EMPTY_VALUE。三个数值也显示在数据窗口中。
- 当 EA 或其他指标通过 iCustom 加载它时,它不会发出警报;只计算缓冲区。
使用前请阅读
- ADX 需要 DI Length + ADX Smoothing 根K线的历史数据才会出现(默认设置下为 28 根);+DI 和 -DI 会更早出现。
- 加载后不久,指标列表中的短名称可能会短暂显示为 "probe#...",这是指标在确认自己是否位于图表上。属于正常现象。
- 在策略测试器中不发出警报。
- 不使用 DLL、外部文件或互联网连接。
- 本指标不进行交易,也不承诺任何交易结果。
参数
DMI: ADX Smoothing (14, 1-1000), DI Length (14, 1-1000)
Style: ADX line color (#F50057), +DI line color (#2962FF), -DI line color (#FF6D00), Line width (1, 1-5), Show ADX threshold line (true), ADX threshold (25, 0-100), Threshold line color (#787B86)
Alerts: Alert: +DI / -DI cross (false), Alert: ADX crosses above the threshold (false), Alert by pop-up (true), Alert by sound (false), Alert by push notification (false), Language (Auto = 终端语言, English 或 Japanese)
如果某个参数超出范围,指标不会加载,并会将原因写入 Experts 日志。
支持
欢迎通过 MQL5 消息咨询安装、设置和程序错误(bug)方面的问题。有关行情方向或个别交易的问题不在支持范围内。
本指标是一系列免费 TV 风格工具之一。MT4 版本也作为单独的产品提供。同一作者的其他工具列在我的卖家资料页中。
TradingView 是 TradingView, Inc. 的商标。本产品与 TradingView, Inc. 无关联,也未获得 TradingView, Inc. 的赞助或认可。
