Pengiraan dan penggunaan penunjuk DMI

Penulis:Mimpi kecil, Dicipta: 2019-07-03 14:03:53, Dikemas kini: 2023-10-25 20:00:58

img

Pengiraan dan penggunaan penunjuk DMI

Maklumat mengenai penunjuk

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

    Beberapa rakan dalam kalangan kuantitatif baru-baru ini telah menanyakan saya bagaimana menggunakan penunjuk DMI di platform perdagangan kuantitatif pencipta. Saya mula berfikir bahawa ia adalah masalah yang sangat mudah, saya membuka dokumen API untuk mencari fungsi penunjuk ini. Saya mendapati bahawa tidak ada penunjuk ini dalam perpustakaan penunjuk talib yang mahakuasa. Kami mendapati bahawa indikator ini terdiri daripada gabungan empat indikator, algoritma tidak rumit, hanya menulisnya dengan tangan mengikut algoritma yang terdapat di dalam data.

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

  • Postkan 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]
    }
    
  • Perbandingan

    Menggunakan perpustakaan kelas garis gambar yang diukur oleh pencipta, mudah membuat carta yang dapat dibandingkan dengan DMI pada carta lain

    img

    img

    Nilai penunjuk pada beberapa Kbar di bandingkan, dan jumlahnya hampir sama (kesesuaian sedikit empat lima).

  • Penggunaan

    Menggunakan fungsi DMI secara langsung (seperti cara memanggil fungsi main dalam contoh), data baris K dihantar dan parameter penunjuk ditetapkan, biasanya 14. Data yang dikembalikan oleh fungsi adalah satu susunan aritmatika dua dimensi yang mewakili empat baris masing-masing.

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

    Dalam penunjuk DMI, empat garis ini, di mana DI-, DI+ adalah penunjuk banyak ruang, mencerminkan kekuatan kedua-dua ruang yang banyak. ADX dan ADXR adalah garis petunjuk yang digunakan bersama-sama, merupakan petunjuk trend yang mencerminkan trend dan arah pasaran semasa.

    DI +, nilai indikator yang lebih tinggi menunjukkan bahawa pasaran sekarang semakin kuat dan sebaliknya semakin lemah. DI-, penunjuk sebaliknya. DI+, DI- sering dikaitkan, dan nilai yang lebih dekat antara mereka mewakili pasaran dalam keadaan tidak stabil; sebaliknya menunjukkan peningkatan trend.

    • Isyarat

      1. Cari bahagian bawah

      Selepas penurunan jangka panjang, jika jangka pendek memenuhi syarat-syarat berikut, tanda-tanda bawah jangka pendek telah dijumpai dan kemungkinan kemunculan semula atau pembalikan di atas penurunan.

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

      • 2, ADX garis yang mewakili trend berada di kedudukan yang lebih tinggi daripada 65 dan berpusing ke bawah dan membentuk garpu mati dengan ADXR garis;

      2. Kubah

      Selepas kenaikan jangka panjang, jika keadaan berikut dipenuhi dalam jangka pendek, tanda-tanda puncak jangka pendek telah dijumpai dan penyesuaian atau pembalikan jangka pendek mungkin berlaku.

      • 1, baris DI yang mewakili kekuatan kepala kosong adalah di bawah 10, berada di kedudukan rendah dan mengelilingi ke atas, baris DI + berada di kedudukan tinggi;

      • 2, ADX garis yang mewakili trend berada di kedudukan yang lebih tinggi daripada 65 dan berpusing ke bawah dan membentuk garpu mati dengan ADXR garis;

      3. Kemunculan

      Selepas beberapa ketika, empat garis indikator DMI saling mengelilingi pada titik rendah, dan tiba-tiba muncul garis panjang k yang meningkat lebih daripada 5%, dan kemudian muncul garis panjang k yang menunjukkan kenaikan lebih daripada 5%. Di samping itu, DI+ juga akan melintasi garis DI, ADX dan ADXR secara berturut-turut dalam tempoh dua hari, yang mewakili trend menaik baru yang akan terbentuk.


Berkaitan

Lebih lanjut

lelaki kesepianSeperti pernah berjumpa

wuzhenyuvAdakah anda boleh menulis strategi penilaian trend berdasarkan DMI?

Mimpi kecilBaiklah, ada masa untuk menulis contoh.