Chaque alerte envoie un seul message à tous les endroits que vous avez cochés. À lui seul, ce message indique ce qui s’est passé, le prix à cet instant et si l’alerte reste active. Ajoutez une note sur votre plan de trading pour voir ce que vous aviez prévu avant même d’ouvrir le graphique. Configurer votre alerte et son message est simple, rapide et précis. Saisissez-le dans l’éditeur, ou demandez à AI Trading Assistant à la voix ou par écrit.
Si vous utilisez votre propre logiciel, Discord ou Slack, un webhook y envoie aussi chaque alerte, sans rien avoir à recopier à la main. Ce guide couvre les deux.
L’exemple : une alerte sur EURUSD qui se déclenche quand le prix croise 1.09 à la hausse sur le graphique 5m.
Ce que dit le message automatique
Quand la zone Message est vide, l’alerte rédige elle-même son message au moment où elle se déclenche. Pour l’exemple, le message est le suivant :
EURUSD crossed above 1.09
Price 1.0901.
This alert is now off. It was set to fire once.
La première ligne indique ce qui s’est passé, avec les mots de l’éditeur d’alerte. La ligne suivante donne les chiffres de cet instant. La dernière ligne indique si l’alerte reste active. L’exemple utilise Once only : l’alerte est donc maintenant désactivée. Avec les autres choix de Trigger, la dernière ligne est « This alert stays on. »
Les autres alertes suivent le même ordre. Voici quelques premières lignes, chacune avec la ligne de chiffres qui la suit :
Une ligne : « GBPJPY touched 1h Resistance R1 » et « Price 210.16, line at 210.20. »
La cassure d’une ligne : « GBPJPY broke above 1h Resistance R1 » et « The 1h candle closed at 210.32, above the line at 210.20. »
Un indicateur : « BTCUSD: 1h RSI(14) crossed above 70 » et « RSI(14) was 71.4 when the 1h candle closed at 105240.50. »
Un changement de prévision : « GBPJPY: 1h forecast turned bearish » et « Before: bullish above 209.80. Now: bearish below 209.40. »
Une alerte à plusieurs conditions indique combien ont été remplies. Elle donne ensuite une ligne pour chaque condition remplie :
BTCUSD: both conditions met
• Price crossed above 105000: the 1h candle closed at 105240.50
• 1h RSI(14) is above 55 (now 58.2)
This alert stays on.
Avec davantage de conditions, la première ligne indique par exemple « all 3 conditions met » ou « 2 of 3 conditions met ». Quand une seule condition a été remplie, par exemple avec or, la première ligne nomme cette condition, et ses chiffres suivent.
Rédiger le message
Ouvrez l’éditeur d’alerte et allez dans l’onglet Options.
Cliquez sur la ligne Message. Elle affiche Auto tant qu’elle est vide. Une zone de texte s’ouvre en dessous.
Saisissez votre message. La zone accepte jusqu’à 400 caractères.
Pour ajouter une valeur en direct, ouvrez Available variables sous la zone. Copiez la variable exactement, avec ses doubles accolades.

Automatic message : la zone vide. Saisissez-y vos propres mots, ou laissez-la vide.
Le texte sous la zone : « Leave it blank and the alert says what happened and at what price. A message of your own is sent first, with that under it. » Autrement dit, sans texte de votre part, l’alerte dit ce qui s’est passé et à quel prix. Votre propre message passe en premier, avec ce texte en dessous.
Available variables : les valeurs en direct que vous pouvez ajouter à votre message.
Vos mots deviennent la première ligne, et le texte automatique les suit. Pour l’exemple, ce message :
{{symbol}} on {{timeframe}}: check the 1h trend before entering.
arrive ainsi :
EURUSD on 5m: check the 1h trend before entering.
EURUSD crossed above 1.09. Price 1.0901.
This alert is now off. It was set to fire once.
Le prix et la condition figurent déjà dans les lignes sous vos mots. Servez-vous de votre message pour ce que ces lignes ne peuvent pas dire, par exemple votre plan de trading.
Un message que vous saisissez sert aussi de nom à l’alerte dans la liste des alertes. Sans message, la liste affiche un nom tiré de la condition. Pour un niveau de prix, ce nom est court, comme « EURUSD crossing up 1.09 ». Pour une ligne ou plusieurs conditions, il reprend la phrase de l’éditeur, comme « GBPJPY: 1h Price touches 1h Resistance R1 ». Quand vous modifiez la condition, ce nom change avec elle. Quand vous rouvrez l’alerte, la zone Message est toujours vide. Les alertes enregistrées plus tôt sans message affichent elles aussi leur nom sous cette forme.
Ce que montre chaque endroit
Chaque endroit reçoit le même message, présenté à sa façon :
| Endroit | Ce qu’il affiche |
|---|---|
| La notification dans l’application | La première ligne en gras, avec les chiffres en dessous. |
| Notify my devices | La première ligne comme titre, avec les autres lignes en dessous. |
| Send to MetaTrader | La première ligne comme titre, avec les autres lignes en dessous. MetaTrader affiche sa propre heure à côté du message. |
| Telegram | Le message, l’heure dans votre propre fuseau horaire et un lien vers le graphique. |
| Send email | Le message, avec la date et l’heure dans votre propre fuseau horaire. |
| Webhook URL | Discord et Slack reçoivent le message avec l’heure UTC. Avec Raw JSON, votre logiciel reçoit les variables ci-dessous. |
Telegram écrit l’heure ainsi : « 24 Sep, 11:02 London time ». Si le fuseau horaire est faux, choisissez le vôtre sous Timezone sur la page Your profile. Quand ForecastCity ne connaît pas votre fuseau horaire, l’heure est en UTC.
Le lien d’un message Telegram, d’un e-mail, d’une notification sur téléphone ou d’une fenêtre pop-up MetaTrader ouvre le graphique de ce symbole avec le panneau Alerts. Pour la plupart des alertes 4CM-AI, il ouvre le graphique avec l’Alert observation de ce déclenchement.
Ajouter des valeurs en direct avec des variables
Une variable est remplacée par sa valeur quand l’alerte se déclenche. Voici les variables de Available variables :
| Variable | Ce qu’elle écrit | Exemple |
|---|---|---|
{{symbol}} |
Le symbole | EURUSD |
{{price}} et {{close}} |
Le prix au moment du déclenchement | 1.0901 |
{{condition_text}} |
Ce qui s’est passé, sans le symbole | Price crossed above 1.09 |
{{condition}} |
La condition sous forme de code court | CROSSING_UP 1.09 |
{{timeframe}} |
L’unité de temps de l’alerte | 5m |
{{time_iso}} |
La date et l’heure, en UTC | 2026-09-24 10:02 UTC |
{{time}} |
La même heure en nombre de secondes, pour les logiciels | 1790244120 |
{{time_now}} |
Le moment où le message a été envoyé, sous forme de nombre | 1790244121 |
{{exchange}} |
La source des prix | TwelveData |
{{status}} |
Si l’alerte reste active | This alert stays on. |
{{alert_url}} |
Un lien vers le graphique de ce symbole, avec vos alertes | une adresse web |
{{name}} |
Votre message, chaque variable remplacée par sa valeur, ou le nom affiché dans la liste des alertes | EURUSD crossing up 1.09 |
Pour une ligne, {{condition_text}} indique par exemple « Price touched 1h Resistance R1 ». Avec plusieurs conditions, il relie les conditions remplies par le mot and. Après le déclenchement d’une alerte Once only, {{status}} indique « This alert is now off. It was set to fire once. » Pour une alerte à plusieurs conditions, sur une ligne ou sur un indicateur, {{condition}} vaut TREE. Cette variable est un code destiné aux logiciels.
Pour les alertes 4CM-AI, {{forecast_summary}} résume ce qu’a fait la prévision et {{forecast_symbol}} indique le symbole de la prévision. {{forecast_cycle}} est un compteur qui augmente chaque fois que l’alerte recommence à surveiller. Un message qui contient {{forecast_summary}} ne reçoit pas de lignes automatiques en dessous, car le résumé dit déjà ce qui s’est passé.
{{price}} et {{close}} restent vides pour la plupart des alertes 4CM-AI, car elles n’ont pas de prix unique. {{time_iso}} est en UTC : l’heure peut donc différer de l’horloge de votre écran. Une variable qui n’existe pas reste exactement telle que vous l’avez saisie : un {{prices}} mal orthographié arrive sous la forme {{prices}}.
Envoyer les alertes vers un webhook
Un webhook envoie chaque alerte à une adresse web, où votre propre logiciel, un canal Discord ou un canal Slack la reçoit. Votre abonnement doit inclure les webhooks.
Dans l’onglet Options, sous Notifications, cochez Webhook URL. Un champ d’adresse, un choix Format et une zone du corps apparaissent.
Collez l’adresse sur laquelle votre récepteur écoute. Elle doit commencer par
http://ouhttps://.Réglez Format sur Raw JSON et laissez la zone du corps vide.
Appuyez sur Create, ou sur Save pour une alerte que vous avez modifiée.

L’adresse sur laquelle votre récepteur écoute. Utilisez les ports standard, 80 ou 443.
Format : Raw JSON pour votre propre logiciel, ou Discord ou Slack pour ces services.
Avec la zone du corps vide, votre récepteur reçoit un objet JSON avec toutes les variables du tableau, plus alertId et triggerId. Ces deux champs identifient l’alerte et ce déclenchement précis. Examinez un envoi réel avant de construire quoi que ce soit qui dépende de ses champs.
Sous la zone, l’éditeur affiche l’adresse du serveur d’où partent nos requêtes. Ajoutez-la à votre liste d’adresses autorisées si votre récepteur n’accepte que des adresses connues.
Ce que l’adresse doit respecter
Une adresse publique sur un port standard : 80 pour http, 443 pour https. Les messages vers d’autres ports, vers localhost ou vers une adresse de réseau privé ne sont pas envoyés.
Aucun nom d’utilisateur ni mot de passe dans l’adresse.
Une réponse en moins de 3 secondes, venant de cette adresse elle-même. Une redirection vers une autre adresse compte comme un échec.
L’éditeur vérifie seulement que l’adresse commence par http:// ou https://. Les autres exigences sont vérifiées au moment où un message part : testez donc votre adresse avec une vraie alerte. Pour les alertes de prix et les alertes d’analyse technique, si votre récepteur renvoie une erreur temporaire, l’envoi est retenté jusqu’à deux fois de plus. Le message d’une alerte 4CM-AI n’est pas renvoyé après un délai d’attente dépassé ou une erreur serveur, car votre récepteur a peut-être déjà agi en conséquence.
Rédiger votre propre corps de webhook
La zone du corps accepte un modèle avec les mêmes variables que le message. Elle peut contenir jusqu’à 2000 caractères. La zone vous laisse en saisir davantage, mais un corps plus long est refusé à l’enregistrement.
Pour Raw JSON, un récepteur qui attend un petit objet pourrait recevoir ce corps :
{"symbol":"{{symbol}}","condition":"{{condition_text}}","time":"{{time_iso}}","source":"ForecastCity"}
Les variables sont insérées en texte brut. Une valeur qui contient des guillemets ou un saut de ligne peut casser votre JSON. Un corps qui n’est pas du JSON valide est envoyé en texte brut.
Pour un canal Discord, réglez Format sur Discord et utilisez l’adresse de webhook du canal. Écrivez ensuite une courte ligne dans la zone du corps, par exemple :
{{symbol}}: {{condition_text}}. Open your alerts: {{alert_url}}
Pour Slack, choisissez Slack et écrivez de la même façon. ForecastCity place votre texte dans le format que chaque service attend. Avec une zone vide, les deux reçoivent le message de l’alerte, tel que montré plus haut, avec l’heure UTC sur sa dernière ligne.
Vérifier le résultat
Attendez que l’alerte se déclenche, puis ouvrez l’onglet Log du panneau Alerts.
Comparez ce qu’a reçu votre récepteur avec l’entrée du Log : ce qui s’est passé, le symbole et l’heure.
Le Log montre que l’alerte s’est déclenchée. Il ne montre pas si votre récepteur a accepté le message : consultez donc aussi le journal de votre récepteur. Si vous voyez des accolades comme {{prices}}, un nom de variable est mal orthographié. Si votre récepteur refuse le corps, vérifiez le JSON.
Bon à savoir
Le message va à tous les endroits que vous avez cochés. Le corps du webhook ne va qu’au webhook.
Discord affiche jusqu’à 1900 caractères et Slack jusqu’à 3000. Un texte plus long est coupé.