Bonjour à tous,
Trader depuis maintenant un peu plus d’un an, je me penche de plus en plus vers le trading automatique. Je suis client IG et j’utilise la plateforme PRT.
Je me suis fait un petit programme sur le Dow Jones 30 qui doit encore être amélioré mais je me dis que je tiens peut être quelque chose.
Le passage d’ordre se fait en fonction de la moyenne mobile de hull 30 sur l’unité de temps 1h.
Pour le moment, en ne faisant pas de stop suiveur et de breakeven, le backtest me donne positif depuis 2015 (cf première figure). En y regardant de plus près, je me rend compte qu’un nombre non négligeable de mes trades perdant, ont été gagnant à un moment donné (cf deuxième figure), se retrouver à -200€ alors qu’on pouvait avoir 152€ de gains est des plus rageant…
Je sais qu’avec IG on ne peut pas avoir le stop suiveur “officiel” comme le stop est garanti, mais je me demande s’il est possible de coder la chose suivante :
Je prends position à l’achat au niveau N pts
Le cours monte pour passer à N+2 pts, alors on créé un stop à ce niveau là pour avoir au pire un petit quelque chose
Et ensuite déplacer ce stop par tranche de tous les 25/50/… pts
Première question : j’ai cru comprendre que le code n’est lu qu’un fois à la fin de l’UT considéré, donc il me faudrait ce stop suiveur dans une UT inférieur pour que cela marche?
Deuxième point que j’aimerais aborder ; lorsqu’on regarde le détails des ordres passés, je vois que certaines fois où le code devrait me faire prendre position, rien ne se passe. ( J’ai comme condition de prendre position si la valeur de la moyenne est supérieur à la clôture de la valeur précédente, du lundi au vendredi entre minuit et 22h45). On voit bien à la troisième figure qu’un stop a été touché le mercredi 17 juillet à 23h (flèche noir), et que les conditions sont réunies le jeudi 18 juillet à midi (flèche rouge). La valeur de la moyenne de hull est très légèrement supérieure à la clôture de la bougie de 11h (ligne verte) par rapport à la bougie de 10h (ligne rouge). D’ailleurs le dernier ordre date de la fermeture de ma position du 17 juillet à 23h, On voit aussi (quatrième et dernière figure) que le 19 juillet à 1h du matin, le code aurait du me faire acheter une position puisque les conditions sont réunies aussi, alors que mon ordre n’est finalement passé qu’à 3h du matin. De quoi cela peut venir?
D’avance merci pour votre aide.
Voici mon code des plus basique :
// 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 = 000000
// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 224500
// 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
// Conditions pour ouvrir une position acheteuse
indicator1 = Average[30](close)
indicator2 = Average[30](close)
c1 = (indicator1 >= indicator2[1])
IF c1 AND not daysForbiddenEntry THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Stops et objectifs
SET STOP pLOSS 200
SET TARGET pPROFIT 750