ComenzarEmpieza gratis

Implementar una regla con una función de dimensionamiento de órdenes

En quantstrat, la cantidad de un activo que se negocia no siempre es fija en términos del número de acciones. Los elementos que permiten a quantstrat variar la cantidad de acciones compradas o vendidas se llaman funciones de dimensionamiento de órdenes. Dado que crear una función de dimensionamiento de órdenes adecuada implica bastante sintaxis adicional, programar una desde cero queda fuera del alcance de este curso.

No obstante, usar una función de dimensionamiento predefinida es sencillo. Lo primero que debes saber es que, al usar una función de dimensionamiento, el argumento orderqty deja de ser relevante, ya que la cantidad de la orden la determina dicha función. Llamar a una función de dimensionamiento junto con tu llamada a add.rule() es bastante directo. Las entradas de la función de dimensionamiento se mezclan con el resto de entradas dentro de los argumentos con los que has estado trabajando a lo largo de este capítulo.

En este ejercicio, usarás el argumento osFUN para especificar una función llamada osMaxDollar. No se pasa como cadena, sino como objeto. La única diferencia es que el nombre de la función de dimensionamiento no va entre comillas.

Los argumentos adicionales de esta función son tradeSize y maxSize, y ambos deben tomar tradesize, que definiste varios capítulos atrás. Ya está disponible en tu espacio de trabajo.

Este ejercicio forma parte del curso

Trading financiero en R

Ver curso

Instrucciones del ejercicio

  • El comando add.rule() usado en ejercicios anteriores está impreso en tu espacio de trabajo.
  • Añade una función de dimensionamiento de órdenes a esta regla especificando osFUN, tradeSize y maxSize.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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 y ejecutar código