avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

Perhitungan dan penerapan indikator DMI

Dibuat di: 2019-07-03 14:03:53, diperbarui pada: 2023-10-25 20:00:58
comments   9
hits   4768

Perhitungan dan penerapan indikator DMI

Perhitungan dan penerapan indikator DMI

Pengenalan Indikator

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

Baru-baru ini, banyak teman di kalangan kuantitatif yang berkonsultasi dengan saya tentang cara menggunakan indikator DMI pada Platform Perdagangan Kuantitatif Inventor. Awalnya saya pikir itu pertanyaan sederhana, jadi saya membuka dokumentasi API untuk mencari fungsi indikator ini. Saya menemukan bahwa indikator ini tidak termasuk dalam pustaka indikator talib universal. Saya segera mencari di Baidu dan Zhihu… dan setelah kerja keras, saya menemukan beberapa informasi tentang indikatornya. Saya menemukan bahwa indikator ini terdiri dari empat indikator. Algoritmanya tidak terlalu rumit, jadi saya hanya menuliskannya sesuai dengan algoritma dalam materi.

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

  • Harap posting kode sumber indikatornya
  // 指标函数
  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

Dengan menggunakan Pustaka Gambar Garis Kuantitatif Inventor, sangat mudah untuk menggambar bagan dan membandingkannya dengan DMI pada bagan lain

Perhitungan dan penerapan indikator DMI

Perhitungan dan penerapan indikator DMI

Membandingkan nilai indikator pada beberapa Kbar, nilai-nilai tersebut pada dasarnya konsisten (dengan sedikit penyimpangan pembulatan).

  • menggunakan

Langsung gunakan fungsi DMI (seperti metode yang dipanggil dalam fungsi utama dalam contoh), masukkan data garis K, dan tetapkan parameter indikator, yang umumnya 14. Data yang dikembalikan oleh fungsi adalah array dua dimensi, yang mewakili empat baris.

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

Di antara empat garis pada indikator DMI, DI- dan DI+ merupakan indikator panjang dan pendek, yang mencerminkan kekuatan sisi panjang dan pendek. ADX dan ADXR adalah sepasang garis indikator yang digunakan bersama-sama. Keduanya merupakan indikator tren yang mencerminkan tren dan arah pasar saat ini.

DI+, semakin tinggi nilai indikatornya, semakin kuat pasar bullish saat ini, dan sebaliknya. DI-, indikatornya berlawanan. DI+ dan DI- sering kali saling terkait, dan semakin dekat nilainya, semakin besar kemungkinan pasar mengalami kebuntuan konsolidasi. Sebaliknya, ini menunjukkan trennya menguat.

  • Sinyal

    1. Temukan bagian bawahnya

    Setelah periode penurunan yang panjang, jika kondisi berikut terpenuhi dalam jangka pendek, itu berarti dasar jangka pendek telah ditemukan dan rebound atau pembalikan jenuh jual dapat terjadi.

      1. Garis DI+ yang melambangkan kekuatan bullish berada di bawah 10, berbalik ke atas dalam posisi jenuh jual, dan garis DI- berada pada level tinggi.
      1. Garis ADX yang mewakili tren berada pada posisi lebih tinggi di atas 65, berbelok ke bawah dan membentuk persilangan kematian dengan garis ADXR.
    1. Puncak eksplorasi

    Setelah kenaikan jangka panjang, jika kondisi berikut terpenuhi dalam jangka pendek, itu berarti puncak jangka pendek telah ditemukan dan penyesuaian atau pembalikan jangka pendek dapat terjadi.

      1. Garis DI-, yang menggambarkan kekuatan jual pendek, berada di bawah 10, pada level rendah dan berbalik ke atas, sedangkan garis DI+ berada pada level tinggi.
      1. Garis ADX yang mewakili tren berada pada posisi lebih tinggi di atas 65, berbelok ke bawah dan membentuk persilangan kematian dengan garis ADXR.
    1. Mulai

    Setelah periode fluktuasi, keempat garis indikator DMI saling terkait pada level rendah, dan kemudian tiba-tiba muncul kandil positif panjang dengan peningkatan volume lebih dari 5%. Garis DI+ melintasi garis DI-, garis ADX, dan garis ADXR secara terus-menerus dalam dua hari, yang menunjukkan bahwa tren kenaikan baru akan segera terbentuk. Anda dapat membeli ketika garis DI+ melintasi garis indikator terakhir.