动向指标(DMI)
一、概述
DMI指标又叫动向指标或趋向指标,其全称叫“Directional Movement Index,简称”DMI”,是由美国技术分析大师威尔斯•威尔德(Welles Wilder)所创造的。
该指标是通过分析证券价格在涨跌过程中买卖双方力量均衡点的变化情况,即多空双方的力量的变化受价格波动的影响而发生由均衡到失衡的循环过程,从而提供对趋势判断依据的一种技术指标。
DMI所包含的内容
1.+DI(相对于真实波动范围,上涨幅度所占比例)
2.-DI(相对于真实波动范围,下跌幅度所占比例)
3.DX(动向指标)
4.ADX(动向指标指数移动平均)
5.ADXR(动向指标指数移动平均的均值)
二、释义
(一)真实波动范围(True Range)
该指标同样是由威尔斯•威尔德(Welles Wilder)所创造,用来测量价格的波动性。计算方法如下,取三者中的最大值。
为了使±DM值具有实际意义,必须表示成为价格范围的函数,也就是与价格范围相关。价格范围就是当日的真实价格范围,定义为下列各值中最大者:
(1)当日最高价与当日最低价之间的差值;
(2)当日最高价与前一日收盘价之间的差值;
(3)当日最低价与前一日收盘价之间的差值。
首先,求出前14个周期中每一期的真实波幅范围TR。将这14期的真实波幅范围TR相加,其和数记为TR[14]。(威尔斯当初推荐使用14个周期作为真实波幅范围以及动向指标的计算周期,因为14个交易日一般被认为是平均意义上的半个循环周期,故此文均采用14周期作为计算周期。)
一旦确定地计算出第一个TR[14]的数值,之后的计算就不需要继续使用前14期的数据。可以利用前一期的TR数据和累计技巧进行计算。
应用累计技巧计算TR的方法如下:取前一期的TR除以14,得到之结果从前一期的TR值中减去,再加上当期的TR,则得到当期的TR值。
当期的TR=(前一期的TR)-(前一期的TR/ 14)+(当期的TR)
附:MultiCharts函数TrueRangeCustom
inputs: PriceValueH( numericsimple ), //最高价 PriceValueL( numericsimple ), //最低价 PriceValueC( numericseries ); //收盘价 variables: var0( 0 ), var1( 0 ); var0 = PriceValueH ; //设定初始变量var0为当期的最高价 var1 = PriceValueL ; //设定初始变量var1为当期的最低价 if PriceValueC[1] > PriceValueH then //如果前一期的收盘价>当期的最高价(上图右) var0 = PriceValueC[1] //则将前一期的收盘价取代当期的最高价 else if PriceValueC[1] < PriceValueL then //如果前期的收盘价<当期的最低价(上图中) var1 = PriceValueC[1] ; //则将前一期的收盘价取代当期的最低价 TrueRangeCustom = var0 - var1 ;
(二)方向运动量(±DM)
方向运动量(±DM)分为上升运动量(+DM)和下降运动量(-DM),计算方法如下,分别取三者中的最大值。
(1)下图的K线组合表示当日的最高价小于或等于前一日的最高价,并且当日的最低价大于或等于前一日的最低价,此时+DM与-DM都记为0。
(2)下图中左侧的K线组合表示上升运动,就是当日的最高价减去前一日的最高价,这一距离记为+DM;右侧的K线组合表示下降运动,就是前一日的最低价减去当日的最低价,这一距离记为-DM。
(3)下图的K线组合表示,当日的最高价大于前一日的最高价,并且当日的最低价小于前一日的最低价,则需要比较+DM与-DM的大小,较大的那个保持,较小的那个归0。
将前14个交易日中的正方向运动量+DM相加,其和数记为+DM[14];将前14个交易日中的负方向运动量-DM相加,其和数记为-DM[14]。
一旦确定地计算出第一个+DM[14]和-DM[14]的数值,之后的计算就不需要继续使用前14期的数据。可以利用前一期的±DM数据和累计技巧进行计算。
应用累计技巧计算+DM的方法如下:取前一期的+DM除以14,得到之结果从前一期之+DM值中减去,再加上当期的+DM,则得到当期的+DM值。
当期的+DM=(前一期的+DM)-(前一期的+DM/ 14)+(当期的+DM)
对于-DM的计算,也采用相同的方法。
当期的 -DM=(前一期的 -DM)-(前一期的 -DM/ 14)+(当期的 -DM)
附:MultiCharts函数DirMovement(部分)
if CurrentBar = 1 then //从第一根K线开始 begin for Value1 = 0 to Len - 1 //开始前14周期的循环语句(参数设置Len=14) begin var0 = 0 ; //设定初始变量var0为+DM=0 var1 = 0 ; //设定初始变量var1为-DM=0 var2 = PriceValueH[Value1] - PriceValueH[ Value1 + 1 ] ; //变量var2为当期的最高价减去前一期的最高价 var3 = PriceValueL[ Value1 + 1 ] - PriceValueL[Value1] ; //变量var3为前一期的最低价减去当期的最低价 condition1 = var2 > var3 and var2 > 0 ; //条件为var2>var3,并且var2>0 if condition1 then //如果上述条件成立 var0 = var2 //那么var2取代var0成为新的+DM else //否则,执行下一步 begin condition1 = var3 > var2 and var3 > 0 ; //条件为var3>var2,并且var3>0 if condition1 then //如果上述条件成立 var1 = var3 ; //那么var3取代var1成为新的-DM end; var4 = var4 + var0 ; //变量var4为前14周期的和数+DM[14] var5 = var5 + var1 ; //变量var5为前14周期的和数-DM[14] var6 = var6 + TrueRangeCustom( PriceValueH, PriceValueL, PriceValueC )[Value1] ; //变量var6为前14周期的真实波幅范围的和数TR[14] end ; end else //第15周期开始 begin var0 = 0 ; var1 = 0 ; var2 = PriceValueH - PriceValueH[1] ; var3 = PriceValueL[1] - PriceValueL ; condition1 = var2 > var3 and var2 > 0 ; if condition1 then var0 = var2 else begin condition1 = var3 > var2 and var3 > 0 ; if condition1 then var1 = var3 ; end; var4 = var4[1] - var4[1] / 14 + var0 ; //(前一期的+DM[14])-(前一期的+DM[14])/14 + (当期的+DM) var5 = var5[1] - var5[1] / 14 + var1 ; //(前一期的-DM[14])-(前一期的-DM[14])/14 + (当期的-DM) var6 = var6[1] - var6[1] / 14 + TrueRangeCustom( PriceValueH, PriceValueL, PriceValueC ) ; //(前一期的TR[14])-(前一期的TR[14])/14 + (当期的TR) end ;
三、计算
(一)+DI与-DI
为了在真实波幅范围和方向运动之间建立相互关系,引入方向指数±DI进行描述。+DI和-DI 分别表示某一个交易日的方向指数。
如果价格上涨,则适用+DI表达式,+DI表示相对于真实波幅范围,价格上涨幅度的百分比。
+DI = 100 × (+DM)/ TR
如果价格下跌,则适用-DI表达式,-DI表示相对于真实波幅范围,价格下跌幅度的百分比。
-DI = 100 × (-DM)/ TR
真实方向运动,是+DM和-DM之差。某种证券价格的方向运动愈强烈,那么+DM和-DM之差也愈大。对每一个发生正方向运动的交易日,+DI都要加上这一方向运动的份量。同时,如果价格连续上涨了14天或者更多,+DI数值很大,-DI数值几乎趋近于零,因此,+DI和-DI之差很大。
相反,如果价格连续14个交易日或者持续更久的下跌,那么每个交易日都有一个-DM值。不断地往-DI中增加份量,同时不断地从+DI中减去份量,因此,+DI和-DI的差值也在不断地增大。
下图为CME黄金主力连续合约(2013/3/5~2013/12/19),其副图中的红线为+DI、绿线为-DI。
附:MultiCharts函数DirMovement(部分)
if var6 > 0 then //如果TR不为0 begin var7 = 100 * var4 / var6 ; //变量var7为+DI,是+DM与TR的百分比 var8 = 100 * var5 / var6 ; //变量var8为-DI,是-DM与TR的百分比 end else begin //如果TR为0 var7 = 0 ; //+DI归0处理 var8 = 0 ; //-DI归0处理 end ;
(二)动向指标
由+DI与-DI之差的绝对值除以+DI与-DI之和得到
DX = |(+DI)-(-DI)| / ((+DI)+(-DI)
DX的数值始终在0至100之间,DX数值愈大,方向运动愈强;DX数值愈小,方向运动愈弱。
假设价格连续上涨了14个交易日或者更长的时间到达顶部,发生反转时,+DI和-DI之差减小,DX值减小;若之后连续下跌长达14个交易日或更久,+DI和-DI之差趋近于0之后又开始增加,DX值又开始增大。不论上升运动还是下降运动,都是一种良好的方向运动。
下图为CME黄金主力连续合约(2013/3/5~2013/12/19),其副图中的黑色虚线为DX。
附:MultiCharts函数DirMovement(部分)
var10 = var7 + var8 ; //变量var10为+DI与-DI之和 if var10 > 0 then //如果变量var10不为0 var11 = 100 * AbsValue( var7 - var8 ) / var10 //变量var11为DX,是+DI与-DI之差的绝对值与var10的百分比 else //如果var10为0 var11 = 0 ; //DX归0处理
为了使这种剧烈的运动平滑地在DX值上反映出来,我们对DX采用指数移动平均进行平滑,求出ADX。
ADX = ( 2 × 当期的DX + 13 × 前一期的ADX ) / 15
ADXR是在表示方向运动的坐标系上用于量度证券价格变化的一个指标,简单地由前13期的ADX值与当期的ADX值相加除以2得到。
ADXR = ( 当期ADX + 前13期ADX ) / 2
因为 ADXR 只是作为衡量方向运动的尺度,它不仅要能反映方向运动,同时,当方向运动改变原有方向时,应以最小的波动表示出来。
下图为CME黄金主力连续合约(2013/3/5~2013/12/19),其副图中的蓝线为ADX,紫线为ADXR。
附:MultiCharts函数DirMovement(部分)
var12 = XAverage( var11, Len ); //变量var12为ADX,是DX的14周期的指数移动平均 var13 = ( var12 + var12[ Len - 1 ] ) * .5 ; //变量var13为ADXR,是当期的ADX与前13期的ADX的平均值
下表中简单列出了DMI指标中的+DI、-DI、DX、ADX、ADXR的计算过程(选取CME黄金主力连续2013/1/16~2013/11/1)
四、交易系统
DMI指标的一般分析方法是根据+DI、-DI、DX、ADX、ADXR以及参考线之间的关系展开,其研判分析方法的组合有很多。
此段中测试示例均选用,中国金融期货交易所的沪深300股指期货主力合约,周期为日线,时间为2010.4.16~2014.6.30,初始资金为100万元,交易手数为1手,滑价为300元、手续费为成交金额的0.3%%。
(一)+DI与-DI相互穿越
当+DI向上穿越-DI时,多头开仓(空头平仓)。
当+DI向下穿越-DI时,空头开仓(多头平仓)。
附:MultiCharts函数DMI(部分)
condition1 = var7 crosses over var8 ; //条件1为+DI向上穿越-DI if condition1 then //如果条件1成立 Buy ( "DI_L" ) next bar at market ; //以市价在下一根K线多头开仓(同时空头平仓) condition2 = var7 crosses under var8 ; //条件2为+DI向下穿越-DI if condition2 then //如果条件2成立 Sell Short ( "DI_S" ) next bar at market ; //以市价在下一根K线空头开仓(同时多头平仓)
此策略自+DI与-DI开始相交那一刻起,就保持有持仓状态,不是多头头寸,就是空头头寸。在此时间段的股指期货日线周期测试中,有一定获利,但最大回撤也较大,交易频率较高,在短周期图标中更为显著,可能会带来更多交易成本。
(二)+DI与-DI相互穿越并结合参考线
当+DI向上穿越-DI时,并且+DI大于25时,多头开仓;当+DI向下穿越-DI时,多头平仓。
当+DI向下穿越-DI时,并且-DI大于25时,空头开仓;当+DI向上穿越-DI时,空头平仓。
附:MultiCharts函数DMI(部分)
condition1 = var7 crosses over var8 and var7 > ADXTrend ; //条件1为+DI向上穿越-DI,并且+DI大于25 if condition1 then //如果条件1成立 Buy ( "LE" ) next bar at market ; //以市价在下一根K线多头开仓 condition2 = var7 crosses under var8 and marketposition = 1 ; //条件2为+DI向下穿越-DI,并且有多头头寸 if condition2 then //如果条件2成立 Sell ( "LX" ) next bar at market ; //以市价在下一根K线多头平仓 condition3 = var7 crosses under var8 and var8 > ADXTrend ; //条件3为+DI向下穿越-DI,并且-DI大于25 if condition3 then //如果条件3成立 SellShort ( "SE" ) next bar at market ; //以市价在下一根K线空头开仓 condition4 = var7 crosses over var8 and marketposition = -1 ; //条件4为+DI向上穿越-DI,并且有空头头寸 if condition4 then //如果条件4成立 Buytocover ( "SX" ) next bar at market ; //以市价在下一根K线空头平仓
此策略增加参考线25过滤后,交易数量明显减少,不过也存在相应问题,例如上图中蓝色圆圈部分,当-DI向上穿越+DI后的节点,-DI并未大于参考线25,故没有触发空头开仓信号,错过之后一轮较大跌幅。
为解决上述问题,可采用如下两种方式进行调整:
(1)参考线25向下调整至20。
(2)将+DI与-DI的相互穿越信号,改为+DI与-DI之间的位置关系。
当+DI大于-DI,并且+DI大于20时,多头开仓;当+DI小于-DI时,多头平仓。
当+DI小于-DI,并且-DI大于20时,空头开仓;当+DI大于-DI时,空头平仓。
附:MultiCharts函数DMI(部分)
condition1 = var7 > var8 and var7 > ADXTrend ; //条件1为+DI大于-DI,并且+DI大于20 if condition1 then //如果条件1成立 Buy ( "LE" ) next bar at market ; //以市价在下一根K线多头开仓 condition2 = var7 < var8 and marketposition = 1 ; //条件2为+DI小于-DI,并且有多头头寸 if condition2 then //如果条件2成立 Sell ( "LX" ) next bar at market ; //以市价在下一根K线多头平仓 condition3 = var7 < var8 and var8 > ADXTrend ; //条件3为+DI小于-DI,并且-DI大于20 if condition3 then //如果条件3成立 SellShort ( "SE" ) next bar at market ; //以市价在下一根K线空头开仓 condition4 = var7 > var8 and marketposition = -1 ; //条件4为+DI大于-DI,并且有空头头寸 if condition4 then //如果条件4成立 Buytocover ( "SX" ) next bar at market ; //以市价在下一根K线空头平仓
比较上述几种交易模型:
DI交叉 |
DI交叉 &
|
DI交叉 &+DI/-DI>20 |
+DI>-DI/ +DI<-DI &+DI/-DI>25 |
+DI>-DI/ +DI<-DI &+DI/-DI>20 |
|
净利: |
322,419.39 |
308,546.08 |
333,525.86 |
313,473.07 |
377,174.29 |
平仓最大亏损: |
-166,464.57 |
-142,335.31 |
-166,464.57 |
-156,504.04 |
-166,464.57 |
盈利因子: |
1.47 |
1.93 |
1.50 |
1.55 |
1.55 |
胜率(%): |
38.46 |
43.75 |
40.00 |
40.00 |
40.26 |
交易总数量: |
78 |
32 |
75 |
55 |
77 |
夏普比率: |
0.1805 |
0.1987 |
0.1850 |
0.1783 |
0.2044 |
(三)+DI与-DI相互穿越并结合ADX(ADXR)所处位置
当+DI向上穿越-DI时,并且ADX大于25时,多头开仓;当+DI向下穿越-DI时,多头平仓。
当+DI向下穿越-DI时,并且ADX大于25时,空头开仓;当+DI向上穿越-DI时,空头平仓。
附:MultiCharts函数DMI(部分)
condition1 = var7 crosses over var8 and var12 > ADXTrend ; //条件1为+DI向上穿越-DI,并且ADX大于25 if condition1 then //如果条件1成立 Buy ( "LE" ) next bar at market ; //以市价在下一根K线多头开仓 condition2 = var7 crosses under var8 and marketposition = 1 ; //条件2为+DI向下穿越-DI,并且有多头头寸 if condition2 then //如果条件2成立 Sell ( "LX" ) next bar at market ; //以市价在下一根K线多头平仓 condition3 = var7 crosses under var8 and var12 > ADXTrend ; //条件3为+DI向下穿越-DI,并且ADX大于25 if condition3 then //如果条件3成立 SellShort ( "SE" ) next bar at market ; //以市价在下一根K线空头开仓 condition4 = var7 crosses over var8 and marketposition = -1 ; //条件4为+DI向上穿越-DI,并且有空头头寸 if condition4 then //如果条件4成立 Buytocover ( "SX" ) next bar at market ; //以市价在下一根K线空头平仓
使用ADX大于参考线25进行过滤后,交易次数显著下降,并且伴随着较大亏损。比较上述交易模型及其几种衍生模型:
DI交叉&
|
DI交叉&
|
DI交叉&
|
DI交叉&
|
|
净利: |
-76,073.57 |
-18,784.91 |
-12,664.75 |
209,213.72 |
平仓最大亏损: |
-116,694.48 |
-121,751.01 |
-118,887.21 |
-116,446.95 |
盈利因子: |
-0.65 |
-0.93 |
-0.95 |
1.52 |
胜率(%): |
18.18 |
35.00 |
38.89 |
37.84 |
交易总数量: |
11 |
20 |
18 |
37 |
夏普比率: |
-0.0651 |
-0.0048 |
0.0012 |
0.1435 |
由上图中的橙色圆圈可见,当+DI向下穿越-DI时,ADX在25之下,故没有触发空头开仓信号,错过之后一轮较大跌幅。
为解决上述问题,将+DI与-DI的相互穿越信号,改为+DI、-DI之间的位置关系。
当+DI大于-DI,并且ADXR大于20时,多头开仓;当+DI小于-DI时,多头平仓。
当+DI小于-DI,并且ADXR大于20时,空头开仓;当+DI大于-DI时,空头平仓。
附:MultiCharts函数DMI(部分)
condition1 = var7 > var8 and var13 > ADXTrend ; //条件1为+DI大于-DI,并且ADXR大于20 if condition1 then //如果条件1成立 Buy ( "LE" ) next bar at market ; //以市价在下一根K线多头开仓 condition2 = var7 < var8 and marketposition = 1 ; //条件2为+DI小于-DI,并且有多头头寸 if condition2 then //如果条件2成立 Sell ( "LX" ) next bar at market ; //以市价在下一根K线多头平仓 condition3 = var7 < var8 and var13 > ADXTrend ; //条件3为+DI小于-DI,并且ADXR大于20 if condition3 then //如果条件3成立 SellShort ( "SE" ) next bar at market ; //以市价在下一根K线空头开仓 condition4 = var7 > var8 and marketposition = -1 ; //条件4为+DI大于-DI,并且有空头头寸 if condition4 then //如果条件4成立 Buytocover ( "SX" ) next bar at market ; //以市价在下一根K线空头平仓
比较上述交易模型及其几种衍生模型:
+DI>-DI /+DI<-DI & ADX>25 |
+DI>-DI /+DI<-DI & ADXR>25 |
+DI>-DI /+DI<-DI & ADX>20 |
+DI>-DI /+DI<-DI & ADXR>20 |
|
净利: |
-46,044.07 |
3,306.01 |
198,158.49 |
340,297.88 |
平仓最大亏损: |
-144,363.68 |
-246,839.66 |
-126,422.57 |
-129,068.39 |
盈利因子: |
-0.89 |
1.01 |
1.47 |
1.72 |
胜率(%): |
32.14 |
37.14 |
46.15 |
41.67 |
交易总数量: |
28 |
35 |
39 |
48 |
夏普比率: |
-0.0082 |
0.0177 |
0.1317 |
0.1963 |
(四)+DI 、-DI与ADX(ADXR)三者之间的位置
当+DI大于-DI,并且+DI大于ADXR时,多头开仓;当+DI小于-DI时,多头平仓。
当+DI小于-DI,并且-DI大于ADXR时,空头开仓;当+DI大于-DI时,空头平仓。
附:MultiCharts函数DMI(部分)
condition1 = var7 > var8 and var7 > var13 ; //条件1为+DI大于-DI,并且+DI大于ADXR if condition1 then //如果条件1成立 Buy ( "LE" ) next bar at market ; //以市价在下一根K线多头开仓 condition2 = var7 < var8 and marketposition = 1 ; //条件2为+DI小于-DI,并且有多头头寸 if condition2 then //如果条件2成立 Sell ( "LX" ) next bar at market ; //以市价在下一根K线多头平仓 condition3 = var7 < var8 and var8 > var13 ; //条件3为+DI小于-DI,并且-DI大于ADXR if condition3 then //如果条件3成立 SellShort ( "SE" ) next bar at market ; //以市价在下一根K线空头开仓 condition4 = var7 > var8 and marketposition = -1 ; //条件4为+DI大于-DI,并且有空头头寸 if condition4 then //如果条件4成立 Buytocover ( "SX" ) next bar at market ; //以市价在下一根K线空头平仓
比较上述交易模型及其几种衍生模型:
DI交叉& +DI /-DI>ADX |
DI交叉 & +DI /-DI>ADXR |
+DI>-DI /+DI<-DI &+DI /-DI>ADX |
+DI>-DI /+DI<-DI &+DI /-DI>ADXR |
|
净利: |
303,114.52 |
379,373.69 |
298,023.53 |
395,856.68 |
平仓最大亏损: |
-156,424.57 |
-114,092.70 |
-149,406.99 |
-120,739.76 |
盈利因子: |
1.55 |
1.86 |
1.43 |
1.70 |
胜率(%): |
40.00 |
40.00 |
39.47 |
40.00 |
交易总数量: |
70 |
55 |
76 |
65 |
夏普比率: |
0.1817 |
0.2268 |
0.1683 |
0.2152 |
(五)+DI与-DI相互穿越并结合ADX(ADXR)所处位置及回落平仓信号
当+DI向上穿越-DI时,并且+DI大于ADX,多头开仓;当+DI向下穿越-DI时,或ADX向下穿越50时,多头平仓。
当+DI向下穿越-DI时,并且-DI大于ADX,空头开仓;当+DI向上穿越-DI时,或ADX向下穿越50时,空头平仓。
附:MultiCharts函数DMI(部分)
condition1 = var7 crosses over var8 and var7 > var12 ; //条件1为+DI向上穿越-DI,并且+DI大于ADX if condition1 then //如果条件1成立 Buy ( "LE" ) next bar at market ; //以市价在下一根K线多头开仓 if marketposition = 1 then begin //如果有多头头寸 if var7 crosses under var8 or var12 cross under ADXTrend2 then //如果+DI向下穿越-DI,或者ADX向下穿越50 Sell ( "LX" ) next bar at market ; //以市价在下一根K线多头平仓 end; condition2 = var7 crosses under var8 and var8 > var12 ; //条件2为+DI向下穿越-DI,并且-DI大于ADX if condition2 then //如果条件2成立 SellShort ( "SE" ) next bar at market ; //以市价在下一根K线空头开仓 if marketposition = -1 then begin //如果有空头头寸 if var7 crosses over var8 or var12 cross under ADXTrend2 then //如果+DI向上穿越-DI,或者ADX向下穿越50 Buytocover ( "SX" ) next bar at market ; //以市价在下一根K线空头平仓 end;
由上述几列图中的粉色圆圈可见,当ADX(ADXR)处于高位回落状态,原先趋势可能告一段落,此时+DI与-DI相互穿越,触发开平仓信号,造成震荡走势中的频繁亏损。
为解决上述问题,可将ADX(ADXR)自高位回落至某一参考线之后(如上图橙色圆圈所示),触发平仓信号,相当于浮动止盈。
比较上述交易模型及其几种衍生模型:
DI交叉&+DI / -DI>ADX;ADX下穿50 |
DI交叉&+DI / -DI>ADX;ADXR下穿50 |
DI交叉&+DI / -DI>ADXR;ADXR下穿50 |
DI交叉&+DI / -DI>ADXR;ADX下穿50 |
|
净利: |
471,655.46 |
303,114.52 |
403,912.95 |
544,554.72 |
平仓最大亏损: |
-156,424.57 |
-156,424.57 |
-114,092.70 |
-114,092.70 |
盈利因子: |
1.85 |
1.55 |
1.91 |
2.23 |
胜率(%): |
40.00 |
40.00 |
40.00 |
40.00 |
交易总数量: |
70 |
70 |
55 |
55 |
夏普比率: |
0.2736 |
0.1817 |
0.2405 |
0.3248 |
上述系列策略的总体收益、最大回撤、盈亏比、胜率、交易数量等指标,均好于之前策略。但也会有上图中灰色圆圈中所示,未满足指令触发条件,错过之后一轮较大涨幅。
小结,由上述多个简单量化策略可见,单个策略很难在收益、回撤、交易频率及追踪每一段行情上兼顾。
DMI包括了几个技术指标,这些技术指标都可以单独运用于价格的预测。但是,DMI也可以和别的技术指标结合使用,因为那样一来,推测的结果会更加准确。与DMI结合使用得最多的技术指标是RSI。RSI和DMI都是描述多空双方力量对比的技术指标。
博主辛苦,谢谢分享!有空来坐坐!
Pingback: 抛物转向指标(SAR) | 曙光的召唤
Pingback: Gregory Smith
Thank you