MACD
Posted: under ├ MACD. Tags: MACD, MACDVBAコード, MACD計算å¼, MACD計算方法
 
 
MACDã«ã¤ã„ã¦ã§ã™ã€‚
 
MACDã¯2æœ¬ã®æŒ‡æ•°å¹³æ»‘移動平å‡ç·šã®å·®ã‹ã‚‰æ±‚ã‚られã€ãƒˆãƒ¬ãƒ³ãƒ‰ã‚„乖離ãªã©ã‚’判æ–ã™ã‚‹éš›ã«ä½¿ç”¨ã•れる指標ã§ã™ã€‚
 
指数平滑移動平å‡ç·šã¯ã€å…¨æœŸé–“ã®ãƒ‡ãƒ¼ã‚¿ã‚’考慮ã—ãŸç§»å‹•å¹³å‡ç·šã§ã™ãŒã€è©³ç´°ã¯ç§»å‹•å¹³å‡ç·šã®è¨ˆç®—方法ã«ã¤ã„ã¦ã®æŠ•稿をã”覧下ã•ã„。
 
 
>>計算å¼
MACDã¯ä¸Šè¿°ã®é€šã‚Š2æœ¬ã®æŒ‡æ•°å¹³æ»‘移動平å‡ï¼ˆEMA)ã®å·®ã‹ã‚‰æ±‚ã‚られã¾ã™ã®ã§ã€ä¸‹è¨˜ãŒè¨ˆç®—å¼ã¨ãªã‚Šã¾ã™ã€‚(x,y,zã¯ãれãžã‚ŒæŽ¡ç”¨æœ¬æ•°)
 
MACD = EMA(x) - EMA(y)
 
***EMAã®è¨ˆç®—***(Nã¯æŽ¡ç”¨æœ¬æ•°)
1æœ¬ç›®ï¼ˆæœŸé–“ã®æœ€åˆã®è¨ˆç®—)ï¼ï¼ˆå½“日もå«ã‚)N本ã®çµ‚値ã®å¹³å‡
2本目以é™ï¼å‰æ—¥ã®EMA+Y×{当日終値-剿—¥ã®EMA}
※Yï¼2÷(N+1)
Â
例ãˆã°ã€3本指数平滑移動平å‡ç·šã®å ´åˆã€1本目ã¯3本ã®å˜ç´”移動平å‡ç·šã€‚
2本目以é™ã¯ã€Y=2÷(3+1)=0.5 ã§ã€ç›´å‰EMA+0.5×(当日終値-ç›´å‰EMA)
**********************************
 
MACD(シグナル) = MACDã®Z本å˜ç´”移動平å‡
MACD(OSCI) = MACD †MACD(シグナル)
Â
MACDã¨MACD(シグナル)ã®ã‚¯ãƒã‚¹ã§å£²è²·ã‚µã‚¤ãƒ³ã¨ã¿ãªã—ã¾ã™ã€‚
MACD(OSCI)ã¯ã€ä¸Šæ˜‡è»¢æ›ï¼ˆå¥½è»¢ï¼‰ã§è²·ã„サインã€ä¸‹é™è»¢æ›ï¼ˆæš—転)ã§å£²ã‚Šã‚µã‚¤ãƒ³ã¨è¦‹ã‚Œã¾ã™ã—ã€ä¸Šæ˜‡ä¸ã¯ä¸Šæ˜‡ãƒˆãƒ¬ãƒ³ãƒ‰ã®ç¶™ç¶šã€ä¸‹é™ä¸ã¯ä¸‹é™ãƒˆãƒ¬ãƒ³ãƒ‰ã®ç¶™ç¶šã¨åˆ¤æ–ã§ãã¾ã™ã€‚
 
 
>>ãƒãƒ£ãƒ¼ãƒˆ
黄色線=MACDã€èµ¤ç·š=MACD(シグナル)ã€é’ã®æ£’グラフ=MACD(OSCI)
 
 
MACDã¯ãƒ¬ãƒ¼ãƒˆã«é™ã‚‰ãšä»»æ„ã®æŒ‡æ¨™ã®å€¤ã®æŒ‡æ•°å¹³æ»‘移動平å‡ç·šã‚’2本計算ã™ã‚Œã°ã€ã©ã‚“ãªæŒ‡æ¨™ã§ã‚‚é©ç”¨ã—計算ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚
例ãˆã°ã€ä¸‹è¨˜ã¯ã‚¹ãƒˆã‚ャスティクス(%K)ã‚’MACD化ã—ãŸãƒãƒ£ãƒ¼ãƒˆã§ã™ã€‚
 
次ã¯ã€ä¸€ç›®å‡è¡¡è¡¨ã®å…ˆè¡Œã‚¹ãƒ‘ン1ã‚’MACD化ã—ãŸãƒãƒ£ãƒ¼ãƒˆã§ã™ã€‚
 
 
 
>>VBAコード
最後ã«MACDã®VBAコードã§ã™ã€‚
‘※ エクセルã®1列目(A列)ã«è¡Œç•ªå·ã€2列目(B列)ã«æ—¥æ™‚ã€
‘※ 3列目(C列)~6列目(F列)ã«å§‹å€¤ãƒ»é«˜å€¤ãƒ»å®‰å€¤ãƒ»çµ‚値
‘********************************
‘ema1 :MACDã®EMA(1)ã®æŽ¡ç”¨æœ¬æ•°
‘ema2 :MACDã®EMA(2)ã®æŽ¡ç”¨æœ¬æ•°
’sig :MACD(シグナル)ã®æŽ¡ç”¨æœ¬æ•°
‘num:ç¾åœ¨ã®è¡Œ
‘cell_ema1:EMA(1)ã®æ›¸è¾¼ã¿åˆ—
‘cell_ema2:EMA(2)ã®æ›¸è¾¼ã¿åˆ—
‘cell_macd:MACDã®æ›¸è¾¼ã¿åˆ—
‘cell_sig:MACD(シグナル)ã®æ›¸è¾¼ã¿åˆ—
‘cell_osci:MACD(OSCI)ã®æ›¸è¾¼ã¿åˆ—
‘********************************
ema1 = 5
ema2 = 10
sig = 3
cell_ema1 = 7
cell_ema2 = 8
cell_macd = 9
cell_sig = 10
cell_osci = 11
‘—–ema1
If num + 1 = ema1 Then
   Cells(num, cell_ema1) = Application.WorksheetFunction.Average _
                          (Range(Cells(num - (ema1 - 1), 6), .Cells(num, 6)))
End If
If num + 1 > ema1 Then
   Cells(num, cell_ema1) = Cells(num - 1, cell_ema1) + _
                           ((Cells(num, 6) - Cells(num - 1, cell_ema1)) * 2 _
                            / (ema1 + 1))
End If
‘—–ema2
If num + 1 = ema2 Then
   Cells(num, cell_ema2) = Application.WorksheetFunction.Average _
                          (Range(Cells(num - (ema2 - 1), 6), .Cells(num, 6)))
End If
If num + 1 > ema2 Then
   Cells(num, cell_ema2) = Cells(num - 1, cell_ema2) + _
                          ((Cells(num, 6) - Cells(num - 1, cell_ema2)) * 2 _
                           / (ema2 + 1))
End If
‘—–macd
If Cells(num - 1, cell_ema1) <> “” _
And .Cells(num - 1, cell_ema2) <> “” Then
 Cells(num, cell_macd) = Cells(num, cell_ema1) - Cells(num, cell_ema2)
End If
‘—–signal
If num >= ema2 + sig + 1 Then
 Cells(num_1, cell_sig) = Application.WorksheetFunction.Average _
                               (Range(Cells(num - (sig - 1), cell_macd), _
                               Cells(num, cell_macd)))
End If
‘—–osci
If .Cells(num, cell_macd) <> “” _
And .Cells(num, cell_sig) <> “” Then
 Cells(num_1, cell_osci) = Cells(num, cell_macd) - Cells(num, cell_sig)
End If
 
 
| <PR> |
![]() |
| <PR> |



