DMI
Posted: under ├ DMI. Tags: ADX, ADXR, DMI, VBA, トレンド, 計算方法
Â
Â
DMIã«ã¤ã„ã¦ã§ã™ã€‚
 
DMIã¯Directional Movment Indexã®ç•¥ã§ã€ç›¸å ´ã«ãƒˆãƒ¬ãƒ³ãƒ‰ãŒã‚ã‚‹ã‹ã©ã†ã‹ã€ã©ã®ç¨‹åº¦æ–¹å‘性をæŒã£ã¦ã„ã‚‹ã‹ã‚’è¡¨ã™æŒ‡æ¨™ã§ã€ãƒã‚¦ã‚½ã‚¯è¶³ã®ã¯ã‚‰ã¿ç·šã®åˆ¤æ–ãªã©ã‚‚使用ã—ã¦è¨ˆç®—ã•れã€Â±DIã€ADXã€ADXRã®4本ã®ç·šã‹ã‚‰ãªã‚Šã¾ã™ã€‚
 
>>計算å¼
ã¯ã‚‰ã¿ç·šã®å ´åˆã€€+DM=0 -DM=0
ã¯ã‚‰ã¿ç·šä»¥å¤– ○ç¾åœ¨ã®é«˜å€¤-ç›´å‰ã®é«˜å€¤ã€€ï¼žã€€ç›´å‰ã®å®‰å€¤-ç¾åœ¨ã®å®‰å€¤ã€€ãªã‚‰
           +DM=ç¾åœ¨ã®é«˜å€¤-ç›´å‰ã®é«˜å€¤
           -DM=0
         ○ç¾åœ¨ã®é«˜å€¤-ç›´å‰ã®é«˜å€¤ã€€ï¼œã€€ç›´å‰ã®å®‰å€¤-ç¾åœ¨ã®å®‰å€¤ã€€ãªã‚‰
           +DM=0
           -DM=ç›´å‰ã®å®‰å€¤-ç¾åœ¨ã®å®‰å€¤
         ○ç¾åœ¨ã®é«˜å€¤-ç›´å‰ã®é«˜å€¤ã€€ï¼ã€€ç›´å‰ã®å®‰å€¤-ç¾åœ¨ã®å®‰å€¤ã€€ãªã‚‰
           +DM=0
           -DM=0
tr = ç¾åœ¨ã®é«˜å€¤-ç¾åœ¨ã®å®‰å€¤ã€ç¾åœ¨ã®é«˜å€¤-ç›´å‰çµ‚値ã€ç›´å‰ã®çµ‚値-ç¾åœ¨ã®çµ‚値ã®ã†ã¡ã€€ã€€ã€€
    一番大ãã„ã‚‚ã®
+DI = éŽåŽ»X本ã®+DMã®å¹³å‡/éŽåŽ»X本ã®trã®å¹³å‡
-DI = éŽåŽ»X本ã®-DMã®å¹³å‡/éŽåŽ»X本ã®trã®å¹³å‡
ADX = DXã®X本å˜ç´”å¹³å‡
ADXR = DXã®2X 本å˜ç´”移動平å‡
※DX = |+DI-(-DI)| / |+DI+(-DI)|  (|・・・|ã¯çµ¶å¯¾å€¤ï¼‰
Â
Â
>>判æ–
ADX,ADXRã¯ãƒˆãƒ¬ãƒ³ãƒ‰ã®å¤§ãã•ã€1æ–¹å‘ã¸ã®ç§»å‹•ã®å¤§ãã•を表ã—ã€Â±DIã¯ä¸Šæ˜‡æ–¹å‘ã€ä¸‹é™æ–¹å‘ã¸ã®ãƒˆãƒ¬ãƒ³ãƒ‰ã®å¼·ã•を示ã—ã¾ã™ã€‚
ç›¸å ´ã®ä¸Šæ˜‡æ™‚ã¯ã€+DIã¯ä¸Šæ˜‡ã€ADXã€ADXRã¯ãã®ä¸Šæ˜‡ã®å‹¢ã„ã¨æ¯”例ã—ã€-DIã¯ä¸‹é™ã€ä¸‹é™æ™‚ã¯-DIãŒä¸Šæ˜‡ã—ADXã€ADXRã¯ãã®ä¸‹é™ã®å‹¢ã„ã¨æ¯”例ã—ã€+DIã¯ä¸‹é™ã™ã‚‹ã¨ã„ã†å½¢ã«ãªã‚Šã¾ã™ã€‚
売買ã®åˆ¤æ–ã¨ã—ã¦ã¯ã€+DIã¨-DIã®ã‚´ãƒ¼ãƒ«ãƒ‡ãƒ³ã‚¯ãƒã‚¹ã§è²·ã„ã€ãƒ‡ãƒƒãƒ‰ã‚¯ãƒã‚¹ã§å£²ã‚Šã€ã¾ãŸã¯ã‚¯ãƒã‚¹å¾Œã€ä¸‹é™ä¸ã®Â±DIã¨ADXã‚„ADXRã¨ã®ã‚¯ãƒã‚¹ã«ã¦ã‚ˆã‚Šæ£ç¢ºãªãƒã‚¤ãƒ³ãƒˆã‚’探るã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚
 
 
>>ãƒãƒ£ãƒ¼ãƒˆ
< ±DI:14 ADX:9 ADXR:9 >
(水色:+DI 赤:-DI 黄色:ADX 緑:ADXR)
Â
< ±DI:26 ADX:31 ADXR:31 >
(水色:+DI 赤:-DI 黄色:ADX 緑:ADXR)
 
 
>>VBAコード
‘※ エクセルã®1列目(A列)ã«è¡Œç•ªå·ã€2列目(B列)ã«æ—¥æ™‚ã€
‘※ 3列目(C列)~6列目(F列)ã«å§‹å€¤ãƒ»é«˜å€¤ãƒ»å®‰å€¤ãƒ»çµ‚値
‘********************************
‘ di :±DIã®æŽ¡ç”¨æœ¬æ•°
‘ adx :ADXã®æŽ¡ç”¨æœ¬æ•°
‘ adxr :ADXRã®æŽ¡ç”¨æœ¬æ•°
‘ num:ç¾åœ¨ã®è¡Œ
‘ cell_dmp:+DM計算値書込ã¿åˆ—
‘ cell_dmm:-DM計算値書込ã¿åˆ—
‘ cell_tr:tr計算値書込ã¿åˆ—
‘ cell_dip:+DI計算値書込ã¿åˆ—
‘ cell_dim:-DI計算値書込ã¿åˆ—
‘ cell_dx:DX計算値書込ã¿åˆ—
‘ cell_adx:ADX計算値書込ã¿åˆ—
‘ cell_adxr:ADXR計算値書込ã¿åˆ—
‘********************************
If Cells(num - 1, 4) < Cells(num, 4) Then
   f1 = Cells(num, 4) - Cells(num - 1, 4)
Else
   f1 = 0
End If
If Cells(num - 1, 5) > Cells(num, 5) Then
   f2 = Abs(Cells(num, 5) - Cells(num - 1, 5))
Else
   f2 = 0
End If
If f1 < f2 Then Cells(num, cell_dmp) = 0 Else Cells(num, cell_dmp) = f1
If f1 > f2 Then Cells(num, cell_dmm) = 0 Else Cells(num, cell_dmm) = f2
Cells(num, cell_tr) = Application.Max(Cells(num, 4) - Cells(num, 5), _
                     Cells(num, 4) - Cells(num - 1, 6), Cells(num - 1, 6) _
                     - Cells(num, 5))
If num < 2 + di Then GoTo offend
adip = Application.Average(Range(Cells(num - (di - 1), cell_dmp), _
      Cells(num, cell_dmp)))
adim = Application.Average(Range(Cells(num - (di - 1), cell_dmm), _
      Cells(num, cell_dmm)))
atr = Application.Average(Range(Cells(num - (di - 1), cell_tr), _
      Cells(num, cell_tr)))
Cells(num, cell_dip) = adip / atr * 100
Cells(num, cell_dim) = adim / atr * 100
Cells(num, cell_dx) = Abs(Cells(num, cell_dip) - Cells(num, cell_dim)) _
                     / (Cells(num, cell_dip) + Cells(num, cell_dim)) * 100
If num < 2 + di + adx Then Exit Sub
Cells(num, cell_adx) = Application.Average _
                      (Range(Cells(num - (adx - 1), cell_dx), Cells(num, cell_dx)))
If num < 2 + di + adx + adxr Then Exit Sub
Cells(num, cell_adxr) = (Cells(num - (adxr - 1), cell_adx) + _
                       Cells(num, cell_adx)) / 2
 
 
 
| <PR> |
![]() |
| <PR> |



