Pengiraan dan penggunaan penunjuk DMI

Penulis:Kebaikan, Dicipta: 2019-08-03 14:24:10, Dikemas kini: 2023-11-08 20:43:17

img

Pengenalan kepada penunjuk DMI

Indikator DMI juga dipanggil indikator momentum atau indikator trend, nama lengkapnya adalah Indeks Pergerakan Arah (DMI) . Ia dicipta oleh pakar analisis teknikal Amerika Wells Wilder, ia adalah kaedah analisis teknikal pasaran jangka menengah dan panjang.

Penunjuk DMI adalah perubahan titik keseimbangan pembeli dan penjual dalam proses kenaikan dan penurunan harga, iaitu, perubahan kekuatan kedua-dua sisi panjang dan pendek dipengaruhi oleh turun naik harga, dan proses kitaran dari keseimbangan ke ketidakseimbangan berlaku, dengan itu menyediakan penunjuk teknikal untuk menilai trend.

Pengiraan penunjuk

Baru-baru ini, beberapa rakan dalam perniagaan perdagangan kuantitatif telah berunding dengan saya tentang cara menggunakan penunjuk DMI di platform perdagangan kuantitatif FMZ Quant. Saya fikir ia adalah masalah yang sangat mudah, dan saya membuka dokumentasi API untuk mencari fungsi penunjuk ini. mendapati bahawa penunjuk ini tidak tersedia di perpustakaan indikator versatile talib. selepas beberapa googling, saya menemui beberapa maklumat.

Ia mendapati bahawa penunjuk ini terdiri daripada empat penunjuk. Algoritma tidak terlalu rumit. Hanya mengikuti algoritma akan baik-baik saja.

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

  • Kod sumber

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

Menggunakan perpustakaan data FMZ Quant, mudah untuk membuat carta dan membandingkan DMI dengan carta lain.

img img

Membandingkan nilai penunjuk pada beberapa bar garis k, nilai-nilai pada dasarnya sama (penyesuaian yang sedikit dibulatkan).

  • Penggunaan

Langsung menggunakan fungsi DMI (seperti cara yang dipanggil dalam fungsi utama dalam contoh), lulus dalam data garis K, menetapkan parameter penunjuk, yang biasanya 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 penunjuk DMI ini, DI- dan DI+ adalah penunjuk panjang dan pendek, yang mencerminkan kekuatan kedua-dua kedudukan panjang dan pendek.

AdX dan adXR adalah sepasang garis penunjuk yang digunakan bersama, yang merupakan penunjuk trend, yang mencerminkan trend dan arah pasaran semasa.

DI+, semakin tinggi nilai penunjuk, semakin kuat pasaran lembu semasa, jika tidak, semakin lemah pasaran lembu. DI, kebalikan dari di atas. DI +, DI- sering berkait rapat, dan semakin dekat nilai di antara, pasaran berada dalam kebuntuan.

Isyarat

  • Isyarat harga bawah

Selepas penurunan harga jangka panjang, jika syarat-syarat berikut dipenuhi dalam jangka pendek, ia menunjukkan bahawa harga jangka pendek telah mencapai bahagian bawah, dan mungkin terdapat pemulihan atau pembalikan.

Garis DI + yang mewakili kekuatan pembelian panjang adalah di bawah 10, dan garis itu diputar ke atas dalam kedudukan oversold, dan garis DI berada di kedudukan tinggi.

Garis AdX yang mewakili trend berada di kedudukan yang lebih tinggi di atas 65, berpaling ke bawah dan membentuk persilangan ke bawah dengan garis adXR.

  • Isyarat harga atas

Selepas kenaikan jangka panjang, jika syarat-syarat berikut dipenuhi dalam jangka pendek, harga tinggi jangka pendek telah dicapai dan mungkin terdapat penyesuaian jangka pendek atau pembalikan.

Garis DI yang mewakili kekuatan jualan pendek adalah di bawah 10, dan garis itu berpusing ke atas di kedudukan rendah, dan garis DI + berada di kedudukan tinggi.

Garis AdX yang mewakili trend berada di kedudukan yang lebih tinggi di atas 65, berpaling ke bawah dan membentuk persilangan ke bawah dengan garis adXR.

  • Peningkatan trend

Selepas tempoh turun naik dalam pergerakan harga, empat garis penunjuk DMI saling berkaitan pada harga rendah, dan kemudian tiba-tiba terdapat garis k positif yang panjang dengan jumlah yang besar meningkatkan harga lebih dari 5%.


Lebih lanjut