Implementace pravidla s funkcí pro určení velikosti objednávky
V quantstratu nemusí být objem transakce s aktivem vždy pevně daný počet akcií. Konstrukty, které umožňují quantstratu měnit počet nakoupených nebo prodaných akcií, se nazývají funkce pro určení velikosti objednávky (order sizing functions). Vzhledem k rozsáhlé dodatečné syntaxi potřebné k vytvoření takové funkce není psaní vlastní funkce pro určení velikosti objednávky od začátku součástí tohoto kurzu.
Použití předpřipravené funkce pro určení velikosti objednávky je však přímočaré. Důležité je vědět, že při jejím použití argument orderqty přestává být relevantní — množství objednávky totiž určuje právě tato funkce. Volání funkce pro určení velikosti objednávky v rámci add.rule() je celkem jednoduché. Vstupní parametry funkce se mísí s ostatními argumenty, se kterými jsi pracoval/a v průběhu celé této kapitoly.
V tomto cvičení použiješ argument osFUN k zadání funkce osMaxDollar. Ta se nepředává jako řetězec, ale jako objekt — jediný rozdíl tedy spočívá v tom, že název funkce není uzavřen v uvozovkách.
Další argumenty této funkce jsou tradeSize a maxSize — oba by měly přebírat hodnotu tradesize, kterou jsi definoval/a v jedné z předchozích kapitol. Tato hodnota je dostupná v tvém pracovním prostředí.
Toto cvičení je součástí kurzu
Finanční obchodování v R
Pokyny k cvičení
- Příkaz
add.rule()použitý v předchozích cvičeních je vypsán v tvém pracovním prostředí. - Přidej do tohoto pravidla funkci pro určení velikosti objednávky zadáním argumentů
osFUN,tradeSizeamaxSize.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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")