Indikator DMI juga dipanggil indikator momentum atau indikator trend, nama lengkapnya adalah
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.
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
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
// 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]
}
Menggunakan perpustakaan data FMZ Quant, mudah untuk membuat carta dan membandingkan DMI dengan carta lain.
Membandingkan nilai penunjuk pada beberapa bar garis k, nilai-nilai pada dasarnya sama (penyesuaian yang sedikit dibulatkan).
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.
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.
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.
Selepas tempoh turun naik dalam pergerakan harga, empat garis penunjuk DMI