ALGO TRADING IN VBA aiuto per favore (1 Viewer)

Ciao a tutti. Volevo chiedervi un gentile aiuto su una prova di algorithmic trading che devo fare su un simulatore all'università. In particolare la prova consiste nel comprare e vedere un'azione inventata, immettendo nel book trader dei limit order (che nel gioco sono meno costosi dei market order) e ottenere dei profitti dal bid-ask spread. Tutto ciò dobbiamo farlo senza usare il simulatore ma abbiamo un file excel che già comunica col programma e fa acquisti e vendite secondo il seguente algoritmo fornitoci dal prof in VBA:
Function marketmake(timeleft, starttime, stoptime)
Dim API As RIT2.API
Set API = New RIT2.API
' First, check to see if the trading time is between the start/stop time
If timeleft < starttime And timeleft > stoptime Then

' Next, check if there are any open orders in the order book. If it's empty, submit two orders
If Range("Orders") = 0 Then
ID = API.AddOrder("ALGO", Range("BUY_VOLUME"), Range("ALGO_LAST") - Range("SPREAD"), API.BUY, API.LMT)
ID = API.AddOrder("ALGO", Range("SELL_VOLUME"), Range("ALGO_LAST") + Range("SPREAD"), API.SELL, API.LMT)
End If

'Also, check to seeif there's only 1 order in the order book. If so, cancel all orders
If Range("ORDERS") <> 2 Then
API.CancelOrderExpr ("Price>0")
End If
End If
End Function
Function PARSERTD(str As String) As Variant
' This function is used to parse the Open Order output into a table
Dim Rows() As String
Dim Cols() As String
Dim NoR As Integer
Dim NoC As Integer
If Len(Trim(str)) = 0 Then
ReDim Res(0, 0) As String
PARSERTD = Res
Else
Rows = Split(str, ";")
Cols = Split(Rows(0), ",")
NoR = UBound(Rows)
NoC = UBound(Cols)
ReDim Res(NoR + 1, NoC) As String
For I = 0 To NoR
Cols = Split(Rows(I), ",")
For j = 0 To NoC
Res(I, j) = Cols(j)
Next j
Next I
PARSERTD = Res
End If
End Function
Noi quindi nel file excel che posto sotto, dobbiamo inserire lo starttime (il gioco dura 300 secondi ogni manche, e lo starttime indica il secondo in cui inizia a tradare), lo stoptime e lo spread da applicare secondo la macro di sopra. L'algoritmo però dobbiamo migliorarlo (questo è lo scopo del compito) ed in particolare dovrei:
1) impostare un limite (lordo e netto) alle posizioni di 25.000, oltre il quale dovrei pagare una penale (perciò, devo impostare ad es. che oltre un tot di posizioni lunghe devo cominciare a vendere per non superare quel limite, o così via....)
2) con la strategia di sopra guadagno molto se il prezzo oscilla e non c'è un trend, quando invece questo c'è faccio grosse perdite... c'è un modo per guadagnare anche sul trend???
3) nonché il più importante, il giorno della simulazione saremo 50 studenti insieme che avremo un modello molto simile (soprattutto chi lo mantiene così come è), quindi il prof ci ha detto che, i profitti che facciamo allenandoci a casa da soli, potrebbero trasformarsi in perdite...aiuto perché non so dove mettere le mani.
GRAZIE a tutti
 

Allegati

  • Immagine.jpg
    Immagine.jpg
    99,7 KB · Visite: 271

Users who are viewing this thread

Alto