Excel VBA code (technical index for trading system)

Excel VBA Source Code

Technical code for trading system.

Sub BB()

'''-----http://www.samurai-logic.com/
'''-----Project of Trading System Development
'''------------------------------------------------------------------
''----B列(日付)、C列(始値)、D列(高値)、E列(安値)、F列(終値)
''----
''----TextBox1に標準偏差の期間、TextBox2にMAの期間
''----TextBox3にσ値、TextBox4にずらす期間
''--------------------------------------------------------------------

Dim length1%, length2%, length3!, length4%, LastRow&, i&, DataLength%

 Application.ScreenUpdating = False
 
 Worksheets("BollingerBand").Activate

 LastRow = (Range("B4").End(xlDown).Row)

 length1 = CInt(ActiveSheet.TextBox1.Value)  'St.Devの期間
 length2 = CInt(ActiveSheet.TextBox2.Value)  'MAの期間
 length3 = CSng(ActiveSheet.TextBox3.Value)  'σ
 length4 = CInt(ActiveSheet.TextBox4.Value)  'ずらす期間
   
  Range("H5:I10000").ClearContents
  
  Range("H3") = "BB:" & length1 & ":" & length2
  Range("I3") = "BB:" & length3 & ":" & length4
   
  If (length1) > (length2) Then
  DataLength = length1
  Else
  DataLength = length2
  End If
 
  For i = DataLength + 4 To LastRow
   Cells(i + length4, 8).Value = _
      WorksheetFunction.StDev(Range("F" & i - length1, "F" & i)) * _
      length3 + WorksheetFunction.Average(Range("F" & i - (length2), "F" & i))
      
   Cells(i + length4, 9).Value = _
      WorksheetFunction.Average(Range("F" & i - (length2), "F" & i)) - _
      WorksheetFunction.StDev(Range("F" & i - length1, "F" & i)) * length3
  
  Next

    Range("H5", "I" & LastRow + length4).NumberFormatLocal = "0"
    
 Application.ScreenUpdating = True
End Sub