avatar of 发明者量化-小小梦 发明者量化-小小梦
konzentrieren Sie sich auf Private Nachricht
4
konzentrieren Sie sich auf
1271
Anhänger

Berechnung und Anwendung des DMI-Indikators

Erstellt in: 2019-07-03 14:03:53, aktualisiert am: 2023-10-25 20:00:58
comments   9
hits   4768

Berechnung und Anwendung des DMI-Indikators

Berechnung und Anwendung des DMI-Indikators

Einführung in den Indikator

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

Vor kurzem haben mich viele Freunde aus dem quantitativen Kreis um Rat gefragt, wie man den DMI-Indikator auf der Inventor Quantitative Trading Platform verwendet. Zuerst dachte ich, es sei eine einfache Frage, also öffnete ich die API-Dokumentation, um nach dieser Indikatorfunktion zu suchen. Ich habe festgestellt, dass dieser Indikator nicht in der universellen Talib-Indikatorbibliothek enthalten ist. Ich habe schnell auf Baidu und Zhihu gesucht … und nach viel harter Arbeit einige Informationen zu den Indikatoren gefunden. Ich habe festgestellt, dass dieser Indikator aus vier Indikatoren besteht. Der Algorithmus ist nicht sehr kompliziert, daher habe ich ihn einfach gemäß dem Algorithmus im Material geschrieben.

Beispieladresse: https://www.fmz.com/strategy/154050

  • Bitte veröffentlichen Sie den Quellcode des Indikators
  // 指标函数
  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]
  }
  • Kontrast

Mit der Inventor Quantitative Line Drawing Library ist es sehr einfach, ein Diagramm zu zeichnen und es mit dem DMI auf anderen Diagrammen zu vergleichen

Berechnung und Anwendung des DMI-Indikators

Berechnung und Anwendung des DMI-Indikators

Vergleicht man die Indikatorwerte auf mehreren Kbars, stimmen die Werte grundsätzlich überein (mit leichten Rundungsabweichungen).

  • verwenden

Verwenden Sie direkt die DMI-Funktion (wie die in der Hauptfunktion im Beispiel aufgerufene Methode), übergeben Sie die K-Line-Daten und legen Sie die Indikatorparameter fest, 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 den vier Linien im DMI-Indikator sind DI- und DI+ Long- und Short-Indikatoren, die die Stärke sowohl der Long- als auch der Short-Seite widerspiegeln. ADX und ADXR sind ein Paar von Indikatorlinien, die zusammen verwendet werden. Sie sind Trendindikatoren, die den Trend und die Richtung des aktuellen Marktes widerspiegeln.

DI+, je höher der Indikatorwert, desto stärker sind die aktuellen Marktbullen und umgekehrt. DI-, der Indikator ist gegenüberliegend. DI+ und DI- sind häufig miteinander verflochten, und je näher die Werte beieinander liegen, desto wahrscheinlicher ist es, dass sich der Markt in einer Konsolidierungsblockade befindet. Im Gegenteil, es deutet darauf hin, dass sich der Trend verstärkt.

  • Signal

    1. Finden Sie den Boden

    Wenn nach einer langen Phase des Rückgangs die folgenden Bedingungen kurzfristig erfüllt sind, bedeutet dies, dass der kurzfristige Tiefpunkt erreicht wurde und es zu einer überverkauften Erholung oder Umkehr kommen kann.

      1. Die DI+-Linie, die die bullische Kraft darstellt, liegt unter 10 und dreht sich nach oben in eine überverkaufte Position, und die DI–Linie befindet sich auf einem hohen Niveau.
      1. Die den Trend repräsentierende ADX-Linie liegt an einer höheren Position über 65, dreht nach unten und bildet mit der ADXR-Linie ein Todeskreuz.
    1. Gipfelerkundung

    Wenn nach einem langfristigen Anstieg die folgenden Bedingungen kurzfristig erfüllt sind, bedeutet dies, dass der kurzfristige Höchststand erreicht wurde und eine kurzfristige Anpassung oder Umkehr erfolgen kann.

      1. Die DI-Linie, die die Leerverkaufskraft darstellt, liegt unter 10, auf einem niedrigen Niveau und zeigt nach oben, während die DI+ Linie auf einem hohen Niveau liegt.
      1. Die den Trend repräsentierende ADX-Linie liegt an einer höheren Position über 65, dreht nach unten und bildet mit der ADXR-Linie ein Todeskreuz.
    1. Starten

    Nach einer Phase der Schwankungen verflochten sich die vier Linien des DMI-Indikators auf niedrigem Niveau, und dann erschien plötzlich eine lange positive Kerze mit einem Volumenanstieg von über 5 %. Die DI+-Linie kreuzt die DI–Linie, die ADX-Linie und die ADXR-Linie innerhalb von zwei Tagen kontinuierlich, was darauf hindeutet, dass sich ein neuer Aufwärtstrend bildet. Sie können kaufen, wenn die DI+-Linie die letzte Indikatorlinie kreuzt.