Implementarea unei reguli cu o funcție de dimensionare a ordinelor
În quantstrat, cantitatea dintr-un activ tranzacționat nu este întotdeauna un număr fix de acțiuni. Construcțiile care îi permit lui quantstrat să varieze numărul de acțiuni cumpărate sau vândute se numesc funcții de dimensionare a ordinelor. Din cauza sintaxei suplimentare destul de complexe necesare pentru a crea o funcție de dimensionare corectă, scrierea unei astfel de funcții de la zero depășește scopul acestui curs.
Totuși, utilizarea unei funcții de dimensionare pre-codificate este simplă. Primul lucru de știut este că, atunci când folosești o funcție de dimensionare a ordinelor, argumentul orderqty nu mai este relevant — cantitatea ordinului este determinată de funcția de dimensionare. Apelarea unei funcții de dimensionare a ordinelor în cadrul add.rule() este destul de directă. Parametrii funcției de dimensionare se amestecă cu ceilalți parametri pe care i-ai folosit de-a lungul acestui capitol.
În acest exercițiu, vei folosi argumentul osFUN pentru a specifica o funcție numită osMaxDollar. Aceasta nu se transmite ca șir de caractere, ci ca obiect — singura diferență față de celelalte argumente este că numele funcției de dimensionare nu este pus între ghilimele.
Argumentele suplimentare ale acestei funcții sunt tradeSize și maxSize, ambele primind valoarea tradesize, pe care ai definit-o cu câteva capitole în urmă. Aceasta este deja disponibilă în spațiul tău de lucru.
Acest exercițiu face parte din cursul
Tranzacționare financiară în R
Instrucțiuni pentru exercițiu
- Comanda
add.rule()folosită în exercițiile anterioare este afișată în spațiul tău de lucru. - Adaugă o funcție de dimensionare a ordinelor la această regulă, specificând
osFUN,tradeSizeșimaxSize.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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")