EA Ledger True Costs MT5
- Utilitaires
-
Quoc Dat Quach
Software engineer with 8 years in fintech and mobile, writing MQL4/MQL5 since 2017. I build Expert Advisors, indicators, trade and risk-management panels and utilities for MT4/MT5, and I trade forex and gold on MT5 myself. - Version: 1.0
- Activations: 10
Un registre de compte pour MetaTrader 5 qui ventile vos résultats par magic number, symbole, jour de la semaine et heure, affiche le P/L de prix, la commission, le swap et les frais dans des colonnes séparées, et mesure le spread payé à chaque exécution ainsi que le slippage par rapport au prix que vous avez demandé. Les totaux sont vérifiés par rapport au solde du compte à chaque mise à jour. Il ne trade jamais sur un graphique.
Ce qu'il fait
Attachez-le à un seul graphique. Il lit l'historique des transactions du compte, reconstruit chaque position à partir de ses transactions et affiche le résultat dans un panneau :
- résultat net, P/L de prix, commission, swap et frais, dans des colonnes séparées
- coût du spread et coût du slippage de chaque exécution, mesurés à partir de l'historique des ticks du terminal lui-même
- MFE et MAE de chaque trade clôturé : jusqu'où le prix est allé en votre faveur et contre vous pendant que le trade était ouvert
- trades, taux de réussite, facteur de profit, lots et coût tout compris par lot
- dépôts, retraits, crédit, bonus, corrections et autres opérations hors trading, affichés séparément des résultats de trading
Il se met à jour de lui-même lorsqu'une transaction est ajoutée. Son calcul a été testé avec des historiques synthétiques de 50 000 et 200 000 transactions ; les comptes de test en direct comptaient jusqu'à 1 249 transactions.
Des totaux qui correspondent au solde
À chaque modification de l'historique, le panneau additionne toutes les transactions du compte et compare la somme au solde indiqué par le courtier. La barre sous le résumé affiche les deux montants et leur différence : « OK » en vert lorsqu'ils concordent au centime près, « MISMATCH » en rouge dans le cas contraire. Pour la période sélectionnée, elle montre aussi que la variation du solde est égale au résultat de trading plus les opérations hors trading.
Le crédit est affiché mais n'est pas compté dans le solde, de la même façon que MetaTrader le compte.
Positions reconstruites à partir des transactions
- Comptes hedging et netting.
- Clôtures partielles, positions renforcées, clôtures par position opposée (Close By, les deux positions sont marquées « CB ») et retournements sur les comptes netting (une seule transaction qui clôture une position et ouvre la position inverse). La commission d'une transaction de retournement est répartie entre le trade clôturé et le nouveau trade au prorata du volume.
- La commission enregistrée sous forme de transactions séparées, ainsi que la commission journalière ou mensuelle, est rattachée à sa position lorsque le courtier la lie à une position. Sinon, elle apparaît sur sa propre ligne, « Commission not linked to a position ».
- Les sorties par stop loss, take profit et stop out sont marquées.
Regroupements et filtres
Vues : par magic number (avec le commentaire de l'EA comme libellé lorsqu'il existe ; le magic number 0 est « Manual »), par symbole, par magic number et symbole, par jour de la semaine de l'entrée, par heure courtier de l'entrée, et une liste des trades.
Périodes : aujourd'hui, cette semaine, ce mois-ci, tout l'historique, ou une plage personnalisée en heure du serveur.
Cliquez sur une ligne de magic number pour voir ses symboles, sur une ligne de symbole pour voir ses magic numbers, et sur une ligne magic number et symbole pour voir ses trades. Une étiquette sur le panneau affiche le filtre actif et permet de l'effacer.
La page Results affiche les montants ; la page Costs affiche le spread, le slippage, la commission et les frais par groupe, le coût par lot, les MFE et MAE moyens, et l'origine de chaque mesure.
Comment les coûts sont mesurés
- Spread lors d'une exécution : le bid/ask en vigueur à l'heure de la transaction, tiré de l'historique des ticks du terminal. S'il n'y a pas de tick, le spread de la barre M1 est utilisé et le trade est marqué « M1 ».
- Slippage : le prix d'exécution par rapport au prix qui a été demandé :
- un ordre en attente : son prix d'ordre
- un stop loss ou un take profit : le niveau du stop
- un ordre au marché : le courtier n'enregistre généralement aucun prix demandé pour celui-ci, donc la cotation au moment où l'ordre a été passé est prise dans l'historique des ticks (ask pour un achat, bid pour une vente)
Un slippage positif est en votre défaveur, un slippage négatif est en votre faveur.
- Valeur monétaire d'un point : déduite du profit du trade lui-même, elle suit donc la devise du compte, y compris pour les comptes cent et les comptes en EUR, et la taille du contrat (or à 1, 10 ou 100 oz par lot, CFD sur indices à 1, 10 ou 100 unités). Lorsqu'un trade n'a aucun mouvement de prix permettant de la mesurer, la moyenne du symbole est utilisée, puis le propre calcul de profit du courtier.
- MFE / MAE : le prix le plus haut et le plus bas auquel la position a été valorisée (bid pour un achat, ask pour une vente) entre l'entrée et la sortie, à partir des ticks. Les trades de plus de 3 jours (un paramètre) utilisent des barres M1 et sont marqués « M1 ».
Le coût du spread et le coût du slippage sont déjà inclus dans le P/L de prix, car ils font partie du prix d'exécution. Ils sont affichés pour que vous voyiez quelle part du résultat ils ont prise. Ils ne sont pas déduits une seconde fois.
Les résultats sont enregistrés dans un petit fichier cache, de sorte que la mesure n'est faite qu'une fois par transaction. Sur les comptes de test, la première mesure de 1 246 exécutions et 557 trades a pris 7 secondes ; elle s'effectue par petites tranches en arrière-plan, et le panneau reste utilisable pendant ce temps.
Export CSV
Le bouton « Export CSV » écrit quatre fichiers dans MQL5\Files\EALedger\<account>\ :
- <time>_summary.csv : totaux de la période, opérations hors trading, contrôle du solde
- <time>_groups.csv : une ligne par groupe de la vue actuelle
- <time>_trades.csv : une ligne par trade, avec l'entrée et la sortie, les coûts, le spread et le slippage à l'entrée et à la sortie, les MFE et MAE en points et en argent, la source de chaque mesure et des notes
- <time>_deals.csv : une ligne par transaction, avec le trade auquel elle appartient, le prix demandé, la cotation au moment de l'ordre, le slippage et le spread
Avec le paramètre « Write the CSV files again after every history change », les mêmes fichiers sont tenus à jour sous le préfixe auto_.
Paramètres
| Paramètre | Par défaut | Signification |
|---|---|---|
| Period shown at start | All history | Today, This week, This month, All history, Custom |
| Custom period: from / to | 2026.01.01 / 0 | Heure du serveur. 0 = maintenant |
| View shown at start | By magic number | By magic number, By symbol, By magic number and symbol, By weekday of entry, By broker hour of entry, Trade list |
| Show only this magic number | -1 | -1 affiche tout |
| Measure spread and slippage at every fill | true | |
| Measure MFE / MAE of closed trades | true | |
| Trades up to this many days long use ticks | 3 | Les trades plus longs utilisent des barres M1 |
| Write the CSV files again after every history change | false | |
| Panel distance from the left / top edge | 8 / 22 | Pixels |
| Panel scale in % | 0 | 0 suit le DPI de l'écran |
| Hide the chart's own trade arrows while the panel is open | true | MetaTrader les dessine par-dessus le panneau. Le réglage du graphique est rétabli lorsque le panneau est replié ou que l'EA est retiré |
| Tester only: open sample positions | true | Voir ci-dessous |
Testeur de Stratégie
Au départ, le testeur n'a aucun historique de transactions à afficher. C'est pourquoi, dans le Testeur de Stratégie uniquement, l'EA ouvre lui-même une courte série de positions d'exemple :
- volume minimum (le double du minimum lorsque la marge le permet), trois magic numbers (« Sample A », « Sample B », « Sample C »)
- chaque position est ouverte, clôturée à moitié, puis le reste est clôturé, jusqu'à 60 positions
- la marge libre est vérifiée avant chaque nouvelle position ; si les fonds sont insuffisants, il écrit une note et n'envoie rien
Lancez-le en mode visuel pour voir le panneau se remplir. Les positions d'exemple ne constituent pas une stratégie de trading et leurs résultats ne disent rien sur le profit. Le testeur n'a pas de prix demandé pour les ordres au marché et peut ne disposer d'aucun historique des ticks ; le spread et les MFE/MAE y proviennent donc des barres M1, et le slippage est affiché « n/a » dans la liste des trades et 0,00 dans le résumé.
Sur un graphique en réel ou en démo, l'EA n'envoie, ne modifie et ne clôture jamais aucun ordre.
Limites (à lire avant d'acheter)
- Un emplacement de graphique : c'est un Expert Advisor, il occupe donc l'emplacement EA du graphique auquel il est attaché. Attachez-le à un graphique libre, pas au graphique d'un EA de trading.
- L'historique des ticks est celui du courtier : le spread, le slippage des ordres au marché et les MFE/MAE nécessitent l'historique des ticks du courtier pour la période du trade. Les courtiers le conservent pendant une durée limitée, et pour certains symboles pas du tout (un CFD sur action des tests n'en avait aucun). Des barres M1 sont alors utilisées et le trade est marqué « M1 », ou « n/a » en l'absence de données. La première mesure télécharge l'historique des ticks depuis le serveur du courtier.
- Le slippage des ordres au marché est mesuré par rapport à la cotation au moment où l'ordre a été passé. Il inclut tout mouvement de prix pendant l'exécution, ce qui correspond à ce que vous payez.
- Close By : MetaTrader comptabilise la totalité du profit d'une clôture par position opposée sur l'une des deux positions. Le registre l'affiche tel que le courtier l'a comptabilisé ; les totaux sont justes, la répartition entre les deux positions est celle de MetaTrader.
- Comptes netting : une même position peut être modifiée par plusieurs EA. Le trade appartient au magic number qui l'a ouvert ; les transactions d'autres magic numbers sur ce trade sont marquées « Mix ».
- Les montants sont affichés dans la devise du compte, tels que le courtier les indique. Un compte cent affiche des cents.
- Le swap est affiché dans sa propre colonne et n'est pas compté dans le coût tout compris par lot, qui couvre le spread, le slippage, la commission et les frais.
- Le jour de la semaine et l'heure sont ceux de l'entrée, en heure du serveur.
- Environnement testé :
- En direct sur quatre comptes démo : MetaQuotes-Demo USD hedging (1 249 transactions), EUR hedging (900 transactions), USD netting (262 transactions), et un compte démo chez un second courtier, USD hedging (337 transactions, dont de l'argent métal à 5 000 oz, des contrats d'indices à 10 unités et à 100 unités et des CFD sur actions). Sur les quatre, les totaux concordaient avec le solde au centime près, et chaque trade concordait avec une reconstruction séparée de l'historique écrite pour le test.
- Les comptes cent et l'or à 1 oz sont couverts par des tests unitaires avec des transactions synthétiques, et non par des comptes en direct. Aucun des deux courtiers ne les proposait en démo.
- La vitesse a été testée avec des historiques synthétiques de 50 000 et 200 000 transactions.
- Veuillez d'abord l'essayer sur un compte démo, avec la démo gratuite pour le Testeur de Stratégie.
