Utiliser sigCrossover
Avoir un filtre long est nécessaire, mais ce n'est pas suffisant pour entrer en position avec cette stratégie. Toutefois, dès que la condition n'est plus respectée, la stratégie ne doit conserver aucune position. Dans cet exercice, vous allez implémenter l'inverse de la règle ci-dessus à l'aide de la fonction sigCrossover().
Contrairement à sigComparison(), qui indique toujours si une condition est vraie ou non, sigCrossover() ne renvoie un positif qu'au moment où le signal survient pour la première fois, puis plus ensuite. C'est utile pour un signal servant à initier une transaction, puisque vous ne voulez généralement qu'une seule transaction, plutôt que d'en déclencher à répétition.
Ici, vous allez implémenter la fonction sigCrossover() en précisant que la SMA50 croise sous la SMA200. Vous donnerez à ce signal l'étiquette filterexit, puisqu'il fera sortir votre position lorsque la moyenne mobile indique que le contexte n'est pas favorable au maintien d'une position pour la stratégie.
Cette activité fait partie du cours
Négociation financière en R
Instructions de l’exercice
- Utilisez
add.signal()pour ajouter unsigCrossoverindiquant que laSMA50croise sous laSMA200. - Donnez à ce signal l'étiquette
filterexit.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Add a sigCrossover which specifies that the SMA50 is less than the SMA200 and label it filterexit
add.signal(strategy.st, name = "___",
# We're interested in the relationship between the SMA50 and the SMA200
arguments = list(columns = c("___", "___"),
# The relationship is that the SMA50 crosses under the SMA200
relationship = "___"),
# Label it filterexit
label = "___")