Implémenter une règle avec une fonction de dimensionnement d'ordre
Dans quantstrat, la quantité d'un actif transigée n'est pas toujours une quantité fixe en ce qui concerne le nombre réel 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'ordre. Étant donné la syntaxe supplémentaire importante requise pour créer correctement une fonction de dimensionnement d'ordre, écrire votre propre fonction à partir de zéro dépasse la portée de ce cours.
Cependant, utiliser une fonction de dimensionnement d'ordre déjà codée est simple. La première chose à savoir est que lorsque vous utilisez une telle fonction, l'argument orderqty n'est plus pertinent, puisque la quantité de l'ordre est déterminée par la fonction de dimensionnement. Appeler une fonction de dimensionnement d'ordre dans votre appel à add.rule() est assez direct. Les paramètres de la fonction de dimensionnement sont intégrés aux autres paramètres à l'intérieur des arguments avec lesquels vous avez travaillé tout au long de ce chapitre.
Dans cet exercice, vous allez utiliser l'argument osFUN pour préciser une fonction appelée osMaxDollar. Celle-ci n'est pas passée comme une chaîne de caractères, mais bien comme un objet. La seule différence est que le nom de la fonction de dimensionnement d'ordre n'est pas entouré de guillemets.
Les arguments additionnels pour cette fonction sont tradeSize et maxSize, qui doivent tous deux prendre tradesize, que vous avez défini plusieurs chapitres plus tôt. Cette variable est disponible dans votre espace de travail.
Cette activité fait partie du cours
Négociation financière en R
Instructions de l’exercice
- 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'ordre à cette règle en précisant
osFUN,tradeSizeetmaxSize.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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")