Envoyer des alertes Telegram depuis un EA MQL5 : tutoriel complet
Automatisez votre veille de trading et réagissez en temps réel aux signaux du marché. Ce guide vous explique pas à pas comment connecter votre Expert Advisor MQL5 à Telegram pour recevoir des notifications sur votre smartphone.
Dans l’univers du trading algorithmique, la réactivité est une arme absolue. Pendant que votre Expert Advisor (EA) exécute des ordres sur MetaTrader 5, vous ne pouvez pas rester scotché à l’écran 24h/24. C’est là que les notifications Telegram EA MQL5 entrent en jeu. Ce canal de messagerie, puissant et gratuit, devient l’extension indispensable de votre robot de trading. Cet article est un tutoriel complet pour développeurs et traders automatisés. Nous allons détailler, de A à Z, la méthode pour que votre EA puisse envoyer des alertes, des signaux, des résultats d’opérations ou des messages d’erreur directement sur votre téléphone via un bot Telegram. Vous gagnerez en sérénité et en contrôle, où que vous soyez.
1. Prérequis : Créer son bot Telegram et obtenir le token API
À lire aussi : notre tutoriel pour copier des signaux Telegram en MQL5
La première étape pour configurer vos notifications Telegram EA MQL5 est de créer un intermédiaire : le bot Telegram. Rassurez-vous, aucun code n’est nécessaire ici. Ouvrez l’application Telegram et recherchez “@BotFather”. C’est le bot officiel pour créer et gérer tous les autres bots. Initiez une conversation et envoyez la commande /newbot. Suivez les instructions : donnez un nom à votre bot (ex: “Mon EA Trader”) puis un nom d’utilisateur se terminant par ‘bot’ (ex: “mon_ea_trading_bot”). À la fin du processus, BotFather vous fournira un token d’accès HTTP API. Il ressemble à ceci : 710261543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw. Conservez-le précieusement, c’est la clé de votre bot. Enfin, démarrez une conversation avec votre nouveau bot (recherchez son nom d’utilisateur) et envoyez-lui un premier message (ex: “/start”).
2. Récupérer l’ID de votre chat Telegram
Pour que le bot sache où envoyer les messages, vous devez lui fournir l’identifiant unique (Chat ID) de la conversation. Il peut s’agir d’un chat privé (vous seul) ou d’un groupe. La méthode la plus simple utilise un autre bot : “@userinfobot”. Commencez une conversation avec lui, et il vous renverra immédiatement votre “Id”. Notez ce numérique (ex: 123456789). Pour un groupe, ajoutez “@userinfobot” dans le groupe, et il affichera l’ID du groupe. Une fois ces deux éléments en votre possession – le Token du Bot et le Chat ID – votre canal de communication est techniquement prêt. Nous allons maintenant coder la fonction dans MQL5 qui utilisera ces identifiants.
// Définition des constantes pour Telegram (À MODIFIER AVEC VOS DONNÉES)
input string TelegramToken = "710261543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw"; // Token de votre bot
input string TelegramChatID = "123456789"; // Votre Chat ID
3. Coder la fonction d’envoi de message dans MQL5
Le cœur technique des notifications Telegram EA MQL5 réside dans une fonction qui envoie une requête HTTP à l’API de Telegram. MQL5 dispose de la fonction WebRequest pour cela. Voici une implémentation robuste qui gère les erreurs et encode correctement le message. Cette fonction peut être placée dans votre EA, généralement dans un fichier d’include pour plus de modularité.
bool SendTelegramMessage(string token, string chat_id, string text)
{
string url = "https://api.telegram.org/bot" + token + "/sendMessage";
string headers = "Content-Type: application/x-www-form-urlencoded";
string request = "chat_id=" + chat_id + "&text=" + text;
char data[], result[];
string result_headers;
// Conversion de la requête en tableau de caractères
StringToCharArray(request, data, 0, StringLen(request));
// Désactivation temporaire de l'alerte d'erreur 4010 (pour les tests sans autorisation d'URL)
int reset_flags = ResetLastError();
int err = GetLastError();
// Envoi de la requête POST
int res = WebRequest("POST", url, headers, 5000, data, result, result_headers);
// Vérification du résultat
if(res == -1)
{
int last_error = GetLastError();
Print("Erreur WebRequest. Code d'erreur = ", last_error);
// ERREUR 4010 : Il faut ajouter l'URL dans la liste des URLs autorisées (Outils -> Options -> Expert Advisors)
if(last_error == 4010)
Print("Ajoutez 'https://api.telegram.org' dans la liste des URLs autorisées dans MT5.");
return(false);
}
else if(res == 200) // Succès HTTP 200 OK
{
Print("Notification Telegram envoyée avec succès.");
return(true);
}
else
{
Print("Réponse HTTP inattendue : ", res);
return(false);
}
}
4. Intégration et exemples pratiques dans un EA
Maintenant, intégrons cette fonctionnalité dans la logique de votre EA. Les notifications Telegram EA MQL5 doivent être stratégiques pour ne pas être submergé. Appelez la fonction SendTelegramMessage aux moments clés. Voici des exemples concrets : à l’initialisation de l’EA pour confirmer son démarrage, à chaque exécution d’un ordre (achat/vente), à la fermeture d’un trade (avec le profit/pertes), ou en cas d’erreur critique (solde insuffisant, perte de connexion). Vous pouvez formater le message pour qu’il soit clair et informatif.
// Exemple d'appel lors de l'ouverture d'un ordre
void OnTrade()
{
if(OrderSelect(OrderTicket(), SELECT_BY_TICKET))
{
string message = "Nouvel ordre EXÉCUTÉ\n";
message += "Symbole: " + OrderSymbol() + "\n";
message += "Type: " + (OrderType()==OP_BUY ? "ACHAT" : "VENTE") + "\n";
message += "Volume: " + DoubleToString(OrderLots(), 2) + "\n";
message += "Prix: " + DoubleToString(OrderOpenPrice(), Digits);
SendTelegramMessage(TelegramToken, TelegramChatID, message);
}
}
// Exemple d'appel à l'initialisation (dans OnInit)
int OnInit()
{
SendTelegramMessage(TelegramToken, TelegramChatID, "✅ EA '" + _Symbol + "' démarré avec succès sur le compte " + IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)));
return(INIT_SUCCEEDED);
}
Astuce Pro : N’oubliez pas l’étape cruciale dans MetaTrader 5 ! Pour autoriser votre EA à communiquer avec l’extérieur, vous devez ajouter “https://api.telegram.org” dans la liste des URLs autorisées. Allez dans Outils > Options > Expert Advisors, et cliquez sur “Ajouter” pour coller cette URL. Sans cela, la fonction WebRequest échouera avec l’erreur 4010.
5. Aller plus loin : Alertes avancées et gestion des erreurs
Pour des notifications Telegram EA MQL5 vraiment professionnelles, pensez à la robustesse et à la richesse de l’information. Implémentez une gestion des erreurs renforcée : en cas d’échec d’envoi, votre EA pourrait réessayer après un délai ou journaliser l’incident dans un fichier. Vous pouvez également envoyer des messages formatés (Markdown ou HTML selon le mode utilisé par le bot) pour mettre en gras les chiffres importants comme le profit. Pour les traders qui passent par des proprietary trading firms, les alertes peuvent inclure des données de risque comme le drawdown courant ou le nombre de lots utilisés, cruciales pour le respect des règles. Enfin, vous pouvez recevoir des commandes depuis Telegram (via un webhook plus complexe) pour interroger l’état de votre EA ou le mettre en pause à distance.
Besoin d’un EA sur-mesure avec des alertes Telegram avancées ? Demander un devis gratuit
Questions fréquentes
Pourquoi mon EA ne parvient pas à envoyer de message (erreur 4010) ?
C’est l’erreur la plus courante. Elle signifie que MetaTrader 5 bloque la connexion externe pour des raisons de sécurité. Vous devez explicitement autoriser l’URL de l’API Telegram. Dans MT5, allez dans Outils > Options > Expert Advisors. Dans la section “Autoriser l’accès WebRequest pour les URL listées”, cliquez sur “Ajouter” et entrez https://api.telegram.org. Pensez également à cocher “Autoriser le WebRequest pour les URL listées” en haut de la fenêtre.
Puis-je envoyer des notifications à un groupe Telegram et non à moi seul ?
Absolument. Le processus est identique. Il vous suffit d’utiliser l’ID du groupe à la place de votre Chat ID personnel. Pour l’obtenir, ajoutez le bot “@userinfobot” dans votre groupe. Il affichera immédiatement l’ID du groupe (un nombre négatif, ex: -1001234567890). Utilisez cet ID dans la constante TelegramChatID de votre EA. Tous les membres du groupe recevront alors les alertes.
Est-il possible d’envoyer une image (un graphique) via Telegram depuis MQL5 ?
Oui, l’API Telegram le permet via la méthode sendPhoto. Cependant, c’est plus complexe qu’un simple message texte. Il faut que votre EA sauvegarde d’abord le graphique ou une capture d’écran dans un fichier (avec ChartScreenShot), puis envoie ce fichier via une requête HTTP multipart/form-data. Cela nécessite une manipulation plus poussée des données dans WebRequest. Pour la majorité des usages, les alertes textuelles bien formatées sont suffisantes et plus fiables.
Les notifications Telegram fonctionnent-elles si mon ordinateur et MT5 sont éteints ?
Non. Votre EA MQL5 s’exécute localement sur votre terminal MetaTrader 5. Si votre ordinateur est éteint ou si MT5 n’est pas lancé, l’EA ne tourne pas et ne peut donc pas envoyer d’alertes. Pour une surveillance 24/7 même hors ligne, il faudrait déployer votre EA sur un serveur dédié (VPS) qui reste allumé en permanence, une pratique très courante et recommandée pour le trading algorithmique sérieux.
📚 Articles connexes :
À lire aussi :