
Pengenalan Indikator
DMI指标又叫动向指标或趋向指标,其全称叫“Directional Movement Index,简称DMI”,
也是由美国技术分析大师威尔斯·威尔德(Wells Wilder)所创造的,是一种中长期股市技术分析(Technical Analysis)方法。
DMI指标是通过分析股票价格在涨跌过程中买卖双方力量均衡点的变化情况,
即多空双方的力量的变化受价格波动的影响而发生由均衡到失衡的循环过程,从而提供对趋势判断依据的一种技术指标。
Baru-baru ini, banyak teman di kalangan kuantitatif yang berkonsultasi dengan saya tentang cara menggunakan indikator DMI pada Platform Perdagangan Kuantitatif Inventor. Awalnya saya pikir itu pertanyaan sederhana, jadi saya membuka dokumentasi API untuk mencari fungsi indikator ini. Saya menemukan bahwa indikator ini tidak termasuk dalam pustaka indikator talib universal. Saya segera mencari di Baidu dan Zhihu… dan setelah kerja keras, saya menemukan beberapa informasi tentang indikatornya. Saya menemukan bahwa indikator ini terdiri dari empat indikator. Algoritmanya tidak terlalu rumit, jadi saya hanya menuliskannya sesuai dengan algoritma dalam materi.
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]
}
Dengan menggunakan Pustaka Gambar Garis Kuantitatif Inventor, sangat mudah untuk menggambar bagan dan membandingkannya dengan DMI pada bagan lain


Membandingkan nilai indikator pada beberapa Kbar, nilai-nilai tersebut pada dasarnya konsisten (dengan sedikit penyimpangan pembulatan).
Langsung gunakan fungsi DMI (seperti metode yang dipanggil dalam fungsi utama dalam contoh), masukkan data garis K, dan tetapkan parameter indikator, yang umumnya 14. Data yang dikembalikan oleh fungsi adalah array dua dimensi, yang mewakili empat baris.
Di antara empat garis pada indikator DMI, DI- dan DI+ merupakan indikator panjang dan pendek, yang mencerminkan kekuatan sisi panjang dan pendek. ADX dan ADXR adalah sepasang garis indikator yang digunakan bersama-sama. Keduanya merupakan indikator tren yang mencerminkan tren dan arah pasar saat ini.
DI+, semakin tinggi nilai indikatornya, semakin kuat pasar bullish saat ini, dan sebaliknya. DI-, indikatornya berlawanan. DI+ dan DI- sering kali saling terkait, dan semakin dekat nilainya, semakin besar kemungkinan pasar mengalami kebuntuan konsolidasi. Sebaliknya, ini menunjukkan trennya menguat.
Sinyal
Setelah periode penurunan yang panjang, jika kondisi berikut terpenuhi dalam jangka pendek, itu berarti dasar jangka pendek telah ditemukan dan rebound atau pembalikan jenuh jual dapat terjadi.
Setelah kenaikan jangka panjang, jika kondisi berikut terpenuhi dalam jangka pendek, itu berarti puncak jangka pendek telah ditemukan dan penyesuaian atau pembalikan jangka pendek dapat terjadi.
Setelah periode fluktuasi, keempat garis indikator DMI saling terkait pada level rendah, dan kemudian tiba-tiba muncul kandil positif panjang dengan peningkatan volume lebih dari 5%. Garis DI+ melintasi garis DI-, garis ADX, dan garis ADXR secara terus-menerus dalam dua hari, yang menunjukkan bahwa tren kenaikan baru akan segera terbentuk. Anda dapat membeli ketika garis DI+ melintasi garis indikator terakhir.