CommencerCommencer gratuitement

Implémenter une règle avec une fonction de dimensionnement d’ordres

Dans quantstrat, la quantité d’un actif transigée n’est pas toujours un nombre fixe d’actions. Les mécanismes qui permettent à quantstrat de faire varier le nombre d’actions achetées ou vendues sont appelés fonctions de dimensionnement d’ordres. En raison de la syntaxe supplémentaire nécessaire pour créer correctement une telle fonction, écrire votre propre fonction de dimensionnement d’ordres depuis zéro dépasse le cadre de ce cours.

En revanche, utiliser une fonction de dimensionnement d’ordres préécrite est simple. La première chose à savoir est que, lorsque vous utilisez une fonction de dimensionnement d’ordres, l’argument orderqty n’est plus pertinent, car la quantité est déterminée par cette fonction. Appeler une fonction de dimensionnement d’ordres dans votre appel à add.rule() est assez direct. Les paramètres de la fonction de dimensionnement d’ordres sont mélangés aux autres paramètres au sein des arguments que vous avez manipulés tout au long de ce chapitre.

Dans cet exercice, vous utiliserez l’argument osFUN pour spécifier une fonction appelée osMaxDollar. Ce n’est pas passé sous forme de chaîne, mais en tant qu’objet. La seule différence est que le nom de la fonction de dimensionnement d’ordres n’est pas entouré de guillemets.

Les arguments supplémentaires de cette fonction sont tradeSize et maxSize, qui doivent tous deux recevoir tradesize, que vous avez défini plusieurs chapitres plus tôt. Cette variable est disponible dans votre espace de travail.

Cet exercice fait partie du cours

Trading financier en R

Afficher le cours

Instructions

  • La commande add.rule() utilisée dans les exercices précédents est affichée dans votre espace de travail.
  • Ajoutez une fonction de dimensionnement d’ordres à cette règle en spécifiant osFUN, tradeSize et maxSize.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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")
Modifier et exécuter le code