200701
自動売買ロボット作成マニュアルを読んで
いままでは、あまりVBは使わないでやってきたので新鮮であったが、自分用にアレンジするのは、結構難しい。
検証や最適化のコードも載っているので、参考にしていきたい。
ただ、私の今までのシステムを試そうとしたが、この本だと、権利落ちとか補正していないみたいだし、
せっかく指標のマクロを作れば検証できるように成っているが、共通の売買部分が、トリプルスクリーンとは違うので、かなり改造が必要です。
検証や最適化のコードも載っているので、参考にしていきたい。
ただ、私の今までのシステムを試そうとしたが、この本だと、権利落ちとか補正していないみたいだし、
せっかく指標のマクロを作れば検証できるように成っているが、共通の売買部分が、トリプルスクリーンとは違うので、かなり改造が必要です。
自動売買ロボット作成マニュアルを読んで[勢力指数]
こちらは、勢力指数。
Sub force()
lastrow = (Range("B4").End(xlDown).Row) 'B列の一番最後の行番号を代入
Range("AU5:AV65000").ClearContents 'シートをクリーンアップ
length(1) = input_temp(10) '移動平均の期間
'指定したセルを結合し、大きな見出しをつける
Range("AU3:AV3").Select
Selection.MergeCells = True
Selection = "勢力指数"
Selection.HorizontalAlignment = xlCenter
'列に見出しをつける
Range("AU4") = "Force Index"
Range("AV4") = "EMA(" & length(1) & ")"
'勢力指数の値を算出して代入
For i = 6 To lastrow
Cells(i, 47) = (Cells(i, 6) - Cells(i - 1, 6)) * Cells(i, 7)
Next
'勢力指数のEMAの値を算出して代入
For i = length(1) + 4 To lastrow
If i = length(1) + 5 Then
Cells(i, 48) = WorksheetFunction.Average(Range("AU" & i - length(1) + 1, "AU" & i))
Else
Cells(i, 48) = Cells(i - 1, 48) + ((Cells(i, 47) - Cells(i - 1, 48)) * 2 / (1 + length(1)))
End If
Next
'セルの形式を整える
Range("AU5", "AV" & lastrow).NumberFormatLocal = "0"
End Sub
Sub force()
lastrow = (Range("B4").End(xlDown).Row) 'B列の一番最後の行番号を代入
Range("AU5:AV65000").ClearContents 'シートをクリーンアップ
length(1) = input_temp(10) '移動平均の期間
'指定したセルを結合し、大きな見出しをつける
Range("AU3:AV3").Select
Selection.MergeCells = True
Selection = "勢力指数"
Selection.HorizontalAlignment = xlCenter
'列に見出しをつける
Range("AU4") = "Force Index"
Range("AV4") = "EMA(" & length(1) & ")"
'勢力指数の値を算出して代入
For i = 6 To lastrow
Cells(i, 47) = (Cells(i, 6) - Cells(i - 1, 6)) * Cells(i, 7)
Next
'勢力指数のEMAの値を算出して代入
For i = length(1) + 4 To lastrow
If i = length(1) + 5 Then
Cells(i, 48) = WorksheetFunction.Average(Range("AU" & i - length(1) + 1, "AU" & i))
Else
Cells(i, 48) = Cells(i - 1, 48) + ((Cells(i, 47) - Cells(i - 1, 48)) * 2 / (1 + length(1)))
End If
Next
'セルの形式を整える
Range("AU5", "AV" & lastrow).NumberFormatLocal = "0"
End Sub
自動売買ロボット作成マニュアルを読んで[RAVI]
いくつか、マクロを書いてみた。
まずは、RAVIを移動平均を取得するマクロ(P.38〜63参照)を参考に作成した。
Sub RAVI()
lastrow = (Range("B4").End(xlDown).Row) 'B列の一番最後の行番号を代入
Range("AO5:AQ65000").ClearContents 'シートをクリーンアップ
length(1) = input_temp(1) '移動平均の期間 1
length(2) = input_temp(2) '移動平均の期間 2
'指定したセルを結合し、大きな見出しをつける
Range("AO3:AQ3").Select
Selection.MergeCells = True
Selection = "RAVI"
Selection.HorizontalAlignment = xlCenter
'移動平均を代入する列に見出しをつける
Range("AO4") = "MA(" & length(1) & ")"
Range("AP4") = "MA(" & length(2) & ")"
Range("AQ4") = "RAVI"
'1つ目の移動平均の値を算出して代入
For i = length(1) + 4 To lastrow
Cells(i, 41) = WorksheetFunction.Average(Range("F" & i - length(1) + 1, "F" & i))
Next
'2つ目の移動平均の値を算出して代入
For i = length(2) + 4 To lastrow
Cells(i, 42) = WorksheetFunction.Average(Range("F" & i - length(2) + 1, "F" & i))
Next
'RAVIの値を算出して代入
For i = length(2) + 4 To lastrow
Cells(i, 43) = Abs(Cells(i, 41) - Cells(i, 42)) / Cells(i, 42)
Next
'セルの形式を整える
Range("AO5", "AP" & lastrow).NumberFormatLocal = "0"
Range("AQ5", "AQ" & lastrow).NumberFormatLocal = "0.00%"
End Sub
まずは、RAVIを移動平均を取得するマクロ(P.38〜63参照)を参考に作成した。
Sub RAVI()
lastrow = (Range("B4").End(xlDown).Row) 'B列の一番最後の行番号を代入
Range("AO5:AQ65000").ClearContents 'シートをクリーンアップ
length(1) = input_temp(1) '移動平均の期間 1
length(2) = input_temp(2) '移動平均の期間 2
'指定したセルを結合し、大きな見出しをつける
Range("AO3:AQ3").Select
Selection.MergeCells = True
Selection = "RAVI"
Selection.HorizontalAlignment = xlCenter
'移動平均を代入する列に見出しをつける
Range("AO4") = "MA(" & length(1) & ")"
Range("AP4") = "MA(" & length(2) & ")"
Range("AQ4") = "RAVI"
'1つ目の移動平均の値を算出して代入
For i = length(1) + 4 To lastrow
Cells(i, 41) = WorksheetFunction.Average(Range("F" & i - length(1) + 1, "F" & i))
Next
'2つ目の移動平均の値を算出して代入
For i = length(2) + 4 To lastrow
Cells(i, 42) = WorksheetFunction.Average(Range("F" & i - length(2) + 1, "F" & i))
Next
'RAVIの値を算出して代入
For i = length(2) + 4 To lastrow
Cells(i, 43) = Abs(Cells(i, 41) - Cells(i, 42)) / Cells(i, 42)
Next
'セルの形式を整える
Range("AO5", "AP" & lastrow).NumberFormatLocal = "0"
Range("AQ5", "AQ" & lastrow).NumberFormatLocal = "0.00%"
End Sub


