VBA応用
覚えたコードを応用して使ってみよう!
移動平均DC売りエントリー
「VBA入門」では、移動平均線のGC(ゴールデンクロス)で、買エントリーするトレード方法を検証しましたが、これを応用して、DC(デッドクロス)で売りエントリーするトレード方法について、検証してみましょう。
サンプルプログラムを下記に示しますので、買エントリーの場合とどこが違うか、確認してみてください。
注釈に変更点が記載されています。
Sub MA売()
'5MAが50MAを下抜けたら売エントリー
'5MAが50MAを上抜けたら決済
Dim i As Long 'カウンタ変数
Dim j As Long 'カウンタ変数
Dim Bottom As Long '最下行の行数
Dim Goukei As Single 'MA計算用変数
Dim urine As Single '売値
'最下行の行数をBottomに代入
Bottom = Cells(Rows.Count, 1).End(xlUp).Row
'計算結果を表示するセルをあらかじめクリア
Range("F2:L5000").Clear
'項目名表示
Range("F1:L1") = Split("5MA,50MA,GC/DC,売買,レート,損益,累計", ",")
For j = 0 To Bottom - 51
'5MAを計算して6列目に表示
Goukei = 0
For i = j + 2 To j + 6
Goukei = Goukei + Cells(i, 5)
Next i
Cells(j + 2, 6) = Goukei / 5
'50MAを計算して7列目に表示
Goukei = 0
For i = j + 2 To j + 51
Goukei = Goukei + Cells(i, 5)
Next i
Cells(j + 2, 7) = Goukei / 50
Next j
For i = Bottom - 49 To 2 Step -1
'GC表示
If Cells(i + 1, 6) > Cells(i + 1, 7) And _
Cells(i + 2, 6) < Cells(i + 2, 7) Then
Cells(i, 8) = "GC"
End If
'DC表示
If Cells(i + 1, 6) < Cells(i + 1, 7) And _
Cells(i + 2, 6) > Cells(i + 2, 7) Then
Cells(i, 8) = "DC"
End If
Next i
'損益計算
For i = Bottom - 49 To 2 Step -1
'DCに変更
If Cells(i, 8) = "DC" Then
'urineに変更
urine = Cells(i, 2)
'エントリー売に変更
Cells(i, 9) = "エントリー売"
Cells(i, 10) = Cells(i, 2)
For j = i To 2 Step -1
'GCに変更
If Cells(j, 8) = "GC" Then
'売値 - 決済時の始値で損益計算
Cells(j, 11) = urine - Cells(j, 2)
'決済買に変更
Cells(j, 9) = "決済買"
Cells(j, 10) = Cells(j, 2)
i = j
Exit For
End If
Next j
End If
Next i
'累計
For i = Bottom - 49 To 2 Step -1
Cells(i, 12) = Cells(i, 11) + Cells(i + 1, 12)
Next i
End Sub
損益計算のところがポイントです。
売値 - 決済時の始値で損益を計算を計算します。
逆にすると、損失と利益の符号が逆転するので、ご注意ください。