avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada mesej peribadi
4
fokus pada
1271
Pengikut

Pengiraan dan penggunaan penunjuk DMI

Dicipta dalam: 2019-07-03 14:03:53, dikemas kini pada: 2023-10-25 20:00:58
comments   9
hits   4768

Pengiraan dan penggunaan penunjuk DMI

Pengiraan dan penggunaan penunjuk DMI

Pengenalan Petunjuk

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

Baru-baru ini, ramai rakan dalam kalangan kuantitatif telah berunding dengan saya tentang cara menggunakan penunjuk DMI pada Platform Dagangan Kuantitatif Inventor. Pada mulanya saya fikir ia adalah soalan mudah, jadi saya membuka dokumentasi API untuk mencari fungsi penunjuk ini. Saya mendapati bahawa penunjuk ini tidak termasuk dalam perpustakaan penunjuk talib universal. Saya dengan pantas mencari di Baidu dan Zhihu… dan selepas bekerja keras, saya menemui beberapa maklumat tentang penunjuk. Saya mendapati bahawa penunjuk ini terdiri daripada empat penunjuk Algoritma ini tidak terlalu rumit, jadi saya hanya menulisnya mengikut algoritma dalam bahan.

Contoh alamat: https://www.fmz.com/strategy/154050

  • Sila siarkan kod sumber penunjuk
  // 指标函数
  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]
  }
  • kontras

Menggunakan Perpustakaan Lukisan Garisan Kuantitatif Pencipta, adalah sangat mudah untuk melukis carta dan membandingkannya dengan DMI pada carta lain

Pengiraan dan penggunaan penunjuk DMI

Pengiraan dan penggunaan penunjuk DMI

Membandingkan nilai penunjuk pada beberapa Kbar, nilai pada asasnya konsisten (dengan sisihan pembulatan sedikit).

  • guna

Gunakan fungsi DMI secara langsung (seperti kaedah yang dipanggil dalam fungsi utama dalam contoh), masukkan data garis K dan tetapkan parameter penunjuk, yang biasanya 14. Data yang dikembalikan oleh fungsi ialah tatasusunan dua dimensi, mewakili empat baris.

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

Antara empat baris dalam penunjuk DMI, DI- dan DI+ ialah penunjuk panjang dan pendek, mencerminkan kekuatan kedua-dua sisi panjang dan pendek. ADX dan ADXR ialah sepasang garis penunjuk yang digunakan bersama Ia adalah penunjuk arah aliran yang mencerminkan arah aliran dan arah pasaran semasa.

DI+, semakin tinggi nilai penunjuk, semakin kukuh kenaikan pasaran semasa, dan sebaliknya. DI-, penunjuk adalah bertentangan. DI+ dan DI- sering saling berkait, dan semakin dekat nilainya, semakin besar kemungkinan pasaran berada dalam kebuntuan penyatuan. Sebaliknya, ia menunjukkan bahawa trend semakin kukuh.

  • isyarat

    1. Cari bahagian bawah

    Selepas tempoh penurunan yang panjang, jika syarat berikut dipenuhi dalam jangka pendek, ini bermakna bahagian bawah jangka pendek telah ditemui dan lantunan terlebih jual atau pembalikan mungkin berlaku.

      1. Garisan DI+, yang mewakili kuasa kenaikkan harga, berada di bawah 10, berpusing ke atas dalam kedudukan terlebih jual dan garis DI- berada pada tahap tinggi.
      1. Garis ADX yang mewakili arah aliran berada pada kedudukan yang lebih tinggi di atas 65, bertukar ke bawah dan membentuk salib kematian dengan garis ADXR.
    1. Penerokaan puncak

    Selepas kenaikan jangka panjang, jika syarat berikut dipenuhi dalam jangka pendek, ini bermakna puncak jangka pendek telah ditemui dan pelarasan atau pembalikan jangka pendek mungkin berlaku.

      1. Garisan DI-, yang mewakili daya jualan pendek, berada di bawah 10, pada tahap rendah dan membelok ke atas, manakala garisan DI+ berada pada tahap tinggi.
      1. Garis ADX yang mewakili arah aliran berada pada kedudukan yang lebih tinggi di atas 65, bertukar ke bawah dan membentuk salib kematian dengan garis ADXR.
    1. Mulakan

    Selepas tempoh turun naik, empat garis penunjuk DMI berjalin pada tahap yang rendah, dan kemudian tiba-tiba batang lilin positif panjang dengan peningkatan volum lebih daripada 5% muncul. Garisan DI+ melintasi garisan DI-, garis ADX dan garisan ADXR secara berterusan dalam masa dua hari, menunjukkan bahawa aliran menaik baharu akan terbentuk. Anda boleh membeli apabila garisan DI+ melintasi garis penunjuk terakhir.