ExcelVBAで一目均衡表を計算する方法
はじめに
ExcelのVBAを使用して、一目均衡表を計算する方法について説明します。一目均衡表は、日本の伝統的なテクニカル分析手法で、トレンドの方向性や転換点を視覚的に把握するのに役立ちます。
一目均衡表とは?
一目均衡表(Ichimoku Kinko Hyo)は、1930年代に日本の投資家である細田悟一によって開発されました。この指標は、株価の動きを一目で理解できるように設計されており、以下の5つの主要なラインで構成されています。
- 転換線(Tenkan-sen)
- 基準線(Kijun-sen)
- 先行スパン1(Senkou Span A)
- 先行スパン2(Senkou Span B)
- 遅行スパン(Chikou Span)
ExcelVBAで一目均衡表を計算する手順
1. データの準備
まず、Excelシートに株価データを用意します。必要なデータは、日付、始値、高値、安値、終値です。
2. 転換線の計算
転換線は、過去9期間の高値と安値の平均です。以下のVBAコードを使用して、転換線を計算します。
Sub CalculateTenkanSen()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim i As Integer
For i = 10 To ws.Cells(Rows.Count, 1).End(xlUp).Row
ws.Cells(i, 7).Value = (Application.WorksheetFunction.Max(ws.Range("C" & i - 9 & ":C" & i)) + _
Application.WorksheetFunction.Min(ws.Range("D" & i - 9 & ":D" & i))) / 2
Next i
End Sub
3. 基準線の計算
基準線は、過去26期間の高値と安値の平均です。以下のコードで基準線を計算します。
Sub CalculateKijunSen()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim i As Integer
For i = 27 To ws.Cells(Rows.Count, 1).End(xlUp).Row
ws.Cells(i, 8).Value = (Application.WorksheetFunction.Max(ws.Range("C" & i - 26 & ":C" & i)) + _
Application.WorksheetFunction.Min(ws.Range("D" & i - 26 & ":D" & i))) / 2
Next i
End Sub
4. 先行スパン1と先行スパン2の計算
先行スパン1と先行スパン2は、転換線と基準線の平均、および過去52期間の高値と安値の平均です。
Sub CalculateSenkouSpans()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim i As Integer
For i = 27 To ws.Cells(Rows.Count, 1).End(xlUp).Row
ws.Cells(i + 26, 9).Value = (ws.Cells(i, 7).Value + ws.Cells(i, 8).Value) / 2
ws.Cells(i + 26, 10).Value = (Application.WorksheetFunction.Max(ws.Range("C" & i - 26 & ":C" & i)) + _
Application.WorksheetFunction.Min(ws.Range("D" & i - 26 & ":D" & i))) / 2
Next i
End Sub
5. 遅行スパンの計算
遅行スパンは、終値を26期間前にシフトしたものです。
Sub CalculateChikouSpan()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim i As Integer
For i = 27 To ws.Cells(Rows.Count, 1).End(xlUp).Row
ws.Cells(i - 26, 11).Value = ws.Cells(i, 5).Value
Next i
End Sub
まとめ
以上の手順で、ExcelのVBAを使用して一目均衡表を計算することができます。この指標を利用して、トレンドの方向性や転換点を視覚的に把握し、投資判断に役立ててください。