Implementare una regola con una funzione di dimensionamento dell'ordine
In quantstrat, la quantità di un asset scambiata non è sempre una quantità fissa in termini di azioni. Le strutture che permettono a quantstrat di variare il numero di azioni acquistate o vendute sono chiamate funzioni di dimensionamento dell'ordine (order sizing functions). A causa della sintassi aggiuntiva necessaria per creare correttamente una funzione di dimensionamento dell'ordine, scriverne una da zero è fuori dallo scopo di questo corso.
Tuttavia, usare una funzione di dimensionamento predefinita è semplice. La prima cosa da sapere è che quando utilizzi una funzione di dimensionamento, l'argomento orderqty non è più rilevante, perché la quantità dell'ordine è determinata dalla funzione stessa. Richiamare una funzione di dimensionamento all'interno della tua chiamata a add.rule() è abbastanza diretto. I parametri per la funzione di dimensionamento si mescolano con gli altri argomenti che hai usato per tutto il capitolo.
In questo esercizio userai l'argomento osFUN per specificare la funzione osMaxDollar. Non va passato come stringa, ma come oggetto. L'unica differenza è che il nome della funzione di dimensionamento non va racchiuso tra virgolette.
Gli argomenti aggiuntivi di questa funzione sono tradeSize e maxSize, entrambi da impostare a tradesize, che hai definito in capitoli precedenti. Questa variabile è stata resa disponibile nel tuo workspace.
Questo esercizio fa parte del corso
Trading finanziario in R
Istruzioni dell'esercizio
- Il comando
add.rule()usato negli esercizi precedenti è stampato nel tuo workspace. - Aggiungi una funzione di dimensionamento dell'ordine a questa regola specificando
osFUN,tradeSizeemaxSize.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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")