Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Experts

SessionReopenEA - expert pour MetaTrader 5

Gianluca Gangemi
Gianluca Gangemi
  • MQL5 / MetaTrader 5 developer à  Freelance
  • Italie
  • 641
Developpeur MQL5, je travaille sur l'automatisation de MetaTrader 5 : Expert Advisors, controle du risque et pipelines de recherche de MT5 vers Python.
| French English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
Vues:
79
Note:
(4)
Publié:
MQL5 Freelance Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance


L'or connaît une pause de maintenance quotidienne sur le CME. La première heure de négociation qui suit cette pause affiche une hausse supérieure à ce que le hasard pourrait expliquer, et ce phénomène se produit chaque année civile sur un échantillon de onze ans — alors quetoutes les autres heures de la journée affichent une évolution stable.

Cet Expert Advisor achète à cette réouverture, conserve la position pendant une durée fixe avec un stop côté serveur ajusté en fonction de la volatilité, et ne fait rien d’autre. Une seule transaction par session. Pas de moyenne, pas de grille, pas de martingale, pas de récupération.

Le chiffre, puis le chiffre après avoir constaté que mon modèle de coût était erroné

Mesuré sur 11 ans de données horaires, avec une entrée à la réouverture et une conservation de la position pendant deux heures :

au coût facturé par la recherche au coût mesuré par le testeur
par transaction +3,34 points de base +1,60 pb
statistique t 7,40 3,42
taux de réussite 59,3 % 50,8 %
facteur de profit 1,63 1,30
années positives 11 sur 11 10 sur 11

La colonne de gauche correspond à ce que j’aurais publié si je m’étais arrêté là où la plupart des gens s’arrêtent. Puis, un backtest en temps réel dans le Strategy Tester de MetaTrader a montré que le coût réel aller-retour à la réouverture est d’environ60 points, et non pas les 19 points que mes recherches avaient indiqués — car le champ « spread » de la barre M1 est un résumé par barre et sous-estime le spread de réouverture d’environ trois fois.

L'avantage persiste après cette correction, à moins de la moitié de son niveau initial, et le taux de réussite devient un tirage au sort reposant sur un gain favorable plutôt que sur la fréquence. La colonne de droite est la colonne réelle, et c'est celle sur laquelle repose cet EA.

Ce que ce n’est pas

Ce n’est pas un moyen de subsistance, et l’en-tête du fichier source l’indique avant même que les paramètres ne soient décrits. Avec un capital dimensionné pour une perte temporaire de 20 %, il affiche un rendement d’environ+3,3 % par an, avec une perte temporaire maximale de 4,6 %, un ratio de Sharpe de 1,23 et environ 200 transactions par an — ce qui signifie également qu’environune année sur neuf est négative. À raison de 0,01 lot, cela représente environ 130 unités monétaires par an, et ce chiffre correspond àla taille de la position, et non à la stratégie.

Une période de 2,5 ans, prise isolément, donnet = +1,12 — ce qui n’est pas significatif. Un backtest rentable sur deux ans ne prouve rien en soi ; c’est l’échantillon sur onze ans qui fait la différence.

Ce que le résultat a dû surmonter avant que je ne lui fasse confiance

Chacun de ces éléments aurait pu y mettre fin, et s’ils sont énumérés ici, c’est parce qu’un résultat que personne n’a tenté de remettre en cause n’est pas un résultat :

  • Ce n’est pas un écart. L’écart enregistré lors de la rupture s’élève en moyenne à −0,011 — le mouvement se produit àl’ouverture du marché.
  • Ce n’est pas un artefact lié à la construction des barres. La reconstruction de la donnée horaire à partir de barres M1 récupérées indépendamment concorde avec la série H1 à 0,0000 près sur l’ensemble des 73 jours de chevauchement.
  • Il ne s’agit pas de valeurs aberrantes. La moyenne tronquée à 1 % est de +0,70 contre +0,75 pour l’échantillon complet ; la médiane est de +0,48.
  • Ce n’est pas la normalisation du spread qui constituerait le piège évident, puisque les barres MT5 sont du côté de l’offre et que le spread à la réouverture est plus large : le spread reste stable sur toute l’heure, il n’explique donc 0 % de l’effet.
  • Il n’est pas nécessaire de connaître le tick exact de la réouverture. Entrer avec 15 minutes de retard reste rentable, 30 minutes de retard aussi, et l’effet disparaît à 45 minutes.
  • La réouverture hebdomadaire n’en fait PAS partie. Le dimanche affiche +1,11 pb avec t = 0,88 — ce qui est indiscernable du bruit — contre +3,90 pb et t = 8,32 pour les réouvertures quotidiennes. C’est pourquoiInpSkipMonday existe et est défini par défaut sur « true ».

Les paramètres d’entrée, et pourquoi ils sont ce qu’ils sont

Entrée Signification
InpEntryHour L'heure serveur de la réouverture. Le recours à l'heure serveur est délibéré : l'horloge de ce courtier suit l'heure d'été américaine, de sorte que la réouverture a lieu à une heure serveur fixe toute l'année, tandis qu'un déclencheur UTC présenterait un décalage d'une heure deux fois par an.
InpEntryWindowMin N'entrer que dans les X minutes précédant ou suivant l'heure.
InpHoldHours Nombre d’heures de maintien avant la clôture à l’heure prévue.
InpSkipMonday Ignorer la réouverture hebdomadaire. Voir les chiffres du dimanche ci-dessus.
InpLots Lot fixe. Aucune adaptation de la taille, en aucun cas.
InpStopAtrMult Stop = cette valeur × l'amplitude horaire moyenne. Valeur par défaut : 2,0, et non 1,5 comme dans la première version — voir ci-dessous.
InpRangeBars Barres H1 exprimées en unité d’amplitude moyenne. 480 correspond à environ 20 séances.
InpMaxSpreadPts Refuser l'entrée si le spread est moins favorable que cette valeur.

Concernant le multiplicateur de stop. Au coût corrigé, 1,5× donne +1,60 pb (t 3,42) tandis que 2,0× donne +1,91 (t 4,07) et est atteint sur 1,3 % des transactions au lieu de 2,6 %. Un spread plus large continue de s’améliorer — et le stop reste en place, car « supprimer le stop et améliorer le backtest » est exactement le raisonnement qui fait paraître rentable une martingale. C’est le stop qui limite un événement extrême ; le délai de sortie limite le reste.

Testez-le avant de croire quoi que ce soit de ce qui précède

Et testez-le avecchaque tick en vous basant sur des ticks réels. Sur un autre de mes codes, les mêmes règles appliquées sur la même période ont donné −15 627 avec une modélisation par barres d’une minute et +79 000 avec des ticks réels. Un backtest qui ne précise pas son mode de modélisation ne vous indique pas ce qu’il a mesuré.

Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/77060

Prop Daily Loss Meter Prop Daily Loss Meter

Shows how much of the daily loss limit of a prop firm account is already used, and how much is left. Read-only indicator.

Server Clock Check Server Clock Check

Measures how far your PC clock is from the trade server's clock, from the server time stamped on live ticks, and tells you how to fix it.

Trade Excursion Report: MFE and MAE of every closed trade, to CSV Trade Excursion Report: MFE and MAE of every closed trade, to CSV

Exporte une ligne CSV par transaction clôturée, contenant les données qui ne figurent pas sur le relevé : le meilleur bénéfice non réalisé enregistré par la transaction (MFE), la pire perte non réalisée qu’elle a subie (MAE), la part du MFE effectivement réalisée, le nombre de barres couvertes par la transaction et la durée de détention. Il s’agit des mêmes mesures que celles de l’indicateur « Trade Excursion », mais elles sont enregistrées dans un fichier plutôt que représentées graphiquement, car les questions pertinentes à se poser à propos de ces données sont celles auxquelles un graphique ne peut pas répondre : le taux de capture dépend-il de l’heure d’entrée ? Les transactions que je clôture prématurément sont-elles celles que je conserve le plus longtemps ? Les transactions perdantes du lundi atteignent-elles un MAE différent de celles du vendredi ? Il suffit d’un tableau croisé dynamique pour obtenir ces réponses une fois le fichier CSV créé. La sortie est séparée par des points-virgules avec une ligne d’en-tête, au format MQL5\Files ; elle s’ouvre dans n’importe quel tableur. Limite de mesure : les excursions proviennent des plus hauts et des plus bas des barres sur la période choisie ; le tracé à l’intérieur d’une barre est inconnu. La colonne « barres » indique la résolution attribuée à chaque transaction, et le récapitulatif comptabilise séparément les transactions sur une seule barre au lieu de les intégrer dans une moyenne.

CGoldSymbol - find the broker's gold and size the position correctly on it CGoldSymbol - find the broker's gold and size the position correctly on it

Il détecte le symbole « or », quel que soit le nom que lui donne le courtier, lit les spécifications du contrat à partir du terminal au lieu de les supposer, et convertit un risque exprimé dans la devise du compte en une taille de lot adaptée à ce courtier.