1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| Option Explicit
Dim lastId As Long
Dim offset As Long
Public runWhen As Double
Public Const RUN_INTERVAL_SECONDS = 1
Public Const RUN_WHAT = "Example1.ArbSearch"
Public Const P_AND_L_TRIGGER_VALUE = 50
Sub ArbSearch()
Dim symbol As String
Dim SecType As String
Dim Exchange As String
Dim BidPrice As String
Dim AskPrice As String
Dim BidPrice2 As String
Dim AskPrice2 As String
Dim logSuccess As Boolean
Dim TickerRow As Integer
Dim LastTickerRow As Integer
LastTickerRow = ExampleUtil.getLastDataRow("Tickers", 8, 1)
For TickerRow = 8 To LastTickerRow
symbol = UCase(Worksheets("Tickers").Cells(TickerRow, 1).value)
SecType = UCase(Worksheets("Tickers").Cells(TickerRow, 2).value)
Exchange = UCase(Worksheets("Tickers").Cells(TickerRow, 7).value)
BidPrice = CStr(Worksheets("Tickers").Cells(TickerRow, 15).value)
AskPrice = CStr(Worksheets("Tickers").Cells(TickerRow, 16).value)
BidPrice2 = CStr(Worksheets("Tickers").Cells(TickerRow + 1, 15).value)
AskPrice2 = CStr(Worksheets("Tickers").Cells(TickerRow + 1, 16).value)
If symbol = UCase(Worksheets("Tickers").Cells(TickerRow + 1, 1).value) And Exchange <> UCase(Worksheets("Tickers").Cells(TickerRow + 1, 7).value) Then
If AskPrice < BidPrice2 Or AskPrice2 < BidPrice Then logSuccess = logMessage([automateTrade], " Arb for :" & symbol & BidPrice & AskPrice & BidPrice2 & AskPrice2)
End If
Next TickerRow
startTimer ' schedule next run
End Sub
Sub startTimer()
runWhen = Now + TimeSerial(0, 0, RUN_INTERVAL_SECONDS)
Worksheets("Auto Orders").Range("X3").value = Format(runWhen, "yyyy-mm-dd hh:mm")
Application.OnTime earliesttime:=runWhen, procedure:=RUN_WHAT, schedule:=True
End Sub
Sub stopTimer()
On Error Resume Next
Application.OnTime earliesttime:=runWhen, procedure:=RUN_WHAT, schedule:=False
Worksheets("Auto Orders").Range("X3").value = "Stopped"
End Sub |
Partager