Bonjour a tous,
Je teste depuis quelques semaines un code tout simple avec certaine configurations de bougie dont une en marteau sur compte Demo.
Après analyse des résultats, je ne comprends pas pourquoi certaine bougie sont ignorés alors qu’elle correspondent bien à la configuration, que çà soit en Demo ou même en backtest.
S’agit il d’un bug liée au compte Demo ?
En cas de problème de ce type sur un compte réel, qu’elles sont les possibilités vis à vis de PRT ou du courtier ?
Merci beaucoup pour votre aide,
Ci après la configuration de la bougie et en pièce jointe le marteau non pris en compte lors de la séance et en backtest.
// Conditions pour ouvrir une position en achat
M5 = (high-open)<3
M6 = close-low > ((open-close)*2)
M7 = close < open
M8 = (open – close) > 1
Marteau2 = M5 AND M6 AND M7 AND M8
La première chose à faire avant d’incriminer un bug du courtier ou de la plateforme, c’est de débugger ses propres variables 🙂
GRAPH Marteau2
à ajouter à la fin de ton code pour vérifier lors du backtest si la condition est bien remplie (= 1). Si elle ne l’est pas, le bug est dans ton code 😉 Bon courage.
Bonjour Nicolas,
Merci beaucoup pour cette astuce, cela permet effectivement de voir si la condition est remplie, et elle l’est. Je ne comprends donc pas pourquoi la position ne s’ouvre pas.
Comme vous pouvez le voir sur la pièce jointe, la bougie encerclé remplie les conditions pour ouvrir une position mais rien ne se passe, alors que quelques minutes plus tard la même bougie ( dans le rectangle ) ouvre la position….
Je passe peut être à côté de quelque chose, mais je ne vois pas quoi, le code est assez simple.
Qu’en pensez vous ?
Merci
Julien
Il y a sans doute d’autres conditions dans le code de la stratégie que je ne connais pas. Si la variable retourne une condition vrai, alors la stratégie devrait envoyer l’ordre en effet. Merci pour le partage du code pour faire une analyse plus complète.
Pas de ‘if onmarket’ ou ‘if not onmarket’ ?
Non, pas de if ou if not onmarket, le code est vraiment basic, c’est pour çà que je pense plus à un bug PRT, je test sur compte demo, est ce que çà peut être liée à çà ???… c’est pas dramatique mais bon le but c’est que çà fonctionne pour passer en réel.
Merci pour votre aide en tou cas.
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".
DEFPARAM FLATBEFORE = 093000
// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 160000
// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
// Marteau pour position acheteuse
M1 = close = high or (high-close) < 3
M2 = close > open
M3 = (close - open) > 1
M4 = open-low > ((close-open)*2)
Marteau1 = M1 and M2 AND M3 AND M4
M5 = open = high or (high-open)<3
M6 = close-low > ((open-close)*2)
M7 = close < open
M8 = (open - close) > 1
Marteau2 = M5 AND M6 AND M7 AND M8
IF Marteau1 AND not daysForbiddenEntry THEN
BUY 1 CONTRACT AT MARKET
elsif Marteau2 AND not daysForbiddenEntry THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Stops et objectifs
SET STOP pLOSS 15
SET TARGET pPROFIT 30
Je n’ai pas testé mais as-tu pensai aux conditions horaires et journalières du code ? Pas de trades avant 09h30 et après 16h00 ? Ni Samedi et Dimanche.
Oui les conditions horaires et journalières sont bien respecter.
Avez vous déjà rencontrer ce genre de souci auparavant ? condition respecter mais pas d’ordre par la suite.
J’avais des doutes sur le code également jusqu’à ce que j’utilise votre conseil ( GRAPH ) et comme vous l’avez vue sur le Print Ecran, la condition est bien remplie, donc à partir de là c’est logiquement vers l’étape ouverture qu’il aurait un souci, pour info j’avais également vérifier dans la liste des ordres ( le jour ou j’ai vu le souci ), au cas où il aurait était annulé ou rejeter mais je n’ai eu aucune trace de rejet ou d’annulation.
Je ferais d’autre test ce weekend, mais si je pouvais avoir le fin mot de l’histoire, çà me permettrai d’avancer.
Après avoir testé le code, je ne décèle aucun problème (voir mon graphique ci-dessous sur le CAC40).
On a bien 1 ordre si on est pas au marché à chaque nouvelle détection :
graph Marteau1 AND not daysForbiddenEntry
graph Marteau2 AND not daysForbiddenEntry
Il y a bien entendu des détections hors horaires, mais elles sont inhibées par les restrictions horaires du début du code (soit pas d’ordre avant 09h30 et après 16h00) :
// Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".
DEFPARAM FLATBEFORE = 093000
// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 160000
Pour comparer le graphique et le code, bien vérifier que les données du week-end soient affichées, et parfois aussi supprimer les horaires personnalisés.
Ok merci,
A première vue, j’ai les mêmes résultats sur le CAC, mais j’ai pas tout repointer dans le détail.
Pouvez vous faire un backtest sur le Dow Jones sur le semaine qui vient de terminer svp, 10 au 14 Juin 9h30-16h NY Time zone,
Non désolé, il faudrait le faire de ton côté et nous indiquer où tu penses qu’un ordre aurait dut avoir lieu, ce sera bien plus simple et rapide.
Sur le Dow Jones ou le CAC, le code se comportera de la même façon.
C’est ce que j’ai fait au tout début et l’erreur ce trouve à 14H15 le 10 Juin heure de NY, je voulais voir si le souci pouvais venir de mon côté, c’est pour cela que je vous ai demandé.
J’ai refait malgré tout un test, et surprise, cette fois si il prend bien la position ( voir le print écran ) alors que nous n’avons rien touché au code….
La question demeure sur ” le pourquoi ” il n’a pas ouvert de position lors de la séance avec le compte demo ( mon tout premier print ), je pense que c’est un bug mineur ou une petite subtilité….en tout cas pour l’instant çà m’empêche d’avancer.
Par exemple quand j’ai backtesté ce dimanche sur le semaine écoulé en M5, j’ai eu le message d’erreur ” vérifier vos dates sur backtest ” alors qu’en faites c’était liée à mon graphique qui ne contenez que 200 unité de temps et ne remontez donc pas la ou je voulais particulièrement voir l’erreur ( le lundi 10 ), mais dès lors que je suis passé en graphique avec 1000 unité de temps, plus de souci de dates, le message d’erreur indiqué plus une erreur dans le code ou le backtest alors que c’était dans le graph que le souci était.
Pour revenir à ma question d’origine, car le but est de passer en réel, si un code est correct mais que l’ouverture ou fermeture de position ne s’effectue pas, comment ca se passe avec PRT et/ou le courtier ???
Je n’ai aucun souci avec les 2 sur mon trading manuel, concernant le trading automatique c’est vraiment super intéressant à étudier et exploiter, j’aimerais beaucoup m’y lancer en réel mais avec ce genre de souci, çà refroidi un peu.
Avez vous des expériences à partager sur les soucis de passage d’ordres ?
Merci pour votre aide
En cas de position non fermé, il est possible de lancer un ticket support. Cependant, très souvent ce type de problème est lié au code ou aux contraintes de marché (spread, slippage, recotation, distance au stop, ..).
Les comptes démo IG ont quelques problèmes de fiabilité, cela est très souvent remonté par les membres du forums.