Bonjour à tous,
Je viens vers vous car j’ai un problème avec ma stratégie de breakout. Elle fonctionne en backtest mais aucun ordre de ne déclenche en réel alors qu’en démo cela fonctionne. J’ai un compte risques limités chez IG, le compte est suffisamment approvisionné. Afin d’etre certain de ne pas avoir de problèmes informatiques quelconques j’ai testé une stratégie basique en réel juste pour voir si les ordres se déclenchaient et cela fonctionnait. Donc j’en viens à me demander si cela ne vient pas simplement de mon code. D’ailleurs ce code provient de ce site. Je l’ai légèrement modifié, peut être que le problème vient de là?
Je tente de le faire fonctionner sur le DAX sur un timeframe 15mn.
Voici le code, si quelqu’un pouvait le vérifier et me venir en aide s’il vous plait… Par avance merci.
Defparam cumulateorders = false
Defparam flatafter=220000
n = 1
IF TIME = 091500 THEN
HAUT = highest[9](high)
BAS = lowest[9](low)
achatjour = 0
ventejour = 0
ENDIf
Ctime = time >= 091501 AND time <= 170000
Ccanal = close < haut and close > bas
IF Ctime and Ccanal THEN
IF achatjour = 0 THEN
buy n contracts at HAUT stop
ELSIF ventejour = 0 THEN
sellshort n contracts at BAS stop
ENDIF
ENDIF
IF longonmarket THEN
achatjour = 1
ENDIF
IF shortonmarket THEN
ventejour = 1
ENDIF
set stop ploss 30
set target pprofit 50
>> Bonjour, merci de renseigner votre pays dans votre page de profil (avatar en haut à droite puis cliquer dans le menu qui apparait l’avant dernière ligne “settings”) <<
>> Pour la clarté des messages sur les forums de ProRealCode, merci d’utiliser le bouton “<>” (insert PRT code) pour séparer la partie texte de la partie code, le debugging en sera facilité pour les autres forumeurs qui le lisent, merci <<
Bonjour,
Il est normal que ce robot ne fonctionne pas. Le problème se situe lignes 16 et 18. Il manque une condition qui sera ta stratégie, en fonction d’un indicateur ou d’une bougie.
IF achatjour = 0 and ConditionBuy THEN
ELSIF ventejour = 0 and ConditionSell THEN
Il te reste à intégrer ces lignes en faisant évoluer les variables ConditionBuy et ConditionSell à partir d’un indicateur ou de la fermeture d’une bougie (Exemple: ConditionBuy= Close>Close[1] et l’inverse pour ConditionSell=Close<Close[1])
Tu peux facilement comprendre pourquoi en utilisant l’instruction GRAPH pour vérifier l’état de tes variables lors d’un backtest, exemple:
GRAPH Haut
GRAPH Bas
GRAPH Close
Mais je pense que ton problème est ailleurs, en effet sur un compte à risque limité, il n’est pas possible :
- De poser 2 limites de sens opposé sur la même valeur
et c’est le cas des 2 ordres STOP de ton code. Pour vérifier, il serait intéressant de supprimer une de ces deux lignes et de relancer la stratégie via ProOrder sur ton compte à risque limité.
Merci pour vos réponses. Je tenterai le test demain en supprimant une ligne du code. Je pense effectivement que le problème peut venir du compte limité.