Cálculo e aplicação de indicadores de DMI

Autora:Sonhos pequenos, Criado: 2019-07-03 14:03:53, Atualizado: 2023-10-25 20:00:58

img

Cálculo e aplicação de indicadores de DMI

Indicadores de desempenho

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

    Recentemente, muitos amigos do círculo de quantificação me consultaram sobre como usar o indicador DMI na plataforma de negociação de quantificação de inventores. Comecei a pensar que era uma questão muito simples, abri a documentação da API para pesquisar a função do indicador. Descobri que o indicador não estava no banco de dados da omnipotente talib. Descobrimos que este indicador é composto por uma combinação de quatro indicadores, e que o algoritmo não é muito complexo, basta começar a escrever o algoritmo de acordo com os dados.

    Adresse do exemplo:https://www.fmz.com/strategy/154050

  • Postar o código fonte do 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]
    }
    
  • Contraste

    Com um catálogo de linhas de desenho quantificado pelo inventor, é muito fácil desenhar gráficos que podem ser comparados com os DMI de outros gráficos.

    img

    img

    Comparando os valores indicadores em vários Kbar, os valores são basicamente iguais (um ligeiro desvio de quatro para cinco).

  • Utilização

    Usando diretamente a função DMI (por exemplo, como é chamada na função main no exemplo), para transmitir dados da linha K, configure os parâmetros do indicador, geralmente 14. O dado que a função retorna é um conjunto de duas dimensões representando quatro linhas.

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

    No indicador DMI, as quatro linhas, em que DI-, DI+ são indicadores de espaços múltiplos, representam a força de ambos os espaços. O ADX e o ADXR são linhas de indicadores usadas em conjunto, indicadores de tendência que refletem as tendências e direções do mercado atual.

    O DI+ é um indicador que mostra que o mercado atual é mais forte e, ao contrário, mais fraco. DI-, indicador inverso. DI + DI - muitas vezes estão interligados, e os valores mais próximos entre eles representam um mercado em um impasse geral; o contrário indica um aumento da tendência.

    • Sinalização

      1o, encontrar o fundo

      Após um longo período de queda, se o curto prazo atender às seguintes condições, o fundo curto prazo foi identificado e um rebote ou reversão pode ocorrer.

      • 1, a linha DI +, que representa a força multi-cabeça, está abaixo de 10, na posição de superação da queda, na curva para cima, e a linha DI é alta.

      • 2, a linha ADX, que representa a tendência, está em uma posição superior a 65, curvando para baixo e formando um forco morto com a linha ADXR.

      2o, a sonda

      Após uma alta de longo prazo, se o curto prazo satisfazer as seguintes condições, indica que o topo de curto prazo foi identificado e que um ajuste ou reversão de curto prazo pode ocorrer.

      • 1, a linha DI, que representa a força da cabeça vazia, está abaixo de 10, em baixa e curva para cima, e a linha DI + está em alta.

      • 2, a linha ADX, que representa a tendência, está em uma posição superior a 65, curvando para baixo e formando um forco morto com a linha ADXR.

      3o, a ascensão

      Após um período de flutuação, as quatro linhas do indicador DMI se contornam no baixo, e depois surge uma linha k de longo alcance que aumenta mais de 5%. A linha DI+ atravessa a linha DI, a linha ADX e a linha ADXR em dois dias consecutivos, representando uma nova tendência ascendente.


Relacionados

Mais.

homem solitárioComo se conhecessem.

Wuzhenyuv (em inglês)O que você pode escrever sobre uma estratégia de avaliação de tendências baseada no DMI?

Sonhos pequenosMuito bem, há tempo para escrever um exemplo.