Implementowanie reguły z funkcją określającą wielkość zlecenia
W pakiecie quantstrat ilość transakcji na danym aktywie nie zawsze musi być stała pod względem liczby akcji. Konstrukty pozwalające quantstrat dynamicznie ustalać liczbę kupowanych lub sprzedawanych akcji nazywane są funkcjami określającymi wielkość zlecenia (ang. order sizing functions). Ze względu na rozbudowaną składnię wymaganą do stworzenia poprawnej takiej funkcji, pisanie jej od zera wykracza poza zakres tego kursu.
Korzystanie z gotowej funkcji tego typu jest jednak proste. Przede wszystkim warto wiedzieć, że gdy używasz funkcji określającej wielkość zlecenia, argument orderqty traci znaczenie – liczba jednostek jest wtedy wyznaczana przez tę funkcję. Wywołanie funkcji określającej wielkość zlecenia w ramach add.rule() jest intuicyjne. Jej parametry wejściowe miesza się z pozostałymi argumentami, z którymi pracujesz w tym rozdziale.
W tym ćwiczeniu użyjesz argumentu osFUN, aby wskazać funkcję o nazwie osMaxDollar. Nie podajesz jej jako ciągu znaków, lecz jako obiekt – jedyna różnica polega na tym, że nazwa funkcji nie jest ujęta w cudzysłów.
Dodatkowe argumenty tej funkcji to tradeSize i maxSize – oba powinny przyjmować wartość tradesize, którą zdefiniowałeś kilka rozdziałów wcześniej. Zmienna ta jest dostępna w twoim środowisku pracy.
To ćwiczenie jest częścią kursu
Handel finansowy w R
Instrukcje do ćwiczenia
- Polecenie
add.rule()użyte w poprzednich ćwiczeniach jest wyświetlone w twoim środowisku pracy. - Dodaj funkcję określającą wielkość zlecenia do tej reguły, podając argumenty
osFUN,tradeSizeimaxSize.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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")