
Introducción del indicador
DMI指标又叫动向指标或趋向指标,其全称叫“Directional Movement Index,简称DMI”,
也是由美国技术分析大师威尔斯·威尔德(Wells Wilder)所创造的,是一种中长期股市技术分析(Technical Analysis)方法。
DMI指标是通过分析股票价格在涨跌过程中买卖双方力量均衡点的变化情况,
即多空双方的力量的变化受价格波动的影响而发生由均衡到失衡的循环过程,从而提供对趋势判断依据的一种技术指标。
Recientemente, muchos amigos del círculo cuantitativo me han consultado sobre cómo utilizar el indicador DMI en la plataforma de negociación cuantitativa Inventor. Al principio pensé que era una pregunta sencilla, así que abrí la documentación de la API para buscar esta función indicadora. Descubrí que este indicador no está incluido en la biblioteca de indicadores talibán universal. Busqué rápidamente en Baidu y Zhihu… y después de mucho trabajo duro, encontré algo de información sobre los indicadores. Descubrí que este indicador está compuesto por cuatro indicadores. El algoritmo no es muy complicado, así que simplemente lo escribí de acuerdo con el algoritmo que aparece en el material.
Dirección de ejemplo: https://www.fmz.com/strategy/154050
// 指标函数
function ADX(MDI, PDI, adx_period) {
if(typeof(MDI) == "undefined" || typeof(PDI) == "undefined"){
return false
}
if(MDI.length < 10 || PDI.length < 10){
return false
}
/*
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)
*/
var dx = []
for(var i = 0; i < MDI.length; i++){
if(!MDI[i] || !PDI[i]){
continue
}
var dxValue = Math.abs((PDI[i] - MDI[i])) / (PDI[i] + MDI[i]) * 100
var obj = {
Close : dxValue,
}
dx.push(obj)
}
if(dx.length < adx_period){
return false
}
var adx = talib.SMA(dx, adx_period)
return adx
}
function DMI(records, pdi_period, mdi_period, adxr_period, adx_period) {
var recordsHLC = []
for(var i = 0; i < records.length ; i++){
var bar = {
High : records[i].High,
Low : records[i].Low,
Close : records[i].Close,
}
recordsHLC.push(bar)
}
var m_di = talib.MINUS_DI(recordsHLC, mdi_period)
var p_di = talib.PLUS_DI(recordsHLC, pdi_period)
var adx = ADX(m_di, p_di, adx_period)
// ADXR=(当日的ADX+前n日的ADX)÷2
var n = 0
var adxr = []
for (var j = 0 ; j < adx.length; j++) {
if (typeof(adx[j]) == "number") {
n++
}
if (n >= adxr_period) {
var currAdxr = (adx[j] + adx[j - adxr_period]) / 2
adxr.push(currAdxr)
} else {
adxr.push(NaN)
}
}
return [m_di, p_di, adx, adxr]
}
Con la biblioteca de dibujo lineal cuantitativo de Inventor, es muy fácil dibujar un gráfico y compararlo con el DMI de otros gráficos.


Comparando los valores del indicador en varias Kbars, los valores son básicamente consistentes (con una ligera desviación de redondeo).
Utilice directamente la función DMI (como el método llamado en la función principal en el ejemplo), pase los datos de la línea K y configure los parámetros del indicador, que generalmente son 14. Los datos devueltos por la función son una matriz bidimensional, que representa cuatro líneas.
Entre las cuatro líneas del indicador DMI, DI- y DI+ son indicadores largos y cortos, que reflejan la fuerza de ambos lados, largo y corto. ADX y ADXR son un par de líneas indicadoras que se utilizan juntas. Son indicadores de tendencia que reflejan la tendencia y la dirección del mercado actual.
DI+, cuanto mayor sea el valor del indicador, más fuertes serán los alcistas del mercado actual, y viceversa. DI-, el indicador es opuesto. DI+ y DI- a menudo están entrelazados, y cuanto más cercanos sean los valores, más probable es que el mercado se encuentre en un punto muerto de consolidación. Por el contrario, indica que la tendencia se está fortaleciendo.
Señal
Después de un largo período de caída, si se cumplen las siguientes condiciones en el corto plazo, significa que se ha encontrado el fondo de corto plazo y puede ocurrir un rebote o una reversión de sobreventa.
Después de un aumento a largo plazo, si se cumplen las siguientes condiciones en el corto plazo, significa que se ha encontrado el máximo a corto plazo y puede ocurrir un ajuste o una reversión a corto plazo.
Después de un período de fluctuaciones, las cuatro líneas del indicador DMI se entrelazaron en un nivel bajo y, de repente, apareció una vela positiva larga con un aumento de volumen de más del 5%. La línea DI+ cruza la línea DI-, la línea ADX y la línea ADXR continuamente en dos días, lo que indica que está a punto de formarse una nueva tendencia ascendente. Puedes comprar cuando la línea DI+ cruza la última línea indicadora.