Tài nguyên đang được tải lên... tải...

Tính toán và áp dụng các chỉ số DMI

Tác giả:Những nhà phát minh định lượng - những giấc mơ nhỏ, Tạo: 2019-07-03 14:03:53, Cập nhật: 2023-10-25 20:00:58

img

Tính toán và áp dụng các chỉ số DMI

Thông tin về chỉ số

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

    Gần đây, nhiều người trong giới định lượng đã hỏi tôi cách sử dụng chỉ số DMI trên nền tảng giao dịch định lượng của nhà phát minh. Tôi bắt đầu nghĩ rằng đó là một vấn đề rất đơn giản, tôi tự mở tài liệu API để tìm kiếm hàm chỉ số này. Tôi thấy rằng không có chỉ số này trong kho talib toàn năng. Chúng tôi đã phát hiện ra rằng chỉ số này được tạo thành từ một sự kết hợp của bốn chỉ số, và các thuật toán không quá phức tạp, chỉ cần bắt đầu viết theo thuật toán trên tài liệu.

    Ví dụ:https://www.fmz.com/strategy/154050

  • Hãy đăng mã nguồn của chỉ số

    // 指标函数
    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]
    }
    
  • So sánh

    Sử dụng thư viện lớp vạch vẽ được định lượng bởi nhà phát minh, dễ dàng vẽ biểu đồ để so sánh DMI trên các biểu đồ khác

    img

    img

    Khi so sánh các chỉ số trên một số Kbar, các giá trị gần như đồng nhất (một chút sai lệch 4/5).

  • Sử dụng

    Sử dụng trực tiếp hàm DMI (ví dụ như cách gọi hàm main trong ví dụ) để truyền dữ liệu đường K và đặt tham số chỉ số, thường là 14. Dữ liệu mà hàm trả về là một mảng hai chiều, đại diện cho bốn đường.

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

    Trong chỉ số DMI, bốn dòng này, trong đó DI-, DI+ là chỉ số đa không gian, thể hiện sức mạnh của cả hai bên đa không gian. ADX và ADXR là một đường chỉ số được sử dụng cùng nhau, là một chỉ số xu hướng, thể hiện xu hướng và hướng của thị trường hiện tại.

    DI +, các chỉ số số cao hơn, cho thấy thị trường hiện tại mạnh hơn, ngược lại, yếu hơn. DI-, chỉ số ngược lại. DI + DI - thường được đan xen, các giá trị gần nhau hơn đại diện cho thị trường đang trong tình trạng bế tắc tổng thể; ngược lại, điều này cho thấy tăng trưởng theo xu hướng.

    • tín hiệu

      Tìm đáy.

      Sau một thời gian dài giảm, nếu điều kiện sau đây được đáp ứng trong thời gian ngắn, điều này cho thấy đường đáy ngắn hạn đã được phát hiện và có thể có sự phục hồi hoặc đảo ngược vượt quá mức giảm.

      • Đường DI +, đại diện cho lực đa đầu, dưới 10, ở vị trí quá giảm, và đường DI ở vị trí cao.

      • 2, đường ADX đại diện cho xu hướng ở vị trí cao hơn 65, uốn cong xuống và tạo thành một cái nếp chết với đường ADXR.

      2

      Sau khi tăng trong thời gian dài, nếu trong thời gian ngắn đáp ứng các điều kiện sau đây, điều này cho thấy đỉnh ngắn hạn đã được phát hiện và có thể có sự điều chỉnh hoặc đảo ngược trong thời gian ngắn.

      • Đường DI, đại diện cho sức mạnh của đầu không, dưới 10, ở vị trí thấp và nghiêng lên, đường DI + ở vị trí cao.

      • 2, đường ADX đại diện cho xu hướng ở vị trí cao hơn 65, uốn cong xuống và tạo thành một cái nếp chết với đường ADXR.

      3/ Tăng trưởng

      Sau một thời gian biến động, bốn đường chỉ số DMI xoay quanh nhau ở mức thấp, sau đó đột ngột xuất hiện đường k dài tăng hơn 5%, và sau đó là đường k dài. Đường DI + sẽ đi qua đường DI, đường ADX và đường ADXR liên tục trong hai ngày, đại diện cho xu hướng tăng mới sẽ hình thành. Đường DI + có thể mua ngay khi đi qua đường chỉ số cuối cùng.


Có liên quan

Thêm nữa

LonelymanGiống như quen nhau

wuzhenyuvCó thể viết một chiến lược đánh giá xu hướng dựa trên DMI không?

Những nhà phát minh định lượng - những giấc mơ nhỏĐược rồi, có thời gian để viết một ví dụ.