Bonjour
Je débute, aussi programme très très simple basé sur indicateurs DMI, pour développer ensuite la méthode pas à pas:
Position longue:
achat lorsque, DIplus étant supérieur à DIMinus, DI traverse de bas en haut DIminus
vente soit lorsque DIminus devient supérieur DIplus, soit lorsque DI devient supérieur à DIplus
Le backtest donne des résultats à priori surprenants:
parfois n’achète pas lorsqu’il faudrait, achète aussi alors que les indicateurs ne l’indiquent pas (ou plusieurs barres après?)
la vente est souvent tardive par rapport aux indicateurs….
J’ai essayé avec “crosses over” au lieu des deux conditions, cela ne résoud pas le problème
Quant aux positions courtes, le code est strictement symétrique, on remplace DIplus par DIminus (sauf erreur de ma part), mais ne déclenche jamais de vente (ne prend jamais de positon), alors que les occasions ne manquent pas
Evidemment cela m’empêche d’aller plus loin, ceci n’étant clairement qu’un embryon
Merci de m’indiquer ce qui cloche
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
DIP = DIplus[14](close)
DIX = DI[14](close)
DIM = DIminus[14](close)
// Conditions pour ouvrir une position acheteuse
c1 = (DIX > DIM)
c2 = (DIX[1] < DIM[1])
c3 = (DIP > DIM)
IF c1 AND C2 and C3 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
c4 = (DIM > DIP)
c5 = (DIX > DIP)
IF c4 OR c5 THEN
SELL AT MARKET
ENDIF
// Conditions pour ouvrir une position en vente à découvert
c11 = (DIX > DIP)
c12 = (DIX[1] < DIP[1])
c13 = (DIM > DIP)
IF c11 AND c12 AND c13 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// Conditions pour fermer une position en vente à découvert
c14 = (DIP > DIM)
c15= (DIX > DIM)
IF c14 OR c15 THEN
EXITSHORT AT MARKET
ENDIF
J’ai ajouté le code à ton message, plus simple et rapide, plutôt que de télécharger un fichier Word ! Merci d’ajouter du code au corps des messages avec le bouton dédié la prochaine fois.
A première lecture, je ne vois pas d’erreurs dans ton programme, afin d’être sûr que les indicateurs retournent les mêmes valeurs que ceux appliqués à ton graphique, je te suggère de les GRAPHer:
graph DIP
graph DIX
graph DIM
Effectivement backtest déclenche suivant les valeurs indiquées par Graph.
Merci.
Mais, outre la surprise, cela pose question: que penser de cette différence: pourquoi les valeurs des indicateurs sont elles différentes, ou autrement dit comment vérifier les paramètres de calcul des indicateurs dans les deux cas, si c’est de là que vient la différence? Sinon?????
Merci