2.9 DMI(动向指标)

 

DMI 指标又叫动向指标或趋向指标,其全称叫“Directional Movement Index,简称 DMI”,也是由美国技术分析大师威尔斯·威尔德(Wells Wilder)所创造的,是一种中长期股市技术分析(Technical Analysis)方法。
DMI 指标是通过分析股票价格在涨跌过程中买卖双方力量均衡点的变化情况,即多空双方的力量的变化受价格波动的影响而发生由均衡到失衡的循环过程,从而提供对趋势判断依据的一种技术指标。

计算方法:
DMI 的计算方法比较复杂,需要计算 DI1(上升指标),DI2(下降指标),ADX(平均动向指数)和 ADXR 四个指标,计算过程中还要涉及到一些中间指标比如 TR,DMP,DMM 等
以日 DMI 为例,计算过程如下:
1. 计算每日真实波幅 TR,并对 N1 日的真实波幅求和,记作 TR_sum
真实波幅等于当日股价振幅、最高与昨收差价、最低与昨收差价中的最大值。
2. 计算上升动向值 DMP 和下降动向值 DMM
上升动向值 DMP,其数值等于当日的最高价减去前一日的最高价,如果 <=0 则 DMP=0。
下降动向值 DMM,其数值等于前一日的最低价减去当日的最低价,如果 <=0 则 DMM=0
再比较 DMP 和 DMM,较大的那个数字保持,较小的数字归 0
3. 分别对 N1 日 DMP 和 DMM 求和,记作 DMP_sum 和 DMM_sum
4. 上升指标 DI1=DMP_sum*100/TR_sum
5. 下降指标 DI2=DMM_sum*100/TR_sum
6. 计算 N2 日内的平均动向指数 ADX=MA(DX,N2)
其中,动向指数 DX 等于 DI1 和 DI2 间的差的绝对值除以总和的百分比
7. 计算评估数值 ADXR=(当日的 ADX+ 前 N2 日的 ADX)/2

以代码 600000 的股票数据为例,计算 DMI(14,6) 指标

A
1 14
2 6
3 = T(“D://600000.csv”).select( 收盘价 >0).sort(日期)
4 =A3.new(日期,max(( 最高价 - 最低价),abs(最高价 - 前收盘),abs(最低价 - 前收盘)):TR, 最高价 - 最高价 [-1]:HD, 最低价 [-1]- 最低价:LD)
5 =A4.derive(sum(TR[1-A1:0]):TR_sum, if(HD>0 && HD>LD,HD,0):DMP, if(LD>0 && LD>HD,LD,0):DMM, sum(DMP[1-A1:0]):DMP_sum, sum(DMM[1-A1:0]):DMM_sum)
6 =A5.derive(DMP_sum*100/TR_sum:DI1, DMM_sum*100/TR_sum:DI2, abs(DI1-DI2)/(DI1+DI2)*100:DX, avg(DX[1-A2:0]):ADX, (ADX+ADX[-A2])/2:ADXR)
7 =A6.new(日期,DI1,DI2,ADX,ADXR)

A3 导入数据,取收盘价大于 0 的数据,并按日期排序
A4 计算真实波幅 TR,当日最高价和昨日最高价之差 HD,昨日最低价和当日最低价之差 LD
A5 计算 N1 日的 TR 之和 TR_sum,上升动向值 DMP 和下降动向值 DMM 并分别求和
A6 带入对应公式计算 DI1,DI2,DX,ADX 和 ADXR
A7 去掉中间字段,生成新的序表


imagepng