Ogni alert invia un unico messaggio a tutte le destinazioni che hai selezionato. Da solo, il messaggio indica cosa è successo, il prezzo in quel momento e se l'alert resta attivo. Aggiungi una nota sul tuo piano di trading per ricordare cosa avevi previsto prima ancora di aprire il grafico. Impostare l'alert e il relativo messaggio è semplice, rapido e preciso: digitalo nell'editor, oppure chiedi ad AI Trading Assistant a voce o per iscritto.
Se usi un tuo software, Discord o Slack, un webhook invia ogni alert anche lì, senza dover copiare nulla a mano. Questa guida spiega entrambi gli aspetti.
L'esempio: un alert su EURUSD che si attiva quando il prezzo incrocia al rialzo 1.09 sul grafico a 5m.
Cosa dice il messaggio automatico
Quando il campo Message è vuoto, l'alert genera automaticamente il proprio messaggio al momento dell'attivazione. Per l'esempio, il messaggio riporta:
EURUSD crossed above 1.09
Price 1.0901.
This alert is now off. It was set to fire once.
La prima riga descrive cosa è successo, con le parole dell'editor degli alert. La riga successiva riporta i valori di quel momento. L'ultima riga indica se l'alert resta attivo. L'esempio usa l'opzione Once only, quindi l'alert ora è disattivato. Con le altre opzioni di Trigger, l'ultima riga riporta «This alert stays on.» (l'alert resta attivo).
Gli altri alert seguono lo stesso ordine. Ecco alcune prime righe, ciascuna accompagnata dalla riga con i valori sottostanti:
Una linea: «GBPJPY touched 1h Resistance R1» (GBPJPY ha toccato la resistenza R1 a 1h) e «Price 210.16, line at 210.20.» (prezzo 210.16, linea a 210.20).
La rottura di una linea: «GBPJPY broke above 1h Resistance R1» (GBPJPY ha rotto al rialzo la resistenza R1 a 1h) e «The 1h candle closed at 210.32, above the line at 210.20.» (la candela a 1h ha chiuso a 210.32, sopra la linea a 210.20).
Un indicatore: «BTCUSD: 1h RSI(14) crossed above 70» (l'RSI a 14 periodi su 1h ha incrociato al rialzo 70) e «RSI(14) was 71.4 when the 1h candle closed at 105240.50.» (l'RSI era a 71.4 alla chiusura della candela a 1h a 105240.50).
Un cambio di previsione: «GBPJPY: 1h forecast turned bearish» (la previsione a 1h è passata a ribassista) e «Before: bullish above 209.80. Now: bearish below 209.40.» (prima rialzista sopra 209.80, ora ribassista sotto 209.40).
Un alert con più condizioni indica quante ne sono state soddisfatte, poi riporta una riga per ciascuna condizione verificata:
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.
Con più condizioni, la prima riga riporta ad esempio «all 3 conditions met» (tutte e 3 le condizioni soddisfatte) o «2 of 3 conditions met» (2 condizioni su 3 soddisfatte). Quando è stata soddisfatta una sola condizione, ad esempio con il connettore or, la prima riga nomina quella condizione, seguita dai relativi valori.
Scrivere il messaggio
Apri l'editor degli alert e vai alla scheda Options.
Fai clic sulla riga Message. Finché è vuota mostra Auto. Sotto si apre un campo di testo.
Digita il tuo messaggio. Il campo può contenere fino a 400 caratteri.
Per aggiungere un valore aggiornato in tempo reale, apri Available variables sotto il campo. Copia la variabile esattamente com'è, comprese le doppie parentesi graffe.

Automatic message: il campo vuoto. Digita qui il tuo testo oppure lascialo vuoto.
La riga sotto il campo: «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.» (se lo lasci vuoto, l'alert indica cosa è successo e a quale prezzo; un tuo messaggio viene inviato per primo, seguito da quei dati).
Available variables: i valori in tempo reale che puoi inserire nel messaggio.
Il tuo testo diventa la prima riga, seguito dal testo automatico. Per l'esempio, questo messaggio:
{{symbol}} on {{timeframe}}: check the 1h trend before entering.
arriva così:
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.
Il prezzo e la condizione compaiono già nelle righe sotto il tuo testo. Usa il messaggio per ciò che quelle righe non dicono, come il tuo piano di trading.
Il messaggio che digiti diventa anche il nome dell'alert nell'elenco del pannello Alerts. Se non ne scrivi uno, l'elenco mostra un nome ricavato dalla condizione. Per un livello di prezzo il nome è breve, come «EURUSD crossing up 1.09». Una linea o più condizioni vengono mostrate come le scrive l'editor, ad esempio «GBPJPY: 1h Price touches 1h Resistance R1». Quando modifichi la condizione, questo nome si aggiorna di conseguenza. Quando riapri l'alert, il campo Message è ancora vuoto. Anche gli alert salvati in precedenza senza messaggio mostrano il nome in questa forma.
Cosa mostra ogni destinazione
Ogni destinazione riceve lo stesso messaggio, formattato per quel canale:
| Destinazione | Cosa mostra |
|---|---|
| La notifica nell'applicazione | La prima riga in grassetto, con i valori sotto. |
| Notify my devices | La prima riga come titolo, con le altre righe sotto. |
| Send to MetaTrader | La prima riga come titolo, con le altre righe sotto. MetaTrader mostra il proprio orario accanto al messaggio. |
| Telegram | Il messaggio, l'ora nel tuo fuso orario e un link al grafico. |
| Send email | Il messaggio, con la data e l'ora nel tuo fuso orario. |
| Webhook URL | Discord e Slack ricevono il messaggio con l'orario in UTC. Con Raw JSON, il tuo software riceve le variabili elencate più avanti. |
Telegram scrive l'orario in questo formato: «24 Sep, 11:02 London time». Se il fuso orario è errato, scegli il tuo nel campo Timezone della pagina Your profile. Quando ForecastCity non conosce il tuo fuso orario, l'ora viene espressa in UTC.
Il link presente in un messaggio Telegram, in un'e-mail, in una notifica sul telefono o in una finestra popup di MetaTrader apre il grafico di quel simbolo insieme al pannello Alerts. Per la maggior parte degli alert 4CM-AI, apre il grafico con la vista Alert observation relativa a quell'attivazione.
Aggiungere valori in tempo reale con le variabili
Una variabile viene sostituita dal suo valore effettivo quando l'alert si attiva. Queste sono le variabili presenti in Available variables:
| Variabile | Cosa scrive | Esempio |
|---|---|---|
{{symbol}} |
Il simbolo | EURUSD |
{{price}} e {{close}} |
Il prezzo al momento dell'attivazione dell'alert | 1.0901 |
{{condition_text}} |
Cosa è successo, senza il simbolo | Price crossed above 1.09 |
{{condition}} |
La condizione come codice breve | CROSSING_UP 1.09 |
{{timeframe}} |
Il timeframe dell'alert | 5m |
{{time_iso}} |
La data e l'ora, in UTC | 2026-09-24 10:02 UTC |
{{time}} |
Lo stesso orario espresso in secondi, per il software | 1790244120 |
{{time_now}} |
Il momento in cui il messaggio è stato inviato, come numero | 1790244121 |
{{exchange}} |
Il fornitore del flusso dati dei prezzi | TwelveData |
{{status}} |
Se l'alert resta attivo | This alert stays on. |
{{alert_url}} |
Un link al grafico di quel simbolo, con i tuoi alert | un indirizzo web |
{{name}} |
Il tuo messaggio con ogni variabile sostituita dal relativo valore, oppure il nome mostrato nell'elenco degli alert | EURUSD crossing up 1.09 |
Per una linea, {{condition_text}} riporta un testo come «Price touched 1h Resistance R1». Con più condizioni, unisce le condizioni soddisfatte con la parola inglese «and». Dopo l'attivazione di un alert impostato su Once only, la variabile {{status}} riporta «This alert is now off. It was set to fire once.». Per un alert con più condizioni, una linea o un indicatore, {{condition}} vale TREE. Questa variabile è un codice pensato per il software.
Per gli alert 4CM-AI, {{forecast_summary}} riassume cosa ha fatto la previsione e {{forecast_symbol}} indica il simbolo della previsione. {{forecast_cycle}} è un contatore che aumenta ogni volta che l'alert riprende a osservare il mercato. Un messaggio che contiene {{forecast_summary}} non aggiunge righe automatiche sotto, perché il riepilogo spiega già cosa è successo.
{{price}} e {{close}} restano vuoti per la maggior parte degli alert 4CM-AI, perché non hanno un singolo prezzo. {{time_iso}} usa il fuso UTC, quindi può differire dall'orologio sul tuo schermo. Una variabile inesistente resta esattamente come l'hai digitata: un errore di battitura come {{prices}} arriva come {{prices}}.
Inviare gli alert a un webhook
Un webhook invia ogni alert a un indirizzo web, dove il tuo software, un canale Discord o un canale Slack lo riceve. Il tuo piano di abbonamento deve includere i webhook.
Nella scheda Options, sotto Notifications, seleziona la casella Webhook URL. Compaiono un campo per l'indirizzo, la scelta Format e un campo per il corpo della richiesta.
Incolla l'indirizzo su cui è in ascolto il tuo ricevitore. Deve iniziare con
http://ohttps://.Imposta Format su Raw JSON e lascia vuoto il campo del corpo.
Premi Create, oppure Save se stai modificando un alert esistente.

L'indirizzo su cui è in ascolto il tuo ricevitore. Usa le porte standard, 80 o 443.
Format: Raw JSON per il tuo software, oppure Discord o Slack per questi servizi.
Con il campo del corpo vuoto, il tuo ricevitore riceve un oggetto JSON con tutte le variabili della tabella, più alertId e triggerId. Questi due campi identificano l'alert e la singola attivazione. Controlla un invio reale prima di sviluppare funzioni che dipendono da questi campi.
Sotto il campo, l'editor mostra l'indirizzo del server da cui partono le nostre richieste. Aggiungilo al tuo elenco degli indirizzi consentiti se il tuo ricevitore accetta solo indirizzi noti.
Requisiti dell'indirizzo
Un indirizzo pubblico su una porta standard: 80 per http, 443 per https. I messaggi verso altre porte, verso localhost o verso un indirizzo di rete privata non vengono inviati.
Nessun nome utente o password all'interno dell'indirizzo.
Una risposta entro 3 secondi, direttamente da quell'indirizzo. Un reindirizzamento a un altro indirizzo viene considerato un errore.
L'editor controlla soltanto che l'indirizzo inizi con http:// o https://. Gli altri requisiti vengono verificati al momento dell'invio del messaggio, quindi prova il tuo indirizzo con un alert reale. Per gli alert di prezzo e tecnici, se il ricevitore restituisce un errore temporaneo, l'invio viene ritentato fino a altre due volte. Il messaggio di un alert 4CM-AI non viene inviato di nuovo dopo un timeout o un errore del server, perché il tuo ricevitore potrebbe averlo già elaborato.
Scrivere un corpo personalizzato per il webhook
Il campo del corpo accetta un modello con le stesse variabili del messaggio e può contenere fino a 2000 caratteri. Il campo permette di digitare di più, ma un corpo più lungo viene rifiutato al momento del salvataggio.
Con Raw JSON, un ricevitore che si aspetta un oggetto compatto può ricevere questo corpo:
{"symbol":"{{symbol}}","condition":"{{condition_text}}","time":"{{time_iso}}","source":"ForecastCity"}
Le variabili vengono inserite come testo semplice. Un valore che contiene virgolette o un ritorno a capo può rendere non valido il JSON. Un corpo che non è JSON valido viene inviato come testo semplice.
Per un canale Discord, imposta Format su Discord e usa l'indirizzo webhook del canale. Poi scrivi una riga breve nel campo del corpo, ad esempio:
{{symbol}}: {{condition_text}}. Open your alerts: {{alert_url}}
Per Slack, scegli Slack e scrivi allo stesso modo. ForecastCity racchiude il tuo testo nel formato richiesto da ciascun servizio. Se lasci il campo vuoto, entrambi ricevono il messaggio dell'alert mostrato sopra, con l'orario in UTC nell'ultima riga.
Controllare il risultato
Attendi che l'alert si attivi, poi apri la scheda Log del pannello Alerts.
Confronta ciò che ha ricevuto il tuo ricevitore con la voce del registro: cosa è successo, il simbolo e l'orario.
Il registro mostra che l'alert si è attivato, ma non indica se il tuo ricevitore ha accettato il messaggio: controlla quindi anche il registro del tuo ricevitore. Se vedi parentesi graffe come {{prices}}, il nome di una variabile contiene un errore di battitura. Se il ricevitore rifiuta il corpo, controlla la sintassi del JSON.
Da sapere
Il messaggio viene inviato a tutte le destinazioni che hai selezionato. Il corpo del webhook viene inviato solo al webhook.
Discord mostra fino a 1900 caratteri e Slack fino a 3000. Il testo più lungo viene troncato.