As I was stepping thru the code, when the last condition was meet with the else statement it skipped to end if. where as on first check it has to check all conditions, compiler or something knows the answer, so is it worth changing the top half to run the same way as the bottom half. This code will run 4 or 5 thousand times a day but not sure what or how to figure out if the else statement is that much quicker at running.
Just stepped thru code and noticed what was happening.
If WorksheetFunction.Round(ActiveCell - WorksheetFunction.RoundDown(ActiveCell, Rnd - 1), Rnd) = T10TestDigit Then
LoopAddress = ActiveCell.Address
'OddQnt = ActiveCell
OddPrc = ActiveCell.Offset(0, 1)
If ActiveCell.Offset(0, 3) = "SELL" Then
Range("BU1").Activate
'Forgot Spread
If HowFar = "yes" Then OddPrc = OddPrc - Jump
If AmtOfTrds >= 1 Then
ActiveCell.Offset(Range("BT1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc - T1OffSet), Rnd - 1) + T1TestDigit
ActiveCell.Offset(Range("BT1"), 1) = OddPrc - T1OffSet
Range("BT1") = Range("BT1") + 1
End If
If AmtOfTrds >= 2 Then
ActiveCell.Offset(Range("BT1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc - T2OffSet), Rnd - 1) + T2TestDigit
ActiveCell.Offset(Range("BT1"), 1) = OddPrc - T2OffSet
Range("BT1") = Range("BT1") + 1
End If
If AmtOfTrds >= 3 Then
ActiveCell.Offset(Range("BT1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc - T3OffSet), Rnd - 1) + T3TestDigit
ActiveCell.Offset(Range("BT1"), 1) = OddPrc - T3OffSet
Range("BT1") = Range("BT1") + 1
End If
If AmtOfTrds >= 4 Then
ActiveCell.Offset(Range("BT1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc - T4OffSet), Rnd - 1) + T4TestDigit
ActiveCell.Offset(Range("BT1"), 1) = OddPrc - T4OffSet
Range("BT1") = Range("BT1") + 1
End If
If AmtOfTrds >= 5 Then
ActiveCell.Offset(Range("BT1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc - T5OffSet), Rnd - 1) + T5TestDigit
ActiveCell.Offset(Range("BT1"), 1) = OddPrc - T5OffSet
Range("BT1") = Range("BT1") + 1
End If
If AmtOfTrds >= 6 Then
ActiveCell.Offset(Range("BT1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc - T6OffSet), Rnd - 1) + T6TestDigit
ActiveCell.Offset(Range("BT1"), 1) = OddPrc - T6OffSet
Range("BT1") = Range("BT1") + 1
End If
If AmtOfTrds >= 7 Then
ActiveCell.Offset(Range("BT1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc - T7OffSet), Rnd - 1) + T7TestDigit
ActiveCell.Offset(Range("BT1"), 1) = OddPrc - T7OffSet
Range("BT1") = Range("BT1") + 1
End If
If AmtOfTrds >= 8 Then
ActiveCell.Offset(Range("BT1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc - T8OffSet), Rnd - 1) + T8TestDigit
ActiveCell.Offset(Range("BT1"), 1) = OddPrc - T8OffSet
Range("BT1") = Range("BT1") + 1
End If
If AmtOfTrds >= 9 Then
ActiveCell.Offset(Range("BT1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc - T9OffSet), Rnd - 1) + T9TestDigit
ActiveCell.Offset(Range("BT1"), 1) = OddPrc - T9OffSet
Range("BT1") = Range("BT1") + 1
End If
Range(LoopAddress).Select
'Else it is a buy and do the oppisite
Else
Range("BQ1").Activate
'Forgot Spread
If HowFar = "yes" Then OddPrc = OddPrc + Jump
If AmtOfTrds >= 1 Then
ActiveCell.Offset(Range("BP1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc + T1OffSet), Rnd - 1) + T1TestDigit
ActiveCell.Offset(Range("BP1"), 1) = OddPrc + T1OffSet
Range("BP1") = Range("BP1") + 1
End If
If AmtOfTrds >= 2 Then
ActiveCell.Offset(Range("BP1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc + T2OffSet), Rnd - 1) + T2TestDigit
ActiveCell.Offset(Range("BP1"), 1) = OddPrc + T2OffSet
Range("BP1") = Range("BP1") + 1
End If
If AmtOfTrds >= 3 Then
ActiveCell.Offset(Range("BP1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc + T3OffSet), Rnd - 1) + T3TestDigit
ActiveCell.Offset(Range("BP1"), 1) = OddPrc + T3OffSet
Range("BP1") = Range("BP1") + 1
End If
If AmtOfTrds >= 4 Then
ActiveCell.Offset(Range("BP1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc + T4OffSet), Rnd - 1) + T4TestDigit
ActiveCell.Offset(Range("BP1"), 1) = OddPrc + T4OffSet
Range("BP1") = Range("BP1") + 1
End If
If AmtOfTrds >= 5 Then
ActiveCell.Offset(Range("BP1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc + T5OffSet), Rnd - 1) + T5TestDigit
ActiveCell.Offset(Range("BP1"), 1) = OddPrc + T5OffSet
Range("BP1") = Range("BP1") + 1
End If
If AmtOfTrds >= 6 Then
ActiveCell.Offset(Range("BP1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc + T6OffSet), Rnd - 1) + T6TestDigit
ActiveCell.Offset(Range("BP1"), 1) = OddPrc + T6OffSet
Range("BP1") = Range("BP1") + 1
End If
If AmtOfTrds >= 7 Then
ActiveCell.Offset(Range("BP1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc + T7OffSet), Rnd - 1) + T7TestDigit
ActiveCell.Offset(Range("BP1"), 1) = OddPrc + T7OffSet
Range("BP1") = Range("BP1") + 1
End If
If AmtOfTrds >= 8 Then
ActiveCell.Offset(Range("BP1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc + T8OffSet), Rnd - 1) + T8TestDigit
ActiveCell.Offset(Range("BP1"), 1) = OddPrc + T8OffSet
Range("BP1") = Range("BP1") + 1
End If
If AmtOfTrds >= 9 Then
ActiveCell.Offset(Range("BP1"), 0) = WorksheetFunction.RoundDown(TrdAmt / (OddPrc + T9OffSet), Rnd - 1) + T9TestDigit
ActiveCell.Offset(Range("BP1"), 1) = OddPrc + T9OffSet
Range("BP1") = Range("BP1") + 1
End If
Range(LoopAddress).Select
End If
ElseIf WorksheetFunction.Round(ActiveCell - WorksheetFunction.RoundDown(ActiveCell, Rnd - 1), Rnd) = T1TestDigit Then
If ActiveCell.Offset(0, 3) = "SELL" Then
Range("BG2") = Range("BG2") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) - T1OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T1Buy, Rnd - 1) + T1TestDigit
End If
Else
Range("BF2") = Range("BF2") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) + T1OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T1Sell, Rnd - 1) + T1TestDigit
End If
End If
ElseIf WorksheetFunction.Round(ActiveCell - WorksheetFunction.RoundDown(ActiveCell, Rnd - 1), Rnd) = T2TestDigit _
And NumOfActiveTrades >= 2 Then
If ActiveCell.Offset(0, 3) = "SELL" Then
Range("BG3") = Range("BG3") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) - T2OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T2Buy, Rnd - 1) + T2TestDigit
End If
Else
Range("BF3") = Range("BF3") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) + T2OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T2Sell, Rnd - 1) + T2TestDigit
End If
End If
ElseIf WorksheetFunction.Round(ActiveCell - WorksheetFunction.RoundDown(ActiveCell, Rnd - 1), Rnd) = T3TestDigit _
And NumOfActiveTrades >= 3 Then
If ActiveCell.Offset(0, 3) = "SELL" Then
Range("BG4") = Range("BG4") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) - T3OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T3Buy, Rnd - 1) + T3TestDigit
End If
Else
Range("BF4") = Range("BF4") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) + T3OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T3Sell, Rnd - 1) + T3TestDigit
End If
End If
ElseIf WorksheetFunction.Round(ActiveCell - WorksheetFunction.RoundDown(ActiveCell, Rnd - 1), Rnd) = T4TestDigit _
And NumOfActiveTrades >= 4 Then
If ActiveCell.Offset(0, 3) = "SELL" Then
Range("BG5") = Range("BG5") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) - T4OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T4Buy, Rnd - 1) + T4TestDigit
End If
Else
Range("BF5") = Range("BF5") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) + T4OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T4Sell, Rnd - 1) + T4TestDigit
End If
End If
ElseIf WorksheetFunction.Round(ActiveCell - WorksheetFunction.RoundDown(ActiveCell, Rnd - 1), Rnd) = T5TestDigit _
And NumOfActiveTrades >= 5 Then
If ActiveCell.Offset(0, 3) = "SELL" Then
Range("BG6") = Range("BG6") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) - T5OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T5Buy, Rnd - 1) + T5TestDigit
End If
Else
Range("BF6") = Range("BF6") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) + T5OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T5Sell, Rnd - 1) + T5TestDigit
End If
End If
ElseIf WorksheetFunction.Round(ActiveCell - WorksheetFunction.RoundDown(ActiveCell, Rnd - 1), Rnd) = T6TestDigit _
And NumOfActiveTrades >= 6 Then
If ActiveCell.Offset(0, 3) = "SELL" Then
Range("BG7") = Range("BG7") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) - T6OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T6Buy, Rnd - 1) + T6TestDigit
End If
Else
Range("BF7") = Range("BF7") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) + T6OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T6Sell, Rnd - 1) + T6TestDigit
End If
End If
ElseIf WorksheetFunction.Round(ActiveCell - WorksheetFunction.RoundDown(ActiveCell, Rnd - 1), Rnd) = T7TestDigit _
And NumOfActiveTrades >= 7 Then
If ActiveCell.Offset(0, 3) = "SELL" Then
Range("BG8") = Range("BG8") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) - T7OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T7Buy, Rnd - 1) + T7TestDigit
End If
Else
Range("BF8") = Range("BF8") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) + T7OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T7Sell, Rnd - 1) + T7TestDigit
End If
End If
ElseIf WorksheetFunction.Round(ActiveCell - WorksheetFunction.RoundDown(ActiveCell, Rnd - 1), Rnd) = T8TestDigit _
And NumOfActiveTrades >= 8 Then
If ActiveCell.Offset(0, 3) = "SELL" Then
Range("BG9") = Range("BG9") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) - T8OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T8Buy, Rnd - 1) + T8TestDigit
End If
Else
Range("BF9") = Range("BF9") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) + T8OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T8Sell, Rnd - 1) + T8TestDigit
End If
End If
ElseIf WorksheetFunction.Round(ActiveCell - WorksheetFunction.RoundDown(ActiveCell, Rnd - 1), Rnd) = T9TestDigit _
And NumOfActiveTrades >= 9 Then
If ActiveCell.Offset(0, 3) = "SELL" Then
Range("BG10") = Range("BG10") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) - T9OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T9Buy, Rnd - 1) + T9TestDigit
End If
Else
Range("BF10") = Range("BF10") + 1
ActiveCell.Offset(0, 13) = ActiveCell.Offset(0, 1) + T9OffSet
If ActiveCell > LargeOrder Then
ActiveCell.Offset(0, 12) = ActiveCell
Else
ActiveCell.Offset(0, 12) = WorksheetFunction.RoundDown(ActiveCell * T9Sell, Rnd - 1) + T9TestDigit
End If
End If
End If
'End If
ActiveCell.Offset(1, 0).Activate
Cnt = 0
Loop
'Easy1 tells how many times the loop has run, needs to check and make sure _
both buys and sells were covered. If AW was true went thru and seperated buys _
and turned into sell then checks to see if there are sells if so then back to _
EasyWay lable now Easy1 = 1 so after checking all sells just steps thru to end sub
If Easy1 = 0 Then
Easy1 = 1
If Range("BA2") <> "" Then Range("BA2").Activate: GoTo EasyWay
End If
Aucun commentaire:
Enregistrer un commentaire