Cálculo y aplicación de los indicadores DMI

El autor:La bondad, Creado: 2019-08-03 14:24:10, Actualizado: 2023-11-08 20:43:17

img

Introducción a los indicadores del DMI

El indicador DMI también se llama el indicador de impulso o el indicador de tendencia, el nombre completo es Directional Movement Index (DMI) . Fue creado por el gurú estadounidense del análisis técnico Wells Wilder, es un método de análisis técnico de mercado a medio y largo plazo.

El indicador DMI es un cambio en el punto de equilibrio de los compradores y vendedores en el proceso de subida y baja de los precios, es decir, el cambio de la fuerza tanto del lado largo como del lado corto se ve afectado por las fluctuaciones de los precios, y se produce el proceso cíclico de equilibrio a desequilibrio, proporcionando así un indicador técnico para juzgar la tendencia.

Cálculo del indicador

Recientemente, un número de amigos en el negocio del comercio cuantitativo me han consultado sobre cómo usar el indicador DMI en la plataforma de comercio cuantitativo FMZ Quant. Pensé que era un problema muy simple, y abrí la documentación de la API para encontrar esta función de indicador. Encontré que este indicador no está disponible en la biblioteca de indicadores versatile talib. después de buscar en Google, encontré algo de información.

Se encuentra que este indicador está compuesto por cuatro indicadores. El algoritmo no es muy complicado. Simplemente siga el algoritmo y estará bien.

Dirección del algoritmo:https://www.fmz.com/strategy/154050

  • Código fuente

// indicator function
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 of the day before the AdX+ AX)÷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]
}
  • Comparando

Utilizando la biblioteca de datos de FMZ Quant, es fácil dibujar un gráfico y comparar DMI con otros gráficos.

img img

Si se comparan los valores del indicador en varias barras de línea k, los valores son básicamente los mismos (desviación ligeramente redondeada).

  • Utilización

Utilice directamente la función DMI (como la llamada en la función principal en el ejemplo), pase los datos de la línea K, establezca 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.

D.I.-: m_di DI+: p_di AdX: adx adXR: adxr

Entre estas cuatro líneas del indicador DMI, DI- y DI+ son indicadores largos y cortos, que reflejan la fortaleza de la posición larga y corta.

AdX y adXR son un par de líneas de indicadores utilizadas juntas, que son indicadores de tendencia, que reflejan la tendencia y la dirección actuales del mercado.

DI+, cuanto mayor sea el valor del indicador, más fuerte será el mercado alcista actual, de lo contrario, más débil será el mercado alcista. DI, lo opuesto a lo de arriba. DI+, DI- se entrelazan a menudo, y cuanto más cerca está el valor entre ellos, el mercado está en un punto muerto.

Señales

  • Señales de precio de fondo

Después de una caída de los precios a largo plazo, si se cumplen las siguientes condiciones a corto plazo, indica que se ha alcanzado el fondo de los precios a corto plazo y puede haber un repunte o una reversión.

La línea DI + que representa la fuerza de compra larga está por debajo de 10, y la línea se vuelve hacia arriba en la posición de sobreventa, y la línea DI está en la posición alta.

La línea AdX que representa la tendencia se encuentra en una posición superior por encima de 65, girando hacia abajo y formando un cruce hacia abajo con la línea adXR.

  • Señal de precio superior

Después de un aumento a largo plazo, si se cumplen las siguientes condiciones a corto plazo, se ha alcanzado el precio alto a corto plazo y pueden producirse ajustes o reversiones a corto plazo.

La línea DI que representa la fuerza de venta a corto está por debajo de 10, y la línea se vuelve hacia arriba en la posición baja, y la línea DI + está en una posición alta.

La línea AdX que representa la tendencia se encuentra en una posición superior por encima de 65, girando hacia abajo y formando un cruce hacia abajo con la línea adXR.

  • Aumento de la tendencia

Después de un período de fluctuaciones en el movimiento del precio, las cuatro líneas del indicador DMI se entrelazan en el precio bajo, y luego de repente hay una larga línea k positiva con un gran volumen que aumenta el precio más del 5%.


Más.