Perhitungan dan penerapan indikator DMI

Penulis:Mimpi kecil, Dibuat: 2019-07-03 14:03:53, Diperbarui: 2023-10-25 20:00:58

img

Perhitungan dan penerapan indikator DMI

Indikator

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

    Beberapa teman saya di dunia kuantitatif baru-baru ini bertanya kepada saya bagaimana cara menggunakan indikator DMI di platform perdagangan kuantitatif penemu. Saya mulai berpikir bahwa ini adalah masalah yang sangat sederhana, saya membuka dokumen API untuk mencari fungsi indikator ini. Saya menemukan bahwa tidak ada indikator ini di database indikator talib yang ampuh. Kami menemukan bahwa indikator ini terdiri dari kombinasi dari empat indikator, dan algoritmanya tidak terlalu rumit.

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

  • Tuliskan sumbernya.

    // 指标函数
    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]
    }
    
  • Perbandingan

    Dengan menggunakan pustaka garis gambar yang diukur oleh penemu, sangat mudah untuk menggambar grafik yang dapat dibandingkan dengan DMI pada grafik lain di bawah

    img

    img

    Jika dibandingkan dengan beberapa nilai indikator Kbar, maka angka-angka tersebut hampir sama (divergensi 4/5).

  • Penggunaan

    Fungsi DMI (misalnya, cara memanggil fungsi main dalam contoh) digunakan untuk mengirim data baris K dan mengatur parameter indikator, biasanya 14. Data yang dikembalikan oleh fungsi adalah suatu array dua dimensi yang masing-masing mewakili empat baris.

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

    Dalam indikator DMI, empat garis ini, di mana DI-, DI+ adalah indikator multi-ruang, mencerminkan kekuatan kedua sisi multi-ruang. ADX dan ADXR adalah garis indikator yang digunakan secara berpasangan dan merupakan indikator tren yang mencerminkan tren dan arah pasar saat ini.

    DI +, nilai indikator yang lebih tinggi, menunjukkan bahwa pasar saat ini semakin kuat dan sebaliknya semakin lemah. DI-, indikator kebalikan. DI+, DI- seringkali saling terkait, dan nilai yang lebih dekat di antara mereka mewakili pasar dalam keadaan stagnasi keseluruhan. Sebaliknya menunjukkan peningkatan tren.

    • Sinyal

      1, mencari dasar.

      Setelah penurunan jangka panjang, jika kondisi di bawah ini terpenuhi dalam jangka pendek, berarti bahwa posisi bawah jangka pendek telah terdeteksi dan mungkin terjadi rebound atau pembalikan di atas penurunan.

      • 1, garis DI+ yang mewakili kekuatan multihead berada di bawah 10, di posisi overdrop, di tikungan ke atas, dan garis DI berada di posisi tinggi.

      • 2, garis ADX yang mewakili tren berada di posisi yang lebih tinggi dari 65, membelok ke bawah dan membentuk garpu mati dengan garis ADXR.

      2., Kubah

      Setelah kenaikan jangka panjang, jika kondisi di bawah ini terpenuhi dalam jangka pendek, maka puncak jangka pendek telah terdeteksi dan mungkin terjadi penyesuaian atau pembalikan jangka pendek.

      • 1, garis DI, yang mewakili kekuatan kepala kosong, berada di bawah 10, di posisi rendah dan berputar ke atas, dan garis DI + berada di posisi tinggi.

      • 2, garis ADX yang mewakili tren berada di posisi yang lebih tinggi dari 65, membelok ke bawah dan membentuk garpu mati dengan garis ADXR.

      3 Kemunculan

      Setelah beberapa waktu bergulir, empat garis indikator DMI saling berputar di titik rendah, lalu tiba-tiba muncul garis panjang k yang naik lebih dari 5%, dan kemudian muncul garis panjang k. DI+ akan melintasi DI-line, ADX line dan ADXR line secara berturut-turut selama dua hari, yang mewakili tren baru yang akan terbentuk.


Berkaitan

Lebih banyak

LonelymanSeperti pernah bertemu

WuzhenyuvDream Total, bisakah Anda menulis strategi pengamatan tren berdasarkan DMI?

Mimpi kecilBaiklah, ada waktu untuk menulis contoh.