Skip to main content

Magic number MT4 : comment ça fonctionne et pourquoi l’utiliser

Représentation géométrique du magic number MT4

Le Magic Number est l’identifiant entier d’un ordre MT4 utilisé par les Expert Advisors pour reconnaître et gérer uniquement leurs propres trades. Sa valeur par défaut est 0, celle de tout ordre passé manuellement. Dès qu’un EA attribue un nombre différent, il peut filtrer la liste des positions ouvertes et ignorer tout ce qui ne porte pas sa signature.


En bref:

  • Le Magic Number est attribué au moment de l’ouverture d’un ordre via la fonction OrderSend, en remplaçant la valeur par défaut 0 par un entier spécifique à chaque EA.
  • La lecture fiable du Magic Number nécessite toujours une sélection préalable de l’ordre avec OrderSelect, avant de pouvoir utiliser OrderMagicNumber.
  • Pour éviter les collisions entre EA sur le même compte, il est conseillé d’encoder des métadonnées dans le Magic Number et de réserver des plages d’identifiants distinctes.
  • Les ordres manuels, identifiés par un Magic Number de 0, restent séparés des trades automatisés, facilitant leur gestion différenciée.
  • La gestion automatique ou manuelle des Magic Numbers dépend surtout du nombre de comptes et d’EA actifs simultanément, avec des outils de copie locale aidant à réduire les risques de conflit.

Mt4copier
Simplifiez vos comptes MT4 et MT5
Copiez les trades d’un ou plusieurs comptes maîtres vers plusieurs comptes clients, avec exécution locale et lots configurables.

Découvrir Mt4copier

Table des matières

Comment MT4 attribue le magic number à l’ouverture d’un ordre

Le Magic Number se définit au moment précis où l’ordre est envoyé, via le paramètre magic de la fonction OrderSend. Sa signature prévoit un entier nommé magic, avec 0 comme valeur par défaut quand rien n’est précisé. Un EA qui veut marquer ses propres trades remplace simplement ce zéro par un nombre de son choix au moment de l’appel, par exemple un nombre unique choisi pour une instance donnée sur une paire et une période précises.

Ce choix se fait une seule fois, à l’ouverture. Il n’existe aucun champ dans l’interface standard de MT4 permettant d’attacher un Magic Number à un ordre passé à la main depuis la fenêtre de trading : ces ordres resteront toujours à 0, ce qui en fait justement un moyen fiable de les distinguer des trades automatisés.

Méthode d’attribution du magic number MT4

Lire et parcourir les magic numbers en MQL4

Une fois les ordres ouverts, encore faut-il pouvoir les relire pour savoir lesquels appartiennent à quel EA. Le mécanisme standard combine trois fonctions, dans un ordre précis :

  1. Parcourir la liste des ordres ouverts avec OrdersTotal, qui renvoie leur nombre total.
  2. Sélectionner chaque ordre un par un grâce à OrderSelect, en indiquant sa position dans la liste.
  3. Lire ensuite son identifiant avec OrderMagicNumber et comparer la valeur à celle attendue avant d’agir dessus.

L’erreur la plus fréquente consiste à appeler directement OrderMagicNumber sans sélection préalable : la documentation précise bien qu’OrderSelect doit être exécuté en amont, faute de quoi la valeur retournée n’est pas fiable. Pour l’historique des ordres clôturés, la fonction équivalente à OrdersTotal est OrdersHistoryTotal, qui donne accès au nombre total de transactions archivées. La même logique de sélection s’applique avant toute lecture.

Cas d’usage concrets : multi-EA, trailing et multi-timeframe

Le scénario le plus courant reste la séparation de plusieurs EA tournant sur le même symbole : chacun reçoit un identifiant distinct et ignore tout ordre qui ne porte pas sa propre valeur, même si deux robots tradent EURUSD en parallèle.

  • Un EA de trailing stop conçu pour ne gérer que des trades automatisés vérifiera que OrderMagicNumber() != 0 avant d’intervenir, laissant intacts les ordres manuels.
  • Un système multi-timeframe peut encoder la période directement dans l’identifiant, ce qui permet de distinguer une instance tournant en M15 d’une autre en H1 sans dupliquer le code.
  • Un pattern largement documenté combine un identifiant d’EA et une période : _MagicNumber = Expert_ID*10 + Period_ID, avec Expert_ID déclaré en variable externe, comme le détaille cet article MQL5 sur l’identifiant magique des ordres.

Conseil de pro : déclarez toujours Expert_ID en variable externe modifiable, jamais en constante codée en dur, pour pouvoir dupliquer un EA sur plusieurs comptes sans collision.

Une limite à garder en tête : le Magic Number ne se modifie jamais sur une position déjà ouverte. Il est fixé une fois pour toutes à l’envoi de l’ordre.

Bonnes pratiques pour éviter les collisions entre EA

Des discussions de développeurs rapportent que de nombreux EA réutilisent les mêmes valeurs triviales, comme 12345 ou 55555, ce qui provoque des collisions documentées sur les forums MQL5 dès que deux instances tournent sur le même compte. Quelques règles simples limitent largement ce risque :

  1. Bannir les suites de chiffres répétitifs ou les valeurs par défaut copiées d’un tutoriel, et préférer une variable externe configurable à chaque installation.
  2. Encoder des métadonnées dans la construction du nombre : identifiant d’EA, période, parfois symbole, pour qu’un chiffre seul raconte déjà l’origine du trade.
  3. Tenir un registre simple, même un tableau partagé, listant chaque identifiant attribué par EA et par compte pour éviter les doublons au fil des déploiements.
  4. Tester systématiquement en compte démo avant toute mise en production, en vérifiant les ordres ouverts via OrderSelect et OrderMagicNumber.
  5. Ajouter un contrôle en fonction d’initialisation qui compare le Magic Number choisi à ceux déjà actifs sur le compte, pour repérer un doublon avant qu’il ne cause un conflit de gestion.

Ce type de discipline rejoint les recommandations pratiques formulées dans un article MQL5 sur la structuration des systèmes multi-EA, qui propose de réserver des plages d’identifiants par catégorie de stratégie.

Dépannage : symptômes, causes et correctifs rapides

Un EA qui modifie ou clôture des trades qu’il ne devrait pas toucher est le signe classique d’une collision de Magic Number, souvent parce que deux instances partagent la même valeur ou qu’un filtre a été mal écrit.

  • Vérifiez en premier qu’OrderSelect est bien appelé avant chaque lecture d’OrderMagicNumber, car une sélection manquante renvoie des valeurs incohérentes.
  • Consultez les codes d’erreur retournés par le terminal pour écarter un problème de sélection d’ordre plutôt qu’un vrai conflit d’identifiant.
  • Pour corriger un ordre déjà ouvert avec le mauvais identifiant, la seule solution documentée consiste à le clôturer puis à le rouvrir, comme l’indique cette discussion MQL5 sur l’impossibilité de modifier un magic number existant.
  • Gardez une trace des journaux d’exécution et validez tout changement d’identifiant en compte démo avant de le déployer en réel.

Pourquoi une exécution locale aide les traders multi-comptes

Une gestion stricte des Magic Numbers prend tout son sens quand plusieurs comptes tournent en parallèle, un contexte que nous connaissons bien chez MT4 copier depuis 2010. Notre logiciel copie les trades localement entre comptes MT4 et MT5, sans passer par un serveur cloud, ce qui limite les écarts de latence susceptibles de brouiller la correspondance entre un ordre source et sa copie. Notre option d’entrée façon manuelle aide à ce que des trades copiés soient moins facilement repérés comme automatisés. Pour approfondir la prévention des doublons, notre guide sur les trades dupliqués en MT4 détaille des vérifications complémentaires à celles des Magic Numbers.

Pourquoi une exécution locale aide les traders multi-comptes — overview diagram

Faut-il automatiser la gestion de vos identifiants

La réponse dépend surtout du nombre de comptes et d’EA actifs simultanément. Un seul robot sur un seul compte se gère très bien à la main. Dès que plusieurs stratégies, plusieurs comptes ou des exigences de prop firm imposant des ordres indiscernables d’une saisie manuelle entrent en jeu, un registre d’identifiants géré à la main devient vite source d’erreurs.

— Rimantas

Simplifier la gestion multi-comptes sans jongler avec les identifiants

Quand le nombre de comptes augmente, la discipline des Magic Numbers ne suffit plus toujours à elle seule : il faut aussi répliquer les ordres entre comptes sans ressaisie manuelle ni latence cloud. C’est exactement le terrain sur lequel nous intervenons avec notre logiciel de copie locale, installé directement sur votre PC ou VPS Windows.

Mt4copier

  • Copie locale entre comptes MT4 et MT5, exécutée en moins d’une seconde, sans routage par un serveur distant.
  • Option de copie façon manuelle, pensée pour les comptes de prop firms qui interdisent le trading automatisé détectable.
  • Ajustement automatique de la taille des lots selon le solde de chaque compte client, utile pour les gestionnaires de comptes multiples.

Nous proposons trois formules, PERSONAL, MANAGER et VIP, avec un essai gratuit de 7 jours pour tester la copie locale sur votre propre configuration avant tout engagement. Les détails et tarifs de chaque plan sont consultables directement sur notre page de tarification.

Questions fréquentes

Comment fonctionne un magic number dans un Expert Advisor ?

Un EA fixe le Magic Number au moment de l’ouverture de l’ordre via le paramètre magic d’OrderSend, puis relit cette valeur avec OrderMagicNumber pour n’agir que sur ses propres positions. Les ordres manuels gardent la valeur par défaut 0, comme le précise la documentation fxDreema sur les Magic Numbers.

Les traders utilisent-ils encore MT4 aujourd’hui ?

MT4 reste largement employé par les traders forex, notamment pour l’exécution d’Expert Advisors écrits en MQL4 et la gestion de comptes multiples via des outils de copie locale. Sa structure de Magic Numbers, héritée de ses débuts, continue de servir de base à la plupart des systèmes multi-EA actuels.

Comment alimenter un compte MT4 ?

Ce point reste donc à vérifier auprès de votre courtier plutôt que dans la configuration de vos EA.

Pouvez-vous donner un exemple concret de magic number ?

Un exemple courant combine un identifiant d’EA et une période de trading, selon la formule Expert_ID multiplié par dix plus Period_ID, décrite dans cet article MQL5 sur l’identifiant magique des ordres.
Ce type de composition permet d’obtenir un Magic Number propre à chaque instance précise.

Sources

Recommandations

Purple Trader

Leave a Reply