
Pengenalan Petunjuk
DMI指标又叫动向指标或趋向指标,其全称叫“Directional Movement Index,简称DMI”,
也是由美国技术分析大师威尔斯·威尔德(Wells Wilder)所创造的,是一种中长期股市技术分析(Technical Analysis)方法。
DMI指标是通过分析股票价格在涨跌过程中买卖双方力量均衡点的变化情况,
即多空双方的力量的变化受价格波动的影响而发生由均衡到失衡的循环过程,从而提供对趋势判断依据的一种技术指标。
Baru-baru ini, ramai rakan dalam kalangan kuantitatif telah berunding dengan saya tentang cara menggunakan penunjuk DMI pada Platform Dagangan Kuantitatif Inventor. Pada mulanya saya fikir ia adalah soalan mudah, jadi saya membuka dokumentasi API untuk mencari fungsi penunjuk ini. Saya mendapati bahawa penunjuk ini tidak termasuk dalam perpustakaan penunjuk talib universal. Saya dengan pantas mencari di Baidu dan Zhihu… dan selepas bekerja keras, saya menemui beberapa maklumat tentang penunjuk. Saya mendapati bahawa penunjuk ini terdiri daripada empat penunjuk Algoritma ini tidak terlalu rumit, jadi saya hanya menulisnya mengikut algoritma dalam bahan.
Contoh alamat: https://www.fmz.com/strategy/154050
// 指标函数
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]
}
Menggunakan Perpustakaan Lukisan Garisan Kuantitatif Pencipta, adalah sangat mudah untuk melukis carta dan membandingkannya dengan DMI pada carta lain


Membandingkan nilai penunjuk pada beberapa Kbar, nilai pada asasnya konsisten (dengan sisihan pembulatan sedikit).
Gunakan fungsi DMI secara langsung (seperti kaedah yang dipanggil dalam fungsi utama dalam contoh), masukkan data garis K dan tetapkan parameter penunjuk, yang biasanya 14. Data yang dikembalikan oleh fungsi ialah tatasusunan dua dimensi, mewakili empat baris.
Antara empat baris dalam penunjuk DMI, DI- dan DI+ ialah penunjuk panjang dan pendek, mencerminkan kekuatan kedua-dua sisi panjang dan pendek. ADX dan ADXR ialah sepasang garis penunjuk yang digunakan bersama Ia adalah penunjuk arah aliran yang mencerminkan arah aliran dan arah pasaran semasa.
DI+, semakin tinggi nilai penunjuk, semakin kukuh kenaikan pasaran semasa, dan sebaliknya. DI-, penunjuk adalah bertentangan. DI+ dan DI- sering saling berkait, dan semakin dekat nilainya, semakin besar kemungkinan pasaran berada dalam kebuntuan penyatuan. Sebaliknya, ia menunjukkan bahawa trend semakin kukuh.
isyarat
Selepas tempoh penurunan yang panjang, jika syarat berikut dipenuhi dalam jangka pendek, ini bermakna bahagian bawah jangka pendek telah ditemui dan lantunan terlebih jual atau pembalikan mungkin berlaku.
Selepas kenaikan jangka panjang, jika syarat berikut dipenuhi dalam jangka pendek, ini bermakna puncak jangka pendek telah ditemui dan pelarasan atau pembalikan jangka pendek mungkin berlaku.
Selepas tempoh turun naik, empat garis penunjuk DMI berjalin pada tahap yang rendah, dan kemudian tiba-tiba batang lilin positif panjang dengan peningkatan volum lebih daripada 5% muncul. Garisan DI+ melintasi garisan DI-, garis ADX dan garisan ADXR secara berterusan dalam masa dua hari, menunjukkan bahawa aliran menaik baharu akan terbentuk. Anda boleh membeli apabila garisan DI+ melintasi garis penunjuk terakhir.