Schaff Trend Cycle(STC)
Posted: under ├ SchaffTrendCycle. Tags: Schaff Trend Cycle, STC, VBA, 計算方法
Â
Â
Schaff Trend Cycle(STC)ã«ã¤ã„ã¦ã§ã™ã€‚
 
STCã¯ç°¡å˜ã«è¨€ã†ã¨MACDã‚’2回ストキャス化ã—ãŸæŒ‡æ¨™ãªã®ã§ã™ãŒã€è¨ˆç®—å¼ã‚„ãã®æŒ‡æ¨™ãã®ã‚‚ã®ã®æƒ…å ±ãŒãƒãƒƒãƒˆä¸Šç‰ã«ã‚‚å°‘ãªãã€è¨ˆç®—å¼ã®ç¢ºç«‹ã‚„自動売買システムUGã¸ã®å®Ÿè£…ã«è‹¦åŠ´ã—ãŸã“ã¨ã‚’覚ãˆã¦ã„ã¾ã™ã€‚
 
英文ã®è¨ˆç®—方法を掲載ã—ãŸPDFファイルを見ãªãŒã‚‰ã€è©¦è¡ŒéŒ¯èª¤ã®ä¸Šã€è¦‹ãŸç›®ã¯STCã®ãƒ©ã‚¤ãƒ³ã¨ãªã£ã¦ã„ã¾ã™ãŒã€å®Ÿéš›ã®ã¨ã“ã‚計算å¼ãªã©ã“れã§ã‚ã£ã¦ã„ã‚‹ã®ã‹ã©ã†ã‹ã¯ç¢ºèªã™ã‚‹ã™ã¹ãŒãªã„ã®ãŒç¾çжã§ã™ã€‚
 
ã§ã™ã®ã§ã€ã“ã“ã§ã¯UGã«å®Ÿè£…ã—ã¦ã„ã‚‹å†…å®¹ã«æ²¿ã£ã¦æŽ²è¼‰ã•ã›ã¦ã„ãŸã ãã¾ã™ã®ã§ã€ä¸Šè¨˜ã®ã€ã€Œæ£ç¢ºã§ã¯ãªã„ã‹ã‚‚ã—れãªã„ã€ã¨ã„ã†ã“ã¨ã‚’ã”考慮ãã ã•ã„。
Â
Â
>>計算å¼ï¼ˆNã¯è¶³æ•°ï¼‰
 
計算方法ã§ã™ãŒã€ã¾ãšMACDを計算ã—ã¾ã™ã€‚
MACDã¯ã€æŒ‡æ•°å¹³æ»‘移動平å‡ç·šï¼ˆEMA)ã‹ã‚‰è¨ˆç®—ã•れる指標ã§ä¸‹è¨˜è¨ˆç®—å¼ã«ã¦æ±‚ã‚られã¾ã™ã€‚
 
EMA(x1) = ç›´å‰EMA(x1) + ( ( 終値 – ç›´å‰EMA(x1) ) * 2 / ( 1 + x1 )
※最åˆã®ãƒ‡ãƒ¼ã‚¿ã®ã¿x1ã®å˜ç´”移動平å‡
 
EMA(x2) = ç›´å‰EMA(x2) + ( ( 終値 – ç›´å‰EMA(x2) ) * 2 / ( 1 + x2 )
※最åˆã®ãƒ‡ãƒ¼ã‚¿ã®ã¿x2ã®å˜ç´”移動平å‡
 
MACD = EMA(x1) – EMA(x2)
 
ã“れã§x1ã¨x2ã®MACDãŒè¨ˆç®—ã•れã¾ã™ã€‚
 
次ã«ã€MACDã®ã‚¹ãƒˆã‚ャスティクス化ã§ã™ãŒã€ã‚¹ãƒˆã‚ャスティクスã¯ä¸€å®šæœŸé–“å†…ã®æœ€å¤§å€¤ã€æœ€å°å€¤ã‚’計算ã•れã¾ã™ã€‚
 
STCã§ä½¿ç”¨ã™ã‚‹ã®ã¯ã€MACDをストã‚ャスティクス化ã—ãŸå ´åˆã®%Kã®ãƒ‡ãƒ¼ã‚¿ã¾ã§ã§ã™ã®ã§ã€ã“ã“ã§ã¯%Kã®è¨ˆç®—å¼ã®ã¿ã‚’掲載ã—ã¦ã„ã¾ã™ã€‚
 
%K(m) = ( MACD – Min1(x3) ) / ( Max1(x3) – Min1(x3) ) * 100
Min1(x3) = x3本ã®MACDã®æœ€å°å€¤
Max1(x3) = x3本ã®MACDã®æœ€å¤§å€¤
 
MACDã®%KåŒ–ã®æ¬¡ã«ã€PFã¨ã„ã†å€¤ã‚’計算ã—ã¾ã™
 
PF1 = ç›´å‰PF1 + ( 0.5 * ( %K(m) – ç›´å‰PF1 ) )
※最åˆã®ãƒ‡ãƒ¼ã‚¿ã®ã¿ã€€PF1 = %K(m)
 
次ã«ã€è¨ˆç®—ã—ãŸPFã‚’ã‚‚ã†ä¸€åº¦ã‚¹ãƒˆã‚ャスティクスã®%K化ã—ã€ä¸Šè¨˜PFã¨åŒã˜è¨ˆç®—を行ã†ã“ã¨ã§STCãŒè¨ˆç®—ã•れã¾ã™ã€‚
 
%K(PF1) = ( PF1 – Min2(x3) ) / ( Max2(x3) – Min2(x3) ) * 100
Min2(x3) = x3本ã®PF1ã®æœ€å°å€¤
Max2(x3) = x3本ã®PF1ã®æœ€å¤§å€¤
 
PF2 = ç›´å‰PF2 + ( 0.5 * ( %K(PF1) – ç›´å‰PF2 ) )
※最åˆã®ãƒ‡ãƒ¼ã‚¿ã®ã¿ã€€PF = %K(PF1)
 
計算ã•れãŸF2ã®å€¤ãŒSTCã®å€¤ã¨ãªã‚Šã¾ã™ã€‚
 
>>ãƒãƒ£ãƒ¼ãƒˆ
STC(23,50,10)
 
 
>>VBAコード
 
‘※ エクセルã®1列目(A列)ã«è¡Œç•ªå·ã€2列目(B列)ã«æ—¥æ™‚ã€
‘※ 3列目(C列)~6列目(F列)ã«å§‹å€¤ãƒ»é«˜å€¤ãƒ»å®‰å€¤ãƒ»çµ‚値
‘********************************
‘ ema_1 :指数平滑1ã®æŽ¡ç”¨æœ¬æ•°
‘ ema_2 :指数平滑2ã®æŽ¡ç”¨æœ¬æ•°
‘ stc1 :STCã®æŽ¡ç”¨æœ¬æ•°
‘ num:ç¾åœ¨ã®è¡Œ
‘ r_now:ç¾åœ¨å€¤
‘ cell_ema1:指数平滑線1計算値書込ã¿åˆ—
‘ cell_ema2:指数平滑線2計算値書込ã¿åˆ—
‘ cell_macd:MACD計算値書込ã¿åˆ—
‘ cell_v1:MACDã®ï½½ï¾„キャス化1回目計算用数値書込ã¿åˆ—
‘ cell_v2:MACDã®ï½½ï¾„キャス化1回目計算値入力列
‘ cell_v3:MACDã®ï½½ï¾„キャス化2回目計算用数値書込ã¿åˆ—
‘ cell_STC:MACDã®ï½½ï¾„キャス化2回目計算値(=STC)入力列
‘********************************
‘—–ema1
If num + 2 = ema_1 Then
   Cells(num, cell_ema1) = Application.WorksheetFunction. _
   Average(.Range(Cells(num - (ema_1 - 1), 5), Cells(num, 5)))
End If
If num + 2 > ema_1 Then
   Cells(num, cell_ema1) = Cells(num - 1, cell_ema1) + _
   ((r_now - Cells(num - 1, cell_ema1)) * 2 / (ema_1 + 1))
End If
‘—–ema2
If num + 2 = ema_2 Then
   Cells(num, cell_ema2) = Application.WorksheetFunction. _
   Average(.Range(Cells(num - (ema_2 - 1), 5), Cells(num, 5)))
End If
If num + 2 > ema_2 Then
   Cells(num, cell_ema2) = Cells(num - 1, cell_ema2) + _
   ((r_now - Cells(num - 1, cell_ema2)) * 2 / (ema_2 + 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
‘—-Value1,2
If num - 2 >= ema_2 + stc1 - 1 _
And Cells(num - (stc1 - 1), cell_macd) <> “” Then
   v1_1 = Application.Min _
   (.Range(Cells(num - (stc1 - 1), cell_macd), Cells(num, cell_macd)))
   v1_2 = Application.Max _
   (.Range(Cells(num - (stc1 - 1), cell_macd), Cells(num, cell_macd))) - v1_1
   ‘—-flac1,PF
   If v1_2 > 0 Then Cells(num, cell_v1) = _
   ((Cells(num, cell_macd) - v1_1) / v1_2) * 100 _
   Else Cells(num, cell_v1) = Cells(num - 1, cell_v1)
   If Cells(num - 1, cell_v1) = “” And Cells(num, cell_v1) <> “” Then
       Cells(num, cell_v2) = Cells(num, cell_v1)
   Else
       If Cells(num, cell_v1) <> “” Then Cells(num, cell_v2) = _
       Cells(num - 1, cell_v2) + (0.5 * (Cells(num, cell_v1) - _
       Cells(num - 1, cell_v2)))
   End If
   If Cells(num, cell_v1) = “” Then
       xxxxx = 1
   End If
End If
‘—-Value3,4
If num - 2 >= ema_2 + stc1 + stc1 - 1 _
And Cells(num - (stc1 - 1), cell_v2) <> “” Then
   v1_3 = Application.Min _
   (.Range(Cells(num - (stc1 - 1), cell_v2), Cells(num, cell_v2)))
   v1_4 = Application.Max _
   (.Range(Cells(num - (stc1 - 1), cell_v2), Cells(num, cell_v2))) - v1_3
   ‘—-flac2,PFf
   If v1_4 > 0 Then Cells(num, cell_v3) = _
   ((Cells(num, cell_v2) - v1_3) / v1_4) * 100 _
   Else Cells(num, cell_v3) = Cells(num - 1, cell_v3)
   If Cells(num - 1, cell_v3) = “” And Cells(num, cell_v3) <> “” Then
       Cells(num, cell_STC) = Cells(num, cell_v3)
   Else
       If Cells(num, cell_v3) <> “” Then _
       Cells(num, cell_STC) = Cells(num - 1, cell_STC) + _
       (0.5 * (Cells(num, cell_v3) - Cells(num - 1, cell_STC)))
   End If
End If
 
 
| <PR> |
![]() |
| <PR> |



