Implementando uma regra com uma função de dimensionamento de ordens
No quantstrat, a quantidade de um ativo transacionada nem sempre é fixa em relação ao número de ações. As estruturas que permitem ao quantstrat variar a quantidade de ações compradas ou vendidas são chamadas de funções de dimensionamento de ordens. Devido à sintaxe adicional necessária para criar uma função de dimensionamento de ordens adequada, programar a sua do zero está fora do escopo deste curso.
Por outro lado, usar uma função de dimensionamento de ordens já pronta é simples. A primeira coisa a saber é que, ao usar uma função desse tipo, o argumento orderqty deixa de ser relevante, pois a quantidade da ordem é determinada pela função de dimensionamento. Chamar uma função de dimensionamento junto com sua chamada a add.rule() é bem direto. As entradas para a função de dimensionamento são misturadas com o restante das entradas nos argumentos com que você vem trabalhando ao longo deste capítulo.
Neste exercício, você vai usar o argumento osFUN para indicar a função chamada osMaxDollar. Isso não é passado como string, e sim como objeto. A única diferença é que o nome da função de dimensionamento não vai entre aspas.
Os argumentos adicionais dessa função são tradeSize e maxSize, e ambos devem receber tradesize, que você definiu vários capítulos atrás. Esse objeto já está disponível no seu ambiente de trabalho.
Este exercício faz parte do curso
Negociação financeira em R
Instruções do exercício
- O comando
add.rule()usado nos exercícios anteriores está impresso no seu ambiente. - Adicione uma função de dimensionamento de ordens a essa regra especificando
osFUN,tradeSizeemaxSize.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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")