Envoyer des emails depuis un EA MQL5 : alertes automatiques de trading
Ne ratez jamais une opportunité ou un danger sur vos positions. Découvrez comment configurer votre Expert Advisor MQL5 pour envoyer des alertes email automatiques en temps réel, même loin de votre terminal MetaTrader.
Introduction : Pourquoi intégrer des alertes email dans votre EA MQL5 ?
Le trading algorithmique offre une autonomie précieuse, mais il ne remplace pas une supervision humaine éclairée. Un EA qui ouvre et ferme des positions sans vous prévenir peut vous exposer à des risques majeurs : un drawdown inattendu, un changement de tendance brutal, ou une panne de connexion. L’alerte email est la solution idéale pour garder un œil sur vos trades en toutes circonstances. En recevant un message directement sur votre smartphone, vous pouvez intervenir ou simplement rester informé de l’activité de votre robot. Cet article vous guide pas à pas pour implémenter la fonctionnalité envoyer email ea mql5 alertes dans vos Experts Advisors, en vous appuyant sur des fonctions natives puissantes et une configuration simple. Nous allons voir comment envoyer des emails depuis un EA MQL5, de la configuration du terminal à l’écriture du code, pour des alertes automatiques de trading fiables et personnalisées.
1. Configurer MetaTrader 5 pour l’envoi d’emails
Avant d’écrire une seule ligne de code, vous devez paramétrer MetaTrader 5 pour qu’il puisse communiquer avec votre serveur SMTP. Cette étape est cruciale et souvent négligée. Sans elle, votre EA ne pourra pas envoyer d’email.
Étape 1 : Accéder aux paramètres
Ouvrez MetaTrader 5, allez dans le menu Outils > Options, puis cliquez sur l’onglet Email.
Étape 2 : Remplir les champs SMTP
Vous devez fournir les informations de votre serveur de messagerie. Voici un exemple pour Gmail (moins sécurisé, nécessite un mot de passe d’application) ou un service SMTP dédié :
– Serveur SMTP : smtp.gmail.com
– Port : 465 (SSL) ou 587 (TLS)
– Activer l’authentification : Oui
– Login : [email protected]
– Mot de passe : votre mot de passe d’application (ne pas utiliser votre mot de passe Gmail standard)
– De : [email protected]
– À : [email protected] (peut être le même que l’expéditeur)
Conseil : Pour les prop firms ou les comptes sérieux, utilisez un service SMTP transactionnel comme SendGrid ou Mailgun pour une fiabilité accrue.
Étape 3 : Tester la configuration
Cliquez sur le bouton Tester. Si tout est correct, vous recevrez un email de test. Sinon, vérifiez vos identifiants et les ports autorisés par votre hébergeur.
2. Utiliser la fonction SendMail() en MQL5
La fonction native SendMail() est votre outil principal pour envoyer des alertes. Elle est simple d’utilisation mais nécessite une configuration préalable (étape 1). Voici sa syntaxe :
bool SendMail(
string subject, // Sujet de l'email
string message // Corps du message
);
Cette fonction retourne true si l’envoi a réussi, false en cas d’échec. Il est impératif de vérifier la valeur de retour pour diagnostiquer les problèmes.
Exemple d’utilisation dans un EA :
//+------------------------------------------------------------------+
//| Envoi d'une alerte email |
//+------------------------------------------------------------------+
void EnvoyerAlerteEmail(string sujet, string message)
{
if(!SendMail(sujet, message))
{
Print("Erreur lors de l'envoi de l'email. Code erreur : ", GetLastError());
}
else
{
Print("Email envoyé avec succès : ", sujet);
}
}
Points importants :
– Le sujet ne doit pas dépasser 128 caractères.
– Le message peut contenir des sauts de ligne (\r\n).
– Les caractères spéciaux (accents) peuvent poser problème ; utilisez du texte ASCII simple.
3. Créer des alertes automatiques pour les événements clés
Un EA performant doit envoyer des alertes pour des événements précis. Voici une structure en étapes numérotées pour implémenter différents types d’alertes.
Étape 1 : Alerte lors de l’ouverture d’une position
Dans votre fonction OnTick() ou après un ordre réussi, appelez votre fonction d’envoi :
void OnTrade()
{
if(PositionSelect(_Symbol))
{
string sujet = "Position ouverte sur " + _Symbol;
string message = "Type : " + EnumToString(PositionGetInteger(POSITION_TYPE)) + "\r\n";
message += "Volume : " + DoubleToString(PositionGetDouble(POSITION_VOLUME), 2) + "\r\n";
message += "Prix d'entrée : " + DoubleToString(PositionGetDouble(POSITION_PRICE_OPEN), _Digits);
EnvoyerAlerteEmail(sujet, message);
}
}
Étape 2 : Alerte de take profit ou stop loss atteint
Surveillez les positions en cours et détectez leur fermeture :
void OnTradeTransaction(...)
{
// Vérifier si une position a été fermée
if(trade_transaction_type == TRADE_TRANSACTION_DEAL_ADD)
{
// Récupérer les détails de la transaction
// et envoyer un email si c'est un TP ou SL
}
}
Étape 3 : Alerte de drawdown excessif
Ajoutez un contrôle périodique (par exemple toutes les 5 minutes) :
void OnTimer()
{
double drawdown = AccountInfoDouble(ACCOUNT_EQUITY) - AccountInfoDouble(ACCOUNT_BALANCE);
if(drawdown < -500) // Drawdown de 500 EUR
{
EnvoyerAlerteEmail("Alerte Drawdown", "Drawdown actuel : " + DoubleToString(drawdown, 2));
}
}
Étape 4 : Alerte de changement de lot ou de stratégie
Loggez les modifications de paramètres de l'EA et envoyez un email récapitulatif.
4. Gérer les erreurs et les limites de l'envoi d'emails
L'envoi d'emails depuis un EA MQL5 peut échouer pour plusieurs raisons. Il est essentiel de les anticiper pour garantir la fiabilité de vos alertes.
Erreurs courantes :
- Erreur 4060 (ERR_SEND_MAIL_ERROR) : Problème de connexion SMTP. Vérifiez vos paramètres et votre connexion internet.
- Erreur 4061 (ERR_SEND_MAIL_AUTH_REQUIRED) : Authentification SMTP incorrecte.
- Erreur 4062 (ERR_SEND_MAIL_TOO_FREQUENTLY) : Vous envoyez trop d'emails en peu de temps. Respectez un intervalle minimum (ex: 60 secondes).
Limites à prendre en compte :
- MetaTrader limite le nombre d'emails par minute (généralement 5-10). Ne spammez pas votre boîte mail.
- Votre serveur SMTP peut avoir des quotas quotidiens (ex: 500 emails/jour pour Gmail).
- Les emails peuvent être filtrés comme spam. Utilisez un sujet clair et évitez les mots déclencheurs.
Conseil pro : Implémentez une file d'attente d'emails dans votre EA pour éviter les envois simultanés et respecter les limites. Par exemple, stockez les messages dans un tableau et envoyez-les un par un avec un délai.
SendNotification()) ou des logs dans un fichier CSV. En cas de panne SMTP, vos alertes basculeront sur un autre canal. Testez toujours votre système en conditions réelles avant de l'utiliser sur un compte live.
Besoin d'un EA sur-mesure ? Demander un devis gratuit
5. Exemple complet d'un EA avec alertes email
Voici un squelette d'EA qui envoie un email à chaque nouvelle bougie et lors de l'ouverture d'une position. Adaptez-le à votre stratégie.
//+------------------------------------------------------------------+
//| EA_Alerte_Email.mq5 |
//| Copyright 2025, Votre Nom |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025"
#property version "1.00"
#property strict
input double Lots = 0.1; // Volume des trades
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
EventSetTimer(60); // Timer toutes les 60 secondes
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// Logique de trading ici
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
string sujet = "Rapport horaire - " + _Symbol;
string message = "Heure : " + TimeToString(TimeCurrent()) + "\r\n";
message += "Bid : " + DoubleToString(SymbolInfoDouble(_Symbol, SYMBOL_BID), _Digits) + "\r\n";
message += "Equity : " + DoubleToString(AccountInfoDouble(ACCOUNT_EQUITY), 2);
EnvoyerAlerteEmail(sujet, message);
}
//+------------------------------------------------------------------+
//| Trade function |
//+------------------------------------------------------------------+
void OnTrade()
{
if(PositionSelect(_Symbol))
{
string sujet = "Nouveau trade sur " + _Symbol;
string message = "Volume : " + DoubleToString(Lots, 2) + "\r\n";
message += "Prix : " + DoubleToString(PositionGetDouble(POSITION_PRICE_OPEN), _Digits);
EnvoyerAlerteEmail(sujet, message);
}
}
//+------------------------------------------------------------------+
//| Send email function |
//+------------------------------------------------------------------+
void EnvoyerAlerteEmail(string sujet, string message)
{
if(!SendMail(sujet, message))
{
Print("Erreur envoi email : ", GetLastError());
}
}
//+------------------------------------------------------------------+
Ce code est un point de départ. Personnalisez les alertes selon vos besoins (drawdown, profit, signaux techniques).
6. Optimiser vos alertes pour le trading automatisé
Pour que vos alertes soient réellement utiles, suivez ces bonnes pratiques :
- Priorisez les événements : Ne notifiez que les actions importantes (ouverture, fermeture, drawdown). Évitez les alertes de tick.
- Utilisez des identifiants uniques : Ajoutez un numéro de ticket ou un timestamp pour suivre chaque alerte.
- Formatez le message : Utilisez un tableau simple dans le corps de l'email pour plus de clarté. Exemple : "Symbole | Type | Volume | Prix".
- Testez en conditions réelles : Utilisez un compte démo pendant au moins une semaine pour valider la fiabilité de l'envoi.
- Documentez votre code : Commentez chaque étape pour faciliter la maintenance.
Enfin, si vous travaillez avec une prop firm, vérifiez ses règles concernant les alertes automatisées. Certaines interdisent les modifications de paramètres en cours de trade, mais autorisent les notifications.
Questions fréquentes
Mon EA n'envoie pas d'email, que faire ?
Vérifiez d'abord la configuration SMTP dans MetaTrader (Outils > Options > Email). Utilisez le bouton "Tester". Si le test échoue, le problème vient de vos paramètres (serveur, port, authentification). Si le test réussit mais que votre EA ne fonctionne pas, ajoutez des Print() dans votre code pour voir si la fonction SendMail() est appelée et si elle retourne true ou false. Consultez le journal des experts (Journal) pour les codes d'erreur.
Puis-je envoyer des emails avec des pièces jointes (ex: screenshot) ?
Non, la fonction SendMail() de MQL5 ne supporte pas les pièces jointes. Elle envoie uniquement un texte brut. Pour des pièces jointes, vous devez passer par une API externe (ex: via une requête HTTP vers un service comme SendGrid). Cela nécessite des compétences avancées en programmation MQL5 et l'utilisation de WebRequest().
Combien d'emails puis-je envoyer par heure ?
MetaTrader n'impose pas de limite stricte, mais votre serveur SMTP en a une (ex: 500/jour pour Gmail, 100/heure pour certains hébergeurs). De plus, MetaTrader peut ralentir les envois si vous dépassez 5-10 emails par minute. Pour éviter d'être bloqué, espacez vos alertes (ex: une toutes les 5 minutes) et utilisez une file d'attente dans votre code.
Est-ce que les alertes email fonctionnent sur un VPS ?
Oui, absolument. C'est même l'usage recommandé. Assurez-vous que votre VPS a accès à internet et que le port SMTP (465 ou 587) n'est pas bloqué par le pare-feu. Configurez MetaTrader de la même manière que sur votre ordinateur local. Les alertes seront envoyées même lorsque votre PC est éteint.