Uploaded by Michael C

DMI介绍

advertisement
今天要给大家展示一种叫做“方向性运动指标”(Directional Movement Indicator,简
称 DMI)的技术分析法宝。这个指标是由技术分析大师 J. Welles Wilder 在 1978 年提
出的。别小看它哦,它可是和相对强弱指数(RSI)及平均真实波幅(ATR)等其他著
名指标一样,都是 Wilder 的杰作呢!
首先,DMI 是由三个小伙伴组成的,它们分别是平均方向指数(ADX)、正方向指标
(+DI)和负方向指标(-DI)。这三个小伙伴齐心协力,一起帮助交易者识别和衡量
市场趋势的强度和方向。听起来是不是像个神奇的团队呢?
现在,让我们来聊聊这些小伙伴是怎么工作的吧。+DI 和 -DI 是通过分析市场的最高价
和最低价来计算出来的。这俩家伙主要的任务就是告诉你,“嘿,市场是在往上走还是
往下跌?”然后呢,ADX 这个家伙就搭个台阶出场,它不关心市场是涨是跌,它只关心
“这趋势稳不稳?”简单来说,ADX 就像个专心致志的老司机,只关心车速是否平稳。
具体计算方法嘛,首先要找到每个周期的最高价和最低价,然后计算出上升幅度和下
降幅度。如果上升幅度比下降幅度大,那就认为是正方向的移动;反之,则认为是负
方向的移动。接着,我们要用一个叫做平均真实波动范围(ATR)的东西来平滑这些
数据,最后再将它们乘以 100,就得到了+DI 和-DI 了。
要计算 ADX,就更有趣了。它是通过计算+DI 和-DI 的差值的绝对值,然后除以它们的
总和,再乘以 100 得到的。这个值越大,就说明趋势越稳定。Wilder 说,ADX 超过 25
就表示市场有明显的趋势,低于 20 就意味着趋势较弱或不存在。但是呢,每个市场都
有自己的特点,所以这个数值并不是一成不变的。
DMI 的另一个重要用途就是产生交易信号。当+DI 线和-DI 线发生交叉的时候,就可能
是买入或卖出的信号。但记住,这个信号的可靠性还得看 ADX 的值。ADX 值越高,信
号就越可靠。同时,设置合适的止损也是至关重要的。
虽然 DMI 听起来像是万能的,但实际上它也有自己的局限。Wilder 最初是为了货币和
商品市场设计的 DMI,这些市场通常比股票市场波动性更大,趋势也更明显。所以,
当我们在股票市场使用 DMI 时,可能需要进行一些调整。
总而言之,DMI 是一个非常强大的工具,但想要真正掌握它,需要不断地学习和实践。
通过结合历史分析和经验,交易者可以更好地理解和运用 DMI,让它成为他们交易策
略中的一部分。
//@version=5
indicator(title="Directional Movement Index", shorttitle="DMI", format=format.price, precision=4
, timeframe="", timeframe_gaps=true)
lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(14, minval=1, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
plot(adx, color=#F50057, title="ADX")
plot(plus, color=#2962FF, title="+DI")
plot(minus, color=#FF6D00, title="-DI")
这段代码是一个用于计算方向性运动指数(Directional Movement Index,简称 DMI)
的指标。它使用了 TradingView 平台上的 Pine 脚本语言。
首先,在第一行//@version=5 中,声明了脚本所使用的版本号为 5。
接下来,在 indicator()函数中设置了一些参数:
• title="Directional Movement Index" :指标标题为"Directional Movement
Index"。
• shorttitle="DMI":缩写标题为"DMI"。
• format=format.price:价格格式化方式为默认值。
• precision=4:小数点精度为 4 位。
• timeframe="":时间框架为空字符串,表示当前图表所在的时间框架。
• timeframe_gaps=true:允许在图表上显示时间框架之间的空白区域。
然后定义了两个变量:
•
•
lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50):
定义了一个整型输入变量 lensig,默认值为 14,最小值为 1,最大值为 50。该
变量用于控制 ADX 平滑程度。
len = input.int(14, minval=1, title="DI Length"):定义了另一个整型输
入变量 len,默认值也是 14,最小值同样是 1。该变量用于控制 DI 长度。
接下来进行具体计算:
•
首先通过调用 ta.change()函数分别计算了上涨和下跌的价格变化,分别赋值给
变量 up 和 down。
•
•
然后通过判断条件计算了 plusDM 和 minusDM 两个变量。如果 up 大于 down
且大于 0,则将 up 赋值给 plusDM;如果 down 大于 up 且大于 0,则将 down
赋值给 minusDM。否则,plusDM 和 minusDM 都为 na(不可用)。
接着使用 ta.rma()函数计算了 trur、plus 和 minus 三个变量:
§ trur 表示真实范围(True Range),是通过调用 ta.tr 函数计算得到的。
§ plus 表示+DI 指标,是根据 plusDM、len 以及 trur 进行计算得到的。
§ minus 表示-DI 指标,是根据 minusDM、len 以及 trur 进行计算得到的。
最后,在图表上绘制了 ADX、+DI 和-DI 这三条线,并设置它们的颜色。
Download