Bibliothèque de code source MQL5 pour MetaTrader 5 - 9

icon

Il s'agit de la plus grande bibliothèque de code source gratuite pour les programmes de la plateforme MetaTrader 5. Vous y trouverez des Expert Advisors, des indicateurs techniques, des scripts et des bibliothèques prêts à l'emploi. Utilisez la bibliothèque de codes lors de l'apprentissage du langage MQL5 et développez vos propres applications de trading automatisé basées sur les codes fournis.

Vous pouvez librement télécharger et tester les codes publiés, ainsi que les lancer dans MetaTrader 5. La bibliothèque est également disponible directement depuis la plateforme MetaTrader 5 et l'environnement de développement MetaEditor.

Soumettre votre code

Un oscillateur à transformée de Fisher élaboré à partir des principes statistiques fondamentaux : il normalise le cours dans une fourchette délimitée, puis applique une transformée logarithmique afin de générer des signaux de retournement nets et bien définis, contrairement aux inversions progressives caractéristiques des oscillateurs classiques. L'état récursif interne est géré à l'aide de tampons de calcul adaptés, garantissant un comportement fiable et correct lors des backtests. Extrait de la série d'articles « Créer des indicateurs personnalisés pour les débutants ».

L'EA « Hybrid Microstructure » est un Expert Advisor avancé de scalping à haute fréquence, spécialement conçu pour la paire XAUUSD (or) sur la période M1. Contrairement aux indicateurs traditionnels qui s'appuient sur des calculs mathématiques OHLC à retard, cet EA exploite la dynamique de la microstructure au niveau des ticks : il suit la vitesse des ticks, les écarts par rapport au cours moyen pondéré en fonction du volume (VWAP) et les rejets de balayage de liquidité (stop hunts) exécutés par les institutions.

Indicateur MQL5 professionnel (fenêtre séparée) qui analyse automatiquement plusieurs symboles et périodes, détecte les figures de Wolfe Wave valides les plus récentes (haussières/baissières), les affiche dans un tableau de bord interactif et permet d'ouvrir un graphique en un clic avec le tracé complet de la figure.

Il suit les fourchettes de séance des marchés asiatiques, londoniens et new-yorkais, verrouille chacune d’entre elles à la clôture de la séance et signale les véritables « liquidité sweeps » — une mèche qui perce un plus haut ou un plus bas verrouillé et clôture à nouveau à l’intérieur de celui-ci — à l’aide d’une flèche et d’une zone de réaction ombrée. Il ne se redessine pas et fonctionne sur n’importe quel symbole et n’importe quelle période.

Évalue si un signal d'entrée permet réellement de dégager un bénéfice supérieur aux coûts de transaction, avant que vous ne passiez des semaines à développer un EA autour de celui-ci. Fournit le résultat net après déduction des coûts, une statistique t fiable sur des échantillons non chevauchants et un contrôle aléatoire. Ne passe aucun ordre.

Crée un profil de volume glissant, s'adaptant à la volatilité, sur une fenêtre rétrospective configurable, et trace le « Point of Control » (POC), les plus hauts et plus bas de la zone de valeur, ainsi que les nœuds de volume haut et bas statistiquement significatifs (HVN/LVN) directement sur le graphique.

Suivi de la corrélation glissante entre le symbole du graphique actuel et un symbole de référence choisi, et signalement du moment où ils se découplent alors que leur écart de cours est statistiquement étendu.

Indicateur MT5 en lecture seule qui affiche sur le graphique les niveaux de stop et de gel définis par le courtier.

Monitor de spread open source professionnel pour MetaTrader 5. Affiche le spread en temps réel, les valeurs minimales, maximales et moyennes, un graphique historique ainsi que des alertes configurables en cas de spread élevé, le tout via un tableau de bord Quantora moderne.

Calculateur professionnel open source des coûts de trading pour MetaTrader 5. Calcule le coût du spread, la commission, le swap et le coût total estimé des opérations à partir des données en temps réel fournies par le courtier pour chaque symbole et des paramètres de position personnalisables.

Trace un oscillateur pondéré en volume et normalisé en fonction de la volatilité, qui signale les conditions d'impulsion et d'épuisement lorsque le cours s'éloigne de son VWAP glissant.

Un filtre de Kalman à un seul état qui redimensionne son propre bruit de processus à l'aide du rapport d'efficacité de Kaufman à chaque barre, se resserrant sur le cours lors des tendances et lissant davantage en période de fluctuations, représenté avec des bandes de régime qui s'élargissent et se contractent sur le même graphique.

Fond d'écran BMP avec graphique pour MT5

Une moyenne mobile adaptative à deux niveaux (moyenne de base + lissage secondaire) qui change de couleur en fonction de sa pente et signale les croisements entre le cours et la moyenne à l'aide de flèches.

Affiche les limites invisibles du contrat qui entraînent le rejet silencieux des ordres : niveau d'arrêt, niveau de gel, lot min./pas/max., taille et valeur du tick, type de spread, mode d'exécution, swaps, ainsi que la marge requise pour le lot minimum par rapport à votre marge disponible.

Un Expert Advisor qui mesure les plus hauts et les plus bas d'une fenêtre d'ouverture de séance définie, puis effectue des transactions lors de la cassure confirmée de cette fourchette, en appliquant un dimensionnement de position basé sur le risque et en limitant le nombre de transactions à une par séance.

« Reverse RSI Bands » est un indicateur avancé qui procède à une analyse mathématique inversée de la formule du RSI. Il trace des fourchettes de cours cibles précises directement sur le graphique principal, indiquant en temps réel à quel cours exactement le RSI atteindra les niveaux de surachat ou de survente que vous avez définis.

Utilitaire d'historique MT5 en lecture seule qui regroupe les exécutions partielles par identifiant de position et distingue le résultat brut des commissions, swaps, frais et du résultat net.

Outil d'inspection des sessions de trading natif du courtier, en lecture seule, affichant l'état actuel, la transition suivante, avec une portée multi-symboles et une fonctionnalité d'exportation au format CSV.

Script MT5 en lecture seule affichant le volume, le cours, les ordres stop, les blocages, le spread et les contraintes d'exécution du courtier.

« Enregistre les plus hauts et les plus bas de la séance précédente et signale les mouvements de liquidité qui reviennent à l'intérieur de la fourchette dans un nombre défini de barres. » — Catégorie « Autre », ou « Tendance » si vous préférez le classer ainsi.

News Trading Dashboard est un panneau d'information intégré au graphique (il n'effectue pas de transactions automatiquement) qui surveille la volatilité du marché en temps réel afin de détecter les moments de « pic lié à l'actualité » — ces fluctuations soudaines des cours qui surviennent lors de la publication de données économiques (NFP, IPC, décisions sur les taux d'intérêt, etc.).

Tests d'acceptation synthétiques déterministes pour la logique d'entrée des EA MT5, sans accès au marché, au compte ou aux ordres.

Le « Day Trader Dashboard » est un panneau visuel de type Bloomberg pour MetaTrader 5 qui suit une fourchette de cours intrajournalière et signale lorsque le cours se trouve à l'intérieur de celle-ci (zone de consolidation) ou qu'il en est sorti. Il ne passe pas d'ordres : il s'agit d'un outil d'aide à la décision qui calcule la fourchette haut/bas à partir des barres récentes, trace ces niveaux directement sur le graphique et affiche un état en temps réel (analyse en cours / dans la fourchette / sortie de fourchette) dans un panneau thématique à mise à l'échelle automatique. Il prend en charge plusieurs instances indépendantes sur un même graphique, propose plusieurs thèmes de couleurs et supprime 100 % de ses objets lorsqu’il est désactivé.

Il s'agit d'un panneau de terminal de type « FX Dashboard » sur le graphique MT5, ainsi que de lignes tracées sur le graphique (EMA, Bollinger, Donchian).

Un script d'audit en lecture seule destiné aux comptes exécutant plusieurs EA (ou des transactions manuelles en parallèle). Il regroupe l'historique des transactions clôturées par « magic number » et affiche une ligne par « magic » : transactions clôturées (aller-retour), P/L net incluant les swaps et les commissions des DEUX côtés de la transaction, taux de réussite, facteur de profit, gain/perte moyen, positions actuellement ouvertes et en attente, dates d'activité et symboles – le tout trié par résultat net, avec une exportation au format CSV pour les tableurs.

Daily Zone Recovery est un robot de trading multi-stratégies pour MetaTrader 5, qui fonctionne sur la base des plus hauts et des plus bas de la journée de trading précédente. Le robot suit l'évolution des cours à proximité des extrêmes quotidiens, utilise trois stratégies d'entrée indépendantes et peut gérer les positions à l'aide d'une grille à volume fixe.

Définissez votre pourcentage de risque, déplacez le stop et obtenez la taille exacte du lot, exprimée dans la devise de votre compte — marge et objectif compris. Cet outil ne fait que calculer, il n'effectue jamais de transactions.

Utilitaire gratuit et open source pour les graphiques MT5 (en lecture seule) qui évalue les conditions de tendance actuelles et élabore des plans de gestion des risques pour les positions longues et courtes, normalisés en fonction du courtier. Il utilise la direction et la pente de la moyenne mobile, l'ADX, le ratio d'efficacité, l'ATR, le spread, la devise du compte et les spécifications du symbole. Il n'ouvre, ne modifie ni ne clôture jamais de positions.

Cet EA pour MT5 est un outil de diagnostic qui n'effectue pas de transactions, mais recueille et affiche les caractéristiques techniques du courtier et de l'environnement de trading. Le code est structuré en 4 blocs principaux : Collecte de données (CollectAll) : extrait des informations sur le compte (effet de levier, devise), sur le symbole (nombre de chiffres, spread, swap, volumes, niveaux de stop), la latence (ping) et le fuseau horaire (différence serveur-UTC). Calcule le swap en devise réelle. Échantillonnage (OnTick) : met à jour en temps réel les statistiques sur le spread (minimum, moyenne, maximum). Sortie : imprime les données dans le journal « Experts », les enregistre dans un fichier CSV et les affiche sur un panneau graphique sur le graphique (UpdatePanel). Aides : des fonctions telles que CalcSwapInCurrency et diverses fonctions *ToStr convertissent les données numériques brutes du courtier en chaînes de caractères lisibles.

Un indicateur stochastique sans rafraîchissement qui génère des signaux d'achat et de vente en fonction des franchissements de zones extrêmes, doté d'un filtre de signaux alternés et d'alertes à la clôture des barres.

Four EAs writing to the same file, all with FILE_SHARE_READ|FILE_SHARE_WRITE, FileSeek(SEEK_END), FileWrite, FileClose. Looks correct. Every FileOpen returns success. No error in the log. And the lines vanish. Reason: FILE_SHARE_WRITE lets all four open at the same time. All four call FileSeek(SEEK_END) and get THE SAME offset, because none has written yet. All four write at the same position. Whoever closes last wins. Three lines vanish silently. In my case: 12 events expected, 8 in the file. The fix is to open EXCLUSIVELY (no FILE_SHARE_WRITE) and retry while another EA holds the file. And to shout in the log when the retries run out: a log that fails silently is worse than no log at all, because you trust it. The demo script reproduces both modes. To see the loss, drag it onto four charts at the same time with safe mode off and count the lines in the CSV. On a single chart the defect does not show up - which is why it passes in testing and breaks in production.

TimeCurrent() is not a clock. It is the stamp of the LAST TICK. Two consequences break robots in production: 1. It freezes. With no tick it does not move: illiquid instrument, end of session, unstable connection - and any rule based on it stops with it. 2. It steps backwards: on a symbol switch, a reconnection or a tick from another instrument, the value can go back. The case that cost me a whole protection: I compared the date of a daily decision with TimeCurrent() to reject an expired one. The server clock stepped back to the previous day, the comparison matched, and four EAs accepted YESTERDAY's decision as valid. The gate that should have failed closed failed open - without a single error in the log. Rule: TimeLocal() for timestamps, dates, day changes, expiry - all that must always move forward; TimeCurrent() for session hours and market data. The script measures the divergence in your environment and reports both symptoms live. Run it with the market closed.

Measures, hour by hour, how far a symbol travels and how much of that the spread takes away. Built for gold, works on any symbol, compares several side by side.

Your statement tells you what you KEPT. It does not tell you what you HAD. This indicator reads your own closed trades from the account history and draws, for each one, the full range it travelled: the best unrealised profit it ever showed (MFE) and the worst unrealised loss it survived (MAE). The gap between what a trade showed and what it paid is where two common problems hide, and neither is visible in a balance curve: winners closing far below their best point (the exit leaves money behind), and losers whose worst excursion barely passed the stop (the stop sits inside the noise). The number to look at is the CAPTURE RATIO: of the profit a winner showed at its best, how much did you take home? 90% says the exits are well placed; 30% says the market kept offering and the exit kept refusing. Limit, stated up front: excursions come from the bars each trade spanned, on the chart timeframe; the path inside a bar is unknown. Predicts nothing; measures trades that already happened.

A daily process writes "today's decision" (which strategy runs, or FLAT) to a file the EAs read at the open. One day the writer did not run. The EAs read yesterday's file, compared its date with TimeCurrent() - the server clock, which had stepped back to the previous day overnight - saw a match, and traded all morning on a 24-hour-old decision. No error anywhere. Two rules, both in this class: 1) staleness is judged against TimeLocal(), which always moves forward; TimeCurrent() is the last tick's stamp - it freezes without ticks and can step back on reconnect. 2) When in doubt the answer is FLAT: missing file, bad date, wrong day, empty line - every failure path returns "do nothing", and each is logged ONCE per state change, not on every tick and not never. File format: line 1 = ISO date, line 2 = decision string. The demo writes a fresh, a stale, a malformed, an empty and a missing file, and shows that only the first is allowed to trade.

Four EAs on the same symbol, each one honest on its own: each checks "do I have a position?" with its own magic number, sees none, and enters. On a demo account this reached 22 contracts on a symbol meant to carry 1, and a watchdog had to close 16 positions in one morning. The cap belongs at the door, not after the fact. ExposureCap::Allowed(symbol, lots, cap) sums the volume of every open position on the symbol - all magic numbers, manual trades included - and refuses the order BEFORE it is sent when it would breach the cap. One log line with the three numbers (held, requested, cap) says why. Deliberately simple: gross exposure, no netting of longs against shorts, no per-EA quota. It is a check, not a lock: two EAs deciding on the same tick can both pass; in practice EAs on different charts decide on different ticks. The demo script prints held / cap / room for the current symbol and shows the refusal line. Nothing is traded.

A datetime in MQL5 is seconds since 1970 - but server time (TimeCurrent, bar times, deal times) is the broker's wall clock stored AS IF it were UTC. Export it to CSV, read it in Python or a spreadsheet with a "seconds since 1970 UTC" parser, and every timestamp shifts by the server's UTC offset. On a UTC-3 broker that is three hours: the daily bar dated 00:00 reads as 21:00 of the previous day, and "yesterday's session" silently becomes "today's, half formed". That happened to a morning report of mine before this script existed. The script prints TimeTradeServer, TimeCurrent, TimeGMT and TimeLocal, the three offsets between them, the tick lag, and this chart's last bar time in server time and in real UTC - then states the rule: export server timestamps as wall-clock text, or export the epoch together with the offset, and never let the consumer apply its own timezone.

A simple MQL5 script that calculates the correct lot size for a trade based on your account risk percentage and stop loss distance in pips, so every trade risks a consistent, controlled amount of your balance.

Sizes your next trade based on the correlated risk you already have open across other positions — not just the trade in isolation.