avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

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

Được tạo ra trong: 2019-07-03 14:03:53, cập nhật trên: 2023-10-25 20:00:58
comments   9
hits   4768

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

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

Giới thiệu chỉ số

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

Gần đây, nhiều bạn bè trong giới định lượng đã tư vấn cho tôi cách sử dụng chỉ báo DMI trên Nền tảng giao dịch định lượng Inventor. Lúc đầu tôi nghĩ đây là một câu hỏi đơn giản nên tôi đã mở tài liệu API để tìm chức năng chỉ báo này. Tôi thấy rằng chỉ báo này không có trong thư viện chỉ báo talib phổ quát. Tôi nhanh chóng tìm kiếm trên Baidu và Zhihu… và sau rất nhiều nỗ lực, tôi đã tìm thấy một số thông tin về các chỉ số. Tôi thấy chỉ số này gồm có bốn chỉ số. Thuật toán không phức tạp lắm nên tôi chỉ viết theo thuật toán trong tài liệu.

Địa chỉ ví dụ: https://www.fmz.com/strategy/154050

  • Vui lòng đăng mã nguồn chỉ báo
  // 指标函数
  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]
  }
  • sự tương phản

Sử dụng Thư viện vẽ đường định lượng Inventor, bạn có thể dễ dàng vẽ biểu đồ và so sánh với DMI trên các biểu đồ khác

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

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

So sánh các giá trị chỉ báo trên một số Kbar, các giá trị về cơ bản là nhất quán (có độ lệch làm tròn nhỏ).

  • sử dụng

Sử dụng trực tiếp hàm DMI (chẳng hạn như phương thức được gọi trong hàm chính trong ví dụ), truyền dữ liệu K-line và đặt các tham số chỉ báo, thường là 14. Dữ liệu trả về từ hàm này là một mảng hai chiều, biểu diễn bốn dòng.

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

Trong bốn đường của chỉ báo DMI, DI- và DI+ là các chỉ báo dài hạn và ngắn hạn, phản ánh sức mạnh của cả hai phía dài hạn và ngắn hạn. ADX và ADXR là một cặp đường chỉ báo được sử dụng cùng nhau. Chúng là các chỉ báo xu hướng phản ánh xu hướng và hướng đi của thị trường hiện tại.

DI+, giá trị chỉ báo càng cao thì lực mua trên thị trường hiện tại càng mạnh và ngược lại. DI-, chỉ số ngược lại. DI+ và DI- thường đan xen vào nhau và các giá trị càng gần nhau thì khả năng thị trường rơi vào thế bế tắc củng cố càng cao. Ngược lại, nó chỉ ra rằng xu hướng này đang mạnh lên.

  • Tín hiệu

    1. Tìm đáy

    Sau một thời gian dài suy giảm, nếu các điều kiện sau được đáp ứng trong ngắn hạn, điều đó có nghĩa là đáy ngắn hạn đã được tìm thấy và có thể xảy ra sự phục hồi hoặc đảo chiều quá bán.

      1. Đường DI+, biểu thị sức mạnh tăng giá, nằm dưới mức 10, hướng lên trong vị thế quá bán và đường DI- ở mức cao.
      1. Đường ADX biểu thị xu hướng ở vị trí cao hơn mức 65, hướng xuống và tạo thành đường cắt tử thần với đường ADXR.
    1. Khám phá đỉnh cao

    Sau một đợt tăng dài hạn, nếu các điều kiện sau được đáp ứng trong ngắn hạn, điều đó có nghĩa là đỉnh ngắn hạn đã được tìm thấy và có thể xảy ra sự điều chỉnh hoặc đảo ngược ngắn hạn.

      1. Đường DI-, biểu thị lực bán khống, nằm dưới mức 10, ở mức thấp và đang hướng lên trên, trong khi đường DI+ ở mức cao.
      1. Đường ADX biểu thị xu hướng ở vị trí cao hơn mức 65, hướng xuống và tạo thành đường cắt tử thần với đường ADXR.
    1. Bắt đầu

    Sau một thời gian biến động, bốn đường chỉ báo DMI đan xen ở mức thấp, sau đó đột nhiên xuất hiện một nến dương dài với khối lượng tăng hơn 5%. Đường DI+ cắt đường DI-, đường ADX và đường ADXR liên tục trong vòng hai ngày, cho thấy xu hướng tăng mới sắp hình thành. Bạn có thể mua khi đường DI+ cắt đường chỉ báo cuối cùng.