Implementera en regel med en orderstorleksfunktion
I quantstrat är antalet tillgångar som handlas inte alltid en fast kvantitet i förhållande till faktiska aktier. De konstruktioner som gör det möjligt för quantstrat att variera antalet aktier som köps eller säljs kallas orderstorleksfunktioner. Eftersom det krävs betydligt mer syntax för att skapa en korrekt orderstorleksfunktion från grunden, ingår inte det i den här kursen.
Att använda en färdigkodad orderstorleksfunktion är däremot enkelt. Det första att känna till är att när du använder en orderstorleksfunktion är argumentet orderqty inte längre relevant – ordermängden bestäms istället av orderstorleksfunktionen. Att anropa en orderstorleksfunktion i ditt add.rule()-anrop är ganska rakt på sak. Indata till orderstorleksfunktionen blandas in bland övriga indata i de argument du har arbetat med under det här kapitlet.
I den här övningen använder du argumentet osFUN för att ange en funktion som heter osMaxDollar. Den skickas inte in som en sträng utan som ett objekt. Den enda skillnaden är att namnet på orderstorleksfunktionen inte omges av citattecken.
De ytterligare argumenten till den här funktionen är tradeSize och maxSize, som båda ska ta värdet tradesize, vilket du definierade tidigare i kursen. Det finns tillgängligt i din arbetsmiljö.
Den här övningen är en del av kursen
Finansiell handel i R
Övningsinstruktioner
- Kommandot
add.rule()från tidigare övningar är utskrivet i din arbetsmiljö. - Lägg till en orderstorleksfunktion i den här regeln genom att ange
osFUN,tradeSizeochmaxSize.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Add a rule that uses an osFUN to size an entry position
add.rule(strategy = strategy.st, name = "ruleSignal",
arguments = list(sigcol = "longentry", sigval = TRUE, ordertype = "market",
orderside = "long", replace = FALSE, prefer = "Open",
# Use the osFUN called osMaxDollar
osFUN = ___,
# The tradeSize argument should be equal to tradesize (defined earlier)
tradeSize = ___,
# The maxSize argument should be equal to tradesize as well
maxSize = ___),
type = "enter")