Een regel implementeren met een order-schaalfunctie
In quantstrat is de hoeveelheid van een verhandeld asset niet altijd een vaste hoeveelheid in termen van daadwerkelijke aandelen. De constructies die quantstrat laten variëren hoeveel aandelen worden gekocht of verkocht, heten order-schaal functies. Door de uitgebreide extra syntax om een goede order-schaalfunctie te maken, valt het vanaf nul schrijven van je eigen order-schaalfunctie buiten de scope van deze cursus.
Het gebruiken van een voorgecodeerde order-schaalfunctie is echter eenvoudig. Het eerste wat je moet weten, is dat bij gebruik van een order-schaalfunctie het argument orderqty niet langer relevant is, omdat de ordergrootte door de order-schaalfunctie wordt bepaald. Een order-schaalfunctie aanroepen binnen je add.rule()-aanroep is vrij eenvoudig. De inputs voor de order-schaalfunctie worden gemengd met de rest van de inputs binnen de argumenten waar je in dit hoofdstuk al mee hebt gewerkt.
In deze oefening gebruik je het argument osFUN om een functie genaamd osMaxDollar op te geven. Dit wordt niet doorgegeven als een string, maar als een object. Het enige verschil is dat de naam van de order-schaalfunctie niet tussen aanhalingstekens staat.
De extra argumenten voor deze functie zijn tradeSize en maxSize, die allebei tradesize moeten krijgen, die je enkele hoofdstukken eerder hebt gedefinieerd. Deze is beschikbaar gemaakt in je werkruimte.
Deze oefening maakt deel uit van de cursus
Financieel traden in R
Oefeninstructies
- Het
add.rule()-commando dat in eerdere oefeningen is gebruikt, staat in je werkruimte. - Voeg een order-schaalfunctie toe aan deze regel door
osFUN,tradeSizeenmaxSizeop te geven.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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")