PU-METALのブログ

日銀にはウンザリなので外貨専になりました

Do Loop構文

デスクトプーに有った過去システム探訪も一段落し、日足ブレイクシステムの成功に気をよくして4時間足突入

ただ日足ブレイクEAこの糞レンジで3連敗中。過去15年の最大連敗がなのにも拘わらずwwwまあ平均が2なのですが

確定申告は後回しで今週中にやってやるぞと

 

Do Loop構文で昨日無限Loopにはまり今日って事で完成形置いておこう

いつものようにFor  Eachで上から見ていくわけですが、これは日足と違って決済が足をまたぐ仕様にしたので、エントリーしたらその時間を記録しDo Loopを使って何時にいくらで決済されたかを探しに行きますの。そんなプロシージャ

 

シートtest

f:id:kohnodechu:20170308110524p:plain

 

シートsai

f:id:kohnodechu:20170308110554p:plain

 

Sub 最適化準備()
Dim Gyo As Long
Dim Rp As Range 'rpは日付
Dim Rq As Range
Dim P As Long, Q As Long '損益を探りに行くやつ
Dim St As Worksheet, Ss As Worksheet
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set St = Worksheets("test")
Set Ss = Worksheets("sai")
For Each Rp In Selection
With Rp
If .Offset(, 2).Value <> .Offset(-1, 2).Value Then
Set Rq = Ss.Range("a" & Ss.Range("a1048576").End(xlUp).Row + 1)
Rq.Value = .Value
Rq.Offset(, 1).Value = .Offset(, 2).Value
Rq.Offset(, 2).Value = .Offset(, 13).Value
Rq.Offset(, 3).Value = .Offset(, 14).Value
Rq.Offset(, 4).Value = .Offset(, 15).Value
Rq.Offset(, 5).Value = Sgn(.Offset(, 12).Value - .Offset(, 11).Value)
End If
If .Offset(, 16).Value = 0 And .Offset(, 16).Value <> "" Then
Rq.Offset(, 6).Value = .Offset(, 1).Value / 100
P = 1
Do While .Offset(P, 16).Value = ""
P = P + 1
Loop
Rq.Offset(, 7).Value = .Offset(P, 1).Value / 100
Rq.Offset(, 8).Value = .Offset(P, 16).Value * 100
End If
If .Offset(, 17).Value = 0 And .Offset(, 17).Value <> "" Then
Rq.Offset(, 9).Value = .Offset(, 1).Value / 100
Q = 1
Do While .Offset(Q, 17).Value = ""
Q = Q + 1
Loop
Rq.Offset(, 10).Value = .Offset(Q, 1).Value / 100
Rq.Offset(, 11).Value = .Offset(Q, 17).Value * 100
End If
End With
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub