Bonne question.
Il faut tout d'abord comprendre comment marche le module de backtest de PRT :
A chaque clôture de bougie votre code est exécute.
Donc si j'ai une condition d'entrée de type MM7<MM20
Alors tant que c'est vrai PRT va exécuter l'ordre. ça donnerai en pseudo language :
Code : #
Si (MM7 < MM20) alors
j'achète 1 Long
Finsi.
Méthode 1 : Rajouter une deuxième condition dans le Si comme "Ne pas être sur le marché"
donc ça donne :
Code : #
Si (MM7 < MM20) AND (NePasEtreSurLeMarché) alors
j'achète 1 Long
Finsi.
Méthode 2 : Mémoriser le jour du trade, ça donne :
Code : #
Si (MM7 < MM20) AND (NePasEtreSurLeMarché) AND (DATEDUJOUR > jourdetrade) alors
j'achète 1 Long
jourdetrade = DATEDUJOUR
Finsi.
Dernière subtilité pour la première bougie. Tel que j'ai écrit l'algo la varaible jourdetrade n'a pas de valeur.
Donc en fonction du langage et de son interpretation soit la condition "(DATEDUJOUR > jourdetrade)" est vrai ou faux. Si PRT considère comme faux alors il faut initialiser la variable jourdetrade lors de la première bougie.
Code : #
Si bougie=1 alors
jourdetrade = DATEDUJOUR
finsi
Si (MM7 < MM20) AND (NePasEtreSurLeMarché) AND (DATEDUJOUR > jourdetrade) alors
j'achète 1 Long
jourdetrade = DATEDUJOUR
Finsi.
Ecrivez-moi le code en langage PRT et je corrigerai.