Berechnung und Anwendung von DMI-Indikatoren

Schriftsteller:Gutes, Erstellt: 2019-08-03 14:24:10, Aktualisiert: 2023-11-08 20:43:17

img

Einführung in die DMI-Indikatoren

Der DMI-Indikator wird auch als Momentum-Indikator oder Trend-Indikator bezeichnet, der vollständige Name ist Directional Movement Index (DMI) . Er wurde von dem amerikanischen Guru der technischen Analyse Wells Wilder entwickelt.

Der DMI-Indikator ist eine Veränderung des Gleichgewichtspunktes der Käufer und Verkäufer im Prozeß des Preissteigerns und -abstiegs, d. h. die Veränderung der Stärke sowohl der Long- als auch der Short-Seiten wird durch die Preisschwankungen beeinflusst, und der zyklische Prozeß vom Gleichgewicht zum Ungleichgewicht tritt ein, wodurch ein technischer Indikator zur Beurteilung des Trends hergestellt wird.

Berechnung des Indikators

Vor kurzem haben mich einige Freunde im Quantitative Trading-Geschäft gebeten, mir zu erklären, wie man den DMI-Indikator auf der Quantitative Trading-Plattform von FMZ Quant nutzt. Ich dachte, es sei ein sehr einfaches Problem, und ich öffnete die API-Dokumentation, um diese Indikatorfunktion zu finden. Ich fand heraus, dass dieser Indikator nicht in der versatile talib-Indikatorbibliothek verfügbar ist. Nach einigem Googling fand ich einige Informationen.

Es stellt sich heraus, dass dieser Indikator aus vier Indikatoren besteht. Der Algorithmus ist nicht sehr kompliziert.

Adresse des Algorithmushttps://www.fmz.com/strategy/154050

  • Quellcode

// 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]
}
  • Vergleich

Mit der Datenbibliothek von FMZ Quant ist es einfach, ein Diagramm zu zeichnen und DMI mit anderen Diagrammen zu vergleichen.

img img

Wenn die Indikatorwerte auf mehreren k-Linienbalken verglichen werden, sind die Werte grundsätzlich gleich (leicht abgerundete Abweichung).

  • Verwendung

Direkt die DMI-Funktion verwenden (z. B. wie in der Hauptfunktion im Beispiel genannt), die Daten der K-Linie übergeben, die Indikatorparameter festlegen, die im Allgemeinen 14 sind.

Die von der Funktion zurückgegebenen Daten sind ein zweidimensionales Array, das vier Zeilen darstellt.

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

Unter diesen vier Linien des DMI-Indikators sind DI- und DI+ Long- und Short-Indikatoren, die die Stärke sowohl der Long- als auch der Shortposition widerspiegeln.

AdX und adXR sind ein Paar von Indikatorlinien, die zusammen verwendet werden und Trendindikatoren darstellen, die den aktuellen Markttrend und -richtung widerspiegeln.

DI+, je höher der Indikatorwert, desto stärker ist der aktuelle Bullenmarkt, andernfalls desto schwächer der Bullenmarkt. DI, das Gegenteil von oben. DI+, DI- sind häufig miteinander verflochten, und je näher der Wert zwischen ihnen liegt, desto länger ist der Markt in einer Sackgasse.

Signal

  • Tiefste Preissignal

Wenn nach einem langfristigen Preisrückgang kurzfristig folgende Bedingungen erfüllt sind, bedeutet dies, dass der kurzfristige Preistief erreicht wurde und es zu einem Aufschwung oder einer Umkehrung kommen kann.

Die DI+-Linie, die die Long-Buy-Strength darstellt, liegt unter 10, die Linie wird in der Überverkaufsposition nach oben gedreht und die DI-Linie befindet sich in der Hochposition.

Die AdX-Linie, die den Trend repräsentiert, befindet sich in einer höheren Position über 65, dreht sich nach unten und bildet eine Abkreuzung mit der adXR-Linie.

  • Spitzenwertsignal

Wenn nach einem langfristigen Anstieg kurzfristig folgende Bedingungen erfüllt sind, ist der kurzfristige Höchstpreis erreicht und es können kurzfristige Anpassungen oder Umkehrungen auftreten.

Die DI-Linie, die die Leerverkaufsstärke darstellt, liegt unter 10, die Linie wird an der niedrigen Position nach oben gedreht und die DI+-Linie ist an der hohen Position.

Die AdX-Linie, die den Trend repräsentiert, befindet sich in einer höheren Position über 65, dreht sich nach unten und bildet eine Abkreuzung mit der adXR-Linie.

  • Anstieg des Trends

Nach einer Periode von Schwankungen in der Preisbewegung werden die vier Indikatorlinien des DMI am niedrigen Preis miteinander verflochten, und dann gibt es plötzlich eine lange positive K-Linie mit einem großen Volumen, der den Preis über 5% erhöht.


Mehr