Cálculo e aplicação dos indicadores DMI

Autora:Bem-estar, Criado: 2019-08-03 14:24:10, Atualizado: 2023-11-08 20:43:17

img

Introdução aos indicadores DMI

O indicador DMI também é chamado de indicador de momento ou indicador de tendência, o nome completo é Directional Movement Index (DMI) . Foi criado pelo guru americano de análise técnica Wells Wilder, é um método de análise técnica de mercado de médio e longo prazo.

O indicador DMI é uma mudança no ponto de equilíbrio dos compradores e vendedores no processo de subida e queda dos preços, isto é, a mudança da força tanto do lado longo como do lado curto é afetada pelas flutuações de preços, e ocorre o processo cíclico de equilíbrio para desequilíbrio, fornecendo assim um indicador técnico para julgar a tendência.

Cálculo do indicador

Recentemente, vários amigos no negócio de negociação quantitativa me consultaram sobre como usar o indicador DMI na plataforma de negociação quantitativa FMZ Quant. Eu pensei que era um problema muito simples e abri a documentação da API para encontrar essa função de indicador. Descobri que esse indicador não está disponível na biblioteca de indicadores versatile talib. depois de pesquisar no Google, encontrei algumas informações.

O algoritmo não é muito complicado, basta seguir o algoritmo e tudo ficará bem.

endereço do algoritmo:https://www.fmz.com/strategy/154050

  • Código de origem

// 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

Usando a biblioteca de dados do FMZ Quant, é fácil desenhar um gráfico e comparar o DMI com outros gráficos.

img img

Comparando os valores do indicador em várias barras de linha k, os valores são basicamente os mesmos (desvio ligeiramente arredondado).

  • Utilização

Usar diretamente a função DMI (como a forma chamada na função principal no exemplo), passar os dados da linha K, definir os parâmetros do indicador, que geralmente são 14.

Os dados retornados pela função são uma matriz bidimensional representando quatro linhas.

DI-: m_di DI+: p_di AdX: adx adXR: adxr

Entre estas quatro linhas do indicador DMI, DI- e DI+ são indicadores longos e curtos, refletindo a força da posição longa e curta.

O AdX e o adXR são um par de linhas de indicadores usadas em conjunto, que são indicadores de tendência, refletindo a tendência e a direção atuais do mercado.

DI+, quanto maior o valor do indicador, mais forte é o mercado de alta atual, caso contrário, mais fraco é o mercado de baixa. DI, o oposto do acima. O DI+, o DI- são muitas vezes entrelaçados, e quanto mais próximo o valor entre eles, o mercado está em um impasse.

Sinalização

  • Sinais de preço de fundo

Após uma queda de preços a longo prazo, se as seguintes condições estiverem preenchidas a curto prazo, indica que o fundo de preços a curto prazo foi atingido e que pode haver uma recuperação ou reversão.

A linha DI+ que representa a força de compra longa está abaixo de 10, e a linha é virada para cima na posição de sobrevenda, e a linha DI está na posição alta.

A linha AdX que representa a tendência está numa posição superior acima de 65, virando para baixo e formando uma cruz descendente com a linha adXR.

  • Sinal de preço superior

Após um aumento a longo prazo, se as seguintes condições forem satisfeitas a curto prazo, o preço elevado a curto prazo foi atingido e podem ocorrer ajustamentos ou reversões a curto prazo.

A linha DI que representa a força de venda a curto prazo está abaixo de 10, e a linha é virada para cima na posição baixa, e a linha DI+ está em uma posição alta.

A linha AdX que representa a tendência está numa posição superior acima de 65, virando para baixo e formando uma cruz descendente com a linha adXR.

  • Aumento da tendência

Após um período de flutuações no movimento do preço, as quatro linhas do indicador DMI são entrelaçadas no preço baixo, e então de repente há uma longa linha k positiva com grande volume aumentando o preço em mais de 5%.


Mais.