ComeçarComece de graça

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

Ver curso

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, tradeSize e maxSize.

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")
Editar e executar o código