
Introduction à l’indicateur
DMI指标又叫动向指标或趋向指标,其全称叫“Directional Movement Index,简称DMI”,
也是由美国技术分析大师威尔斯·威尔德(Wells Wilder)所创造的,是一种中长期股市技术分析(Technical Analysis)方法。
DMI指标是通过分析股票价格在涨跌过程中买卖双方力量均衡点的变化情况,
即多空双方的力量的变化受价格波动的影响而发生由均衡到失衡的循环过程,从而提供对趋势判断依据的一种技术指标。
Récemment, de nombreux amis du cercle quantitatif m’ont consulté sur la manière d’utiliser l’indicateur DMI sur la plateforme de trading quantitatif Inventor. Au début, je pensais que c’était une question simple, j’ai donc ouvert la documentation de l’API pour rechercher cette fonction d’indicateur. J’ai constaté que cet indicateur n’est pas inclus dans la bibliothèque d’indicateurs talib universelle. J’ai rapidement cherché sur Baidu et Zhihu… et après beaucoup de travail, j’ai trouvé quelques informations sur les indicateurs. J’ai découvert que cet indicateur est composé de quatre indicateurs. L’algorithme n’est pas très compliqué, je l’ai donc simplement écrit selon l’algorithme du document.
Exemple d’adresse : 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]
}
En utilisant la bibliothèque de dessins de lignes quantitatives Inventor, il est très facile de dessiner un graphique et de le comparer avec le DMI sur d’autres graphiques


En comparant les valeurs des indicateurs sur plusieurs Kbars, les valeurs sont fondamentalement cohérentes (avec un léger écart d’arrondi).
Utilisez directement la fonction DMI (comme la méthode appelée dans la fonction principale de l’exemple), transmettez les données de la ligne K et définissez les paramètres de l’indicateur, qui sont généralement 14. Les données renvoyées par la fonction sont un tableau bidimensionnel, représentant quatre lignes.
Parmi les quatre lignes de l’indicateur DMI, DI- et DI+ sont des indicateurs longs et courts, reflétant la force des deux côtés, long et court. ADX et ADXR sont une paire de lignes indicatrices utilisées ensemble. Ce sont des indicateurs de tendance qui reflètent la tendance et la direction du marché actuel.
DI+, plus la valeur de l’indicateur est élevée, plus les haussiers du marché actuel sont forts, et vice versa. DI-, l’indicateur est opposé. DI+ et DI- sont souvent étroitement liés, et plus les valeurs sont proches, plus le marché est susceptible de se trouver dans une impasse de consolidation. Au contraire, cela indique que la tendance se renforce.
Signal
Après une longue période de déclin, si les conditions suivantes sont réunies à court terme, cela signifie que le fond à court terme a été trouvé et qu’un rebond ou un renversement de survente peut se produire.
Après une hausse à long terme, si les conditions suivantes sont remplies à court terme, cela signifie que le sommet à court terme a été trouvé et qu’un ajustement ou un renversement à court terme peut se produire.
Après une période de fluctuations, les quatre lignes de l’indicateur DMI se sont entrelacées à un niveau bas, puis soudainement un long chandelier positif avec une augmentation de volume de plus de 5% est apparu. La ligne DI+ croise continuellement la ligne DI-, la ligne ADX et la ligne ADXR en deux jours, indiquant qu’une nouvelle tendance à la hausse est sur le point de se former. Vous pouvez acheter lorsque la ligne DI+ croise la dernière ligne indicatrice.