Индикатор DMI также называют индикатором импульса или индикатором тренда, полное название
Показатель DMI представляет собой изменение точки равновесия покупателей и продавцов в процессе роста и падения цен, то есть изменение силы как длинной, так и короткой сторон влияет на колебания цен, и происходит циклический процесс от равновесия к дисбалансу, обеспечивая таким образом технический индикатор для оценки тенденции.
Недавно несколько друзей в области количественной торговли проконсультировались со мной о том, как использовать индикатор DMI на платформе количественной торговли FMZ Quant. Я подумал, что это очень простая проблема, и я открыл документацию API, чтобы найти эту функцию индикатора. Я обнаружил, что этот индикатор не доступен в библиотеке
Выяснилось, что этот индикатор состоит из четырех индикаторов. Алгоритм не очень сложный. Просто следуйте алгоритму и все будет хорошо.
Адрес алгоритма: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]
}
Используя библиотеку данных FMZ Quant, легко нарисовать диаграмму и сравнивать DMI с другими диаграммами.
При сравнении значений показателя на нескольких к-линейных барах значения в основном одинаковы (легко округленное отклонение).
Непосредственно использовать функцию DMI (например, как называется в основной функции в примере), передать в K линии данных, установить параметры индикатора, которые, как правило, 14.
Данные, возвращаемые функцией, представляют собой двумерный массив, представляющий четыре строки.
ДИ-: m_di DI+: p_di AdX: adx adXR: adxr
Среди этих четырех линий индикатора DMI DI- и DI+ являются длинными и короткими индикаторами, отражающими силу как длинной, так и короткой позиции.
AdX и adXR - это пара линий показателей, используемых вместе, которые являются индикаторами тенденций, отражающими текущую тенденцию и направление рынка.
DI+, чем выше значение индикатора, тем сильнее текущий бычий рынок, в противном случае тем слабее бычий рынок. ДИ, противоположное тому, что выше. ИИ+, ИИ- часто переплетаются, и чем ближе ценность между ними, рынок находится в тупике.
После длительного снижения цены, если следующие условия выполняются в краткосрочной перспективе, это указывает на то, что краткосрочное дно цены достигнуто, и может произойти отскок или перелом.
Линия DI+, которая представляет длинную силу покупки, находится ниже 10, а линия поворачивается вверх на перепроданной позиции, а линия DI находится на высокой позиции.
Линия AdX, которая представляет тенденцию, находится на более высоком уровне выше 65, поворачивая вниз и образуя нисходящий перекресток с линией adXR.
После длительного роста, если следующие условия выполнены в краткосрочной перспективе, краткосрочная высокая цена достигнута, и могут произойти краткосрочные корректировки или отклонения.
Линия DI, которая представляет собой силу короткой продажи, ниже 10, а линия поворачивается вверх на низкой позиции, а линия DI+ - на высокой.
Линия AdX, которая представляет тенденцию, находится на более высоком уровне выше 65, поворачивая вниз и образуя нисходящий перекресток с линией adXR.
После периода колебаний в ценовом движении четыре линии индикатора DMI