Rejoignez notre page de fans
CGoldSymbol - find the broker's gold and size the position correctly on it - bibliothèque pour MetaTrader 5
- Vues:
- 187
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
L'or est l'instrument sur lequel les courtiers ne s'accordent pratiquement sur rien. Le symbole peut être XAUUSD, GOLD, XAUUSD.m, XAUUSDpro ou GOLD#. Un contrat peut porter sur 100 onces, 10 onces ou une seule once. Le cours peut comporter deux ou trois chiffres. Un EA qui calcule la taille de son lot à partir d'une valeur codée en dur « 100 onces, deux chiffres » ne se trompe pas légèrement chez le courtier suivant : il se trompe d'un facteur dix, dans le sens qui vide le compte.
Cette classe interroge le terminal au lieu de faire des suppositions.
Détection. La fonction Detect() parcourt tous les symboles proposés par le compte et attribue un score aux noms : ainsi, XAUUSD l’emporte sur XAUUSD.m, qui l’emporte à son tour sur une correspondance approximative, tandis que l’argent, le platine et le palladium sont d’emblée exclus — XAGUSD ne doit jamais apparaître en tête d’une recherche sur l’or. Un symbole déjà présent dans Market Watch bénéficie d’un petit bonus. Si votre courtier utilise une notation inhabituelle, la fonction Attach("VOTRE NOM") ignore la recherche.
Spécifications. ContractSize(), Digits(), Point(), TickSize(), TickValueLoss(), MinLot(), MaxLot(), LotStep(), StopsLevel() et FreezeLevel() proviennent directement du terminal pour ce symbole.
Aspects financiers. La fonction LossForDistance(lots, distance) indique ce que coûte un mouvement défavorable dans la devise du compte. La fonction LotForRisk(riskMoney, distance) est l’inverse et celle qui importe : elle effectue la conversion via SYMBOL_TRADE_TICK_VALUE_LOSS, ce qui garantit l’exactitude des résultats tant pour un contrat de 10 onces que pour un compte libellé en euros, puis arrondit le résultat à l’unité de volume du courtier, en respectant les limites minimale et maximale. Elle renvoie zéro plutôt qu’un lot minimum implicite lorsque même le plus petit volume ferait courir un risque supérieur à celui que vous avez autorisé — un cas où la plupart des codes de calcul de taille de position se trompent en arrondissant à la hausse.
Diagnostics. La fonction Attach() recense les avertissements concernant une taille de contrat différente de 100, un nombre inhabituel de chiffres, une valeur de tick que le terminal signale comme étant nulle, et un niveau de stop différent de zéro. La fonction PrintReport() affiche l’intégralité de la spécification avec un exemple concret, ce qui constitue généralement le moyen le plus rapide de comprendre pourquoi une stratégie se comporte différemment selon les courtiers.
Sur un compte réel avec un contrat de 100 onces, un solde en euros et un stop de 1 500 points, 1 % de 10 000 EUR correspond à 0,07 lot, ce qui représente un risque de 90,42 EUR. Le même calcul sur un contrat de 10 onces donne 0,70 lot, et sur un contrat d’une once, 7,00 lots. Même risque, même stop, une différence de volume multipliée par cent – ce qui illustre précisément les erreurs d’une constante codée en dur.
Le pack comprend GoldSymbolDemo.mq5, un script qui détecte le symbole de l’or, affiche le rapport et convertit un pourcentage du solde en taille de lot pour différentes distances de stop. Exécutez-le sur n’importe quel graphique pour découvrir ce que représente réellement l’or chez votre courtier.
La classe n'ouvre aucune transaction et ne modifie aucune position. Elle répond à des questions.

Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/77067
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.
SessionReopenEA
L'or fait l'objet d'une pause de maintenance quotidienne sur le CME. La première heure suivant cette pause, son cours augmente davantage que ne le laisserait supposer le hasard, et ce pour chaque année civile d'un échantillon couvrant 11 ans, alors que toutes les autres heures de la journée affichent une évolution stable. Une transaction par séance, un stop côté serveur ajusté en fonction de la volatilité, pas de moyenne ni de stratégie en grille. Puis mon modèle de coûts s’est avéré erroné. Un backtest sur des ticks réels a montré que le coût réel aller-retour à la réouverture est d’environ 60 points, et non les 19 que mes recherches avaient estimés : le champ « spread par barre M1 » est un résumé par barre et sous-estime ce coût d’environ trois fois. En relançant le backtest sur 11 ans avec le coût corrigé : +3,34 pb, t 7,40, 59,3 % de transactions gagnantes -> +1,60 pb, t 3,42, 50,8 % de transactions gagnantes L’avantage persiste, mais à moins de la moitié de sa force initiale. Ce deuxième chiffre est le bon. Ce qu’il ne représente pas : environ +3,3 % par an avec un drawdown de 4,6 %, soit environ une année sur neuf en perte. À raison de 0,01 lot, cela représente environ 130 par an – un chiffre qui mesure la taille de la position, et non la stratégie.
OHLC Reality Check - at what stop distance does your backtest start lying?
Ouvre une transaction virtuelle entre crochets sur chaque barre M1, la fait évoluer sur l'historique réel des ticks et indique, pour une série de distances de stop, à quelle fréquence la modélisation OHLC sur 1 minute aboutirait à un résultat inverse de celui escompté pour la transaction.
Broker Clock Auditor
Reads the server clock from the symbol's own H1 history. The forex and CME week closes at 17:00 New York, so the server time of every weekly close gives the server's UTC offset for that week. Over 60 weeks it flags irregular closes, dates every clock change and tests it against the US and European daylight saving calendars, cross-checks TimeTradeServer minus TimeGMT, and lists the server time of the London, New York, Tokyo and Sydney opens for the coming weeks. Writes every close to CSV. Read only: no trade function, no DLL, no network.