Расчет и применение показателей DMI

Автор:Маленькие мечты, Создано: 2019-07-03 14:03:53, Обновлено: 2023-10-25 20:00:58

img

Расчет и применение показателей DMI

Описание показателей

DMI指标又叫动向指标或趋向指标,其全称叫“Directional Movement Index,简称DMI”,
也是由美国技术分析大师威尔斯·威尔德(Wells Wilder)所创造的,是一种中长期股市技术分析(Technical Analysis)方法。
DMI指标是通过分析股票价格在涨跌过程中买卖双方力量均衡点的变化情况,
即多空双方的力量的变化受价格波动的影响而发生由均衡到失衡的循环过程,从而提供对趋势判断依据的一种技术指标。
  • Расчет показателей

    В последнее время многие друзья из количественных кругов спрашивают меня, как использовать показатели DMI на платформах количественной торговли изобретателей. Я начал думать, что это очень просто, и открыл API-документы, чтобы найти эту функцию. Я обнаружил, что этот показатель отсутствует в универсальной базе показателей talib. Мы обнаружили, что этот показатель состоит из четырех комбинаций, алгоритм не очень сложный, просто напишите его вручную.

    Например, адрес: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]
    }
    
  • Контраст

    С помощью количественной библиотеки линий рисунков, легко рисуют графики, которые можно сравнить с другими диаграммами DMI.

    img

    img

    По сравнению с показателями на нескольких Kbar, значения в основном согласуются (немного отклонения в четыре квадрата).

  • Использование

    Функция DMI (например, как она называется в функции main в примере) непосредственно используется для передачи данных из K-строка и установки параметров показателя, обычно 14. Данные, возвращаемые функцией, представляют собой двумерную матрицу, представляющую четыре строки.

    • DI-: m_di,
    • DI+: p_di,
    • ADX: adx,
    • ADXR: adxr,

    В DMI эти четыре линии, где DI-, DI+ - это многопространственные показатели, отражают силы обеих сторон многопространства. ADX и ADXR - это параллельные индикаторные линии, являющиеся индикаторами тренда, отражающими текущие тенденции и направления рынка.

    DI +, чем выше значение показателя, тем сильнее и слабее рынок. DI-, показатель противоположное. DI+, DI- часто переплетаются, и чем ближе значения между ними, тем лучше представляет собой рынок, находящийся в фиксированном тупике.

    • Сигналы

      1, поиск дна.

      После длительного падения, если в краткосрочной перспективе выполняются следующие условия, это означает, что краткосрочный дно обнаружено, и может возникнуть отскок или реверсия.

      • 1, Ди+-линия, представляющая собой многоголовую силу, находится ниже 10, в положении сверхпадения, вверх по повороту, а Ди-линия высока.

      • 2, ADX-линия, представляющая тенденцию, на высоком уровне 65 и выше, сгибается вниз и образует тупик с ADXR-линией.

      2., колодцы

      После длительного роста, если в краткосрочной перспективе соответствуют следующим условиям, это означает, что краткосрочные вершины были обнаружены, и может произойти краткосрочная коррекция или реверсия.

      • 1, Ди-линия, которая представляет собой силу пустого головного мозга, находится ниже 10, на низком уровне и кривой вверх, Ди-линия + - на высоком уровне.

      • 2, ADX-линия, представляющая тенденцию, на высоком уровне 65 и выше, сгибается вниз и образует тупик с ADXR-линией.

      Третье, подъем.

      После некоторого времени колебаний, когда четыре линии DMI пересекаются вниз, вдруг появляется длинная к-линия, которая увеличивается более чем на 5%. В течение двух дней DI+ проходит через DI-линию, ADX-линию и ADXR-линию, что означает, что будет формироваться новая тенденция к росту.


Связанные

Больше

Одинокий человекКак будто бы знакомы

ВьетнамскийВ этом случае, если вы хотите, чтобы ваш бизнес был более эффективным, вы можете написать стратегию определения трендов на основе DMI.

Маленькие мечтыХорошо, есть время написать пример.