Bonjour à tous,
Je débute en programmation sur Prorealtime, j’ai fait un petit programme qui est un “momentum amélioré”, en ce sens qu’au lieu de calculer la différence de prix entre 2 dates distantes de 60 jours, il calcule la différence de prix entre 2 moyennes mobiles de 10 jours distantes de 60 jours.
Or les résultats de ce programme mis dans Probacktest et dans Probuilder sont incohérents. Le principe c’est que lorsque le “momentum amélioré” > 0 il achète, lorsque “momentum amélioré” < 0 il vend. Or les achats/ventes de Probacktest ne correspondent pas du tout aux passages dans le positif ou le négatif de Probuilder.
J’ai joint une copie d’écran montrant le décalage complet entre les 2.
Merci d’avance pour votre aide …..
Probuilder :
//Nombre de jours séparant les deux bornes du momentum
Duree = 60
//Nombre de jours des moyennes mobiles
n = 10
//Moyenne mobile actuelle
Now = 0
//Moyenne mobile il y a "Duree" jours
Before = 0
//Calcul de la moyenne mobile de n jours
// - actuelle (Now)
// - il y a "Duree" jours (Before)
FOR i = 0 to n DO
Now = Now + DClose(i)
Before = Before + DClose(Duree+i)
NEXT
Now = Now / (n+1)
Before = Before / (n+1)
Elan = Now - Before
return Elan
ProBackTest :
DEFPARAM CumulateOrders = false
//Nombre de jours séparant les deux bornes du momentum
Duree = 60
//Nombre de jours des moyennes mobiles
n = 10
//Moyenne mobile actuelle
Now = 0
//Moyenne mobile il y a "Duree" jours
Before = 0
//Calcul de la moyenne mobile de n jours
// - actuelle (Now)
// - il y a "Duree" jours (Before)
FOR i = 0 to n DO
Now = Now + DClose(i)
Before = Before + DClose(Duree+i)
NEXT
Now = Now / (n+1)
Before = Before / (n+1)
Elan = Now - Before
// Conditions pour ouvrir une position acheteuse
IF Elan > 0 THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
IF Elan < 0 THEN
SELL AT MARKET
ENDIF
Il faudrait comprendre ce que retourne la variable ‘Elan’ dans Probacktest pour comparer avec l’indicateur. On peut le faire facilement en ajoutant cette instruction dans le programme de trading automatique :
GRAPH Elan
Merci pour votre réponse,
J’ai donc utilisé GRAPH Elan et résultat étonnant :
DClose(60) = Close[60] = cours de clôture il y a 60 unité de temps !!!
DClose(60) signifie le cours de clôture il y a 60 jours
Close[60] signifie le cours de clôture il y a 60 unité de temps
Comme mon unité de temps était mensuelle lorsque j’écrivais DClose(i) pour Probuilder c’était il y a “i” jours pour Probacktest c’était il y a “i” mois.