Excel VBA code (technical index for trading system)

Excel VBA Source Code --- RCI

Technical code for trading system.

Sub RCI()

'''-----http://www.samurai-logic.com/
'''-----Project of Trading System Development
'''------------------------------------------------------------------
''----B列(日付)、C列(始値)、D列(高値)、E列(安値)、F列(終値)
''----
''----TextBox1に計算期間
''--------------------------------------------------------------------

Dim length1%, length2%, i&, j&
Dim DayRank(), PriceRank() As Integer, NextRank%, NextRank2%, Temp!, Temp2!

Application.ScreenUpdating = False

Worksheets("RCI").Activate

length1 = CInt(ActiveSheet.TextBox1.Value)

Range("H3") = "RCI:" & length1

Range("H5:H5000").ClearContents

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

ReDim DayRank(length1), PriceRank(length1)

For i = length1 + 5 To LastRow

 NextRank = 0: NextRank2 = 0
 
 For j = 1 To length1
  DayRank(length1 - j + 1) = j
  PriceRank(j) = WorksheetFunction.Rank(CDbl(Range("F" & i - _
  (length1) + j).Value), Range("F" & i, "F" & i - (length1) + 1))
 Next j

 Temp2 = 0
 For j = 1 To length1
  Temp = (Abs(DayRank(j) - PriceRank(j))) ^ 2
  Temp2 = Temp2 + Temp
 Next j
 
 Temp = (1 - (6 * Temp2) / (length1 * (length1 ^ 2 - 1))) * 100
 
 If Temp >= -100 Then
 ''---終値の価格が同じ日がある場合計算上-100
 ''---以下になる可能性があるので、-100以下は-100とする
 ''---期間が短く、価格が動かない場合にたまに見られる。
  Cells(i, 8).Value = Temp
 Else: Cells(i, 8).Value = -100
 End If
 
Next i
 
Range("H5", "H" & LastRow).NumberFormatLocal = "0.00"
Erase DayRank
Erase PriceRank
Application.ScreenUpdating = True
End Sub