Cálculo y aplicación de los indicadores DMI

El autor:Un sueño pequeño., Creado: 2019-07-03 14:03:53, Actualizado: 2023-10-25 20:00:58

img

Cálculo y aplicación de los indicadores DMI

Resumen de los indicadores

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

    Recientemente, muchos amigos en el círculo de la cuantificación me han consultado sobre cómo usar el indicador DMI en la plataforma de negociación de cuantificación de inventores. Comencé a pensar que era un problema muy simple, y abrí la documentación de la API para buscar esta función de indicador. Descubrí que no había este indicador en el archivo de indicadores de talib omnipotente. Descubrimos que este indicador está compuesto por una combinación de cuatro indicadores, y que el algoritmo no es muy complejo, simplemente escribe el algoritmo de la información a mano.

    El ejemplo de la dirección:https://www.fmz.com/strategy/154050

  • Envía el código fuente del indicador.

    // 指标函数
    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]
    }
    
  • El contraste

    Con una biblioteca de líneas de dibujo cuantificada por el inventor, se puede dibujar fácilmente un gráfico que se puede comparar con el DMI de otros gráficos.

    img

    img

    Comparando los valores de los indicadores en varios Kbar, los valores son básicamente coincidentes (un desvío de un poco de cuatro a cinco).

  • Uso

    Usar directamente la función DMI (por ejemplo, la forma en que se llama la función main en el ejemplo) para transmitir datos de la línea K y establecer parámetros de indicadores, generalmente 14. Los datos que devuelve la función son una matriz bidimensional que representa cuatro líneas respectivamente.

    • D-: m_di,
    • DI+: p_di,
    • ADX: adx,
    • ADXR: adxr,

    En el indicador DMI, estas cuatro líneas, en las que DI-, DI+ son indicadores de espacio múltiple, representan la fuerza de ambos espacios múltiple. El ADX y el ADXR son líneas de indicadores usadas en pareja, indicadores de tendencia que reflejan las tendencias y direcciones actuales del mercado.

    DI +, el valor más alto del indicador, muestra que el mercado actual es más fuerte y, por el contrario, más débil. DI-, el indicador opuesto. DI+, DI- suelen estar entrelazados, y los valores más cercanos representan que el mercado está en un punto muerto general.

    • La señal

      1, el fondo.

      Después de una caída prolongada, si se cumplen las siguientes condiciones en el corto plazo, se indica que se ha detectado un fondo corto y que puede producirse un rebote o un cambio en la caída.

      • 1, la línea DI + que representa la fuerza de múltiples cabezas está por debajo de 10, en la posición de sobrecaída, en la curva ascendente, y la línea de DI está en la posición alta.

      • 2. La línea ADX, que representa la tendencia, se curva hacia abajo y forma un muérdago con la línea ADXR en una posición superior a 65.

      2o, la sonda

      Después de una subida a largo plazo, si en el corto plazo se cumplen las siguientes condiciones, indica que el tope a corto plazo se ha detectado y que puede haber una corrección o reversión a corto plazo.

      • 1, la línea de DI, que representa la fuerza de la cabeza vacía, está por debajo de 10, está en el punto bajo y se dobla hacia arriba, y la línea DI + está en el punto alto.

      • 2. La línea ADX, que representa la tendencia, se curva hacia abajo y forma un muérdago con la línea ADXR en una posición superior a 65.

      3°, el aumento

      Después de un período de fluctuación, las cuatro líneas del indicador DMI se envolvieron en los bajos, y luego apareció de repente una línea k de larga longitud con un aumento de más del 5%. La línea DI+ atravesará la línea DI, la línea ADX y la línea ADXR en dos días consecutivos, lo que representa una nueva tendencia alcista.


Relacionados

Más.

hombre solitarioSe parecen.

el Sr.¿Puedes escribir una estrategia de predicción de tendencias basada en DMI?

Un sueño pequeño.Bien, hay tiempo para escribir un ejemplo.