Question: Cosa significa il messaggio di errore “Mercato chiuso” sulle piattaforme MT4/MT5?
Table of Contents
- “Mercato chiuso” su MT4/MT5: cosa significa, quando appare e come eliminarlo dal tuo flusso di lavoro
- Cosa fa apparire il messaggio “Mercato chiuso” ogni volta
- Come si presenta il messaggio “Mercato chiuso” nella piattaforma
- In che modo differisce dagli altri messaggi della piattaforma
- Le conseguenze operative che dovresti aspettarti
- Soluzioni definitive per i trader discrezionali
- Playbook deterministico per sviluppatori EA (MT4 e MT5)
- Casi di studio comuni e percorso risolto
- Consigli precisi che eliminano il messaggio dal trading quotidiano
- MT4 vs MT5: piccole differenze, stesso risultato
- Perché non dovresti mai “riprovare finché non funziona”
- Una checklist concisa che funziona sempre
“Mercato chiuso” su MT4/MT5: cosa significa, quando appare e come eliminarlo dal tuo flusso di lavoro
“Mercato chiuso” significa che il server di trading ha disabilitato l’esecuzione per quel simbolo in questo momento. La piattaforma rifiuta gli ordini di mercato e può anche rifiutare l’esecuzione di stop/limit e alcune modifiche fino alla riapertura della sessione di trading. I prezzi possono comunque essere visualizzati (dall’ultimo tick) o apparire congelati; in entrambi i casi, non si verificano riempimenti mentre lo stato è in vigore.
Questo messaggio è deterministico. Il server impone sessioni di trading e finestre di manutenzione. Quando si invia una richiesta durante un periodo di non trading, il server restituisce Mercato chiuso. Su MT4, gli Expert Advisor visualizzano l’errore 132 (ERR_MARKET_CLOSED). Su MT5, il risultato della negoziazione restituisce TRADE_RETCODE_MARKET_CLOSED
. Il significato è lo stesso: l’esecuzione non è consentita in questo momento.
Cosa provoca ogni volta la chiusura del mercato
I terminali MetaTrader si connettono al server di trading di un broker. Tale server pubblica i calendari delle sessioni per ogni simbolo e può anche imporre pause temporanee. Ogni volta che la tua richiesta arriva al di fuori di una finestra consentita, ricevi il messaggio. I fattori scatenanti sono gli stessi in tutte le sedi:
- Sospensione nel fine settimana (FX e molti CFD). Dalla chiusura della sessione del venerdì all’apertura della domenica, l’esecuzione degli ordini è sospesa.
- Pause giornaliere e manutenzione. I CFD basati su metalli, energie e futures su indici presentano spesso gap intraday nel trading. Durante quei minuti, l’esecuzione è sospesa anche se il grafico mostra ancora un ultimo prezzo.
- Chiusure per festività. Se la borsa sottostante o la sede di negoziazione è chiusa, il server disabilita quel simbolo fino alla riapertura.
- Finestre di rollover. Alcuni server sospendono l’esecuzione intorno all’applicazione dello swap o al regolamento per evitare libri sottili o indefiniti.
- Pause a livello di simbolo. Un broker può mettere un simbolo in stato Close-Only o No-Trading durante condizioni straordinarie o eventi aziendali. In entrambi i casi, l’esecuzione viene bloccata e viene restituito il messaggio Mercato chiuso (o un equivalente simile).
- Trigger in sospeso fuori sessione. Un ordine in sospeso può essere memorizzato sul lato server, ma il suo trigger non verrà attivato fino all’apertura della sessione e al raggiungimento del livello da parte di un tick valido.
Nessuno di questi è un bug del terminale. Si tratta di regole applicate dal server per mantenere il trading allineato al calendario della sede.
Come appare la dicitura ”Mercato chiuso” nella piattaforma
- Ticket di trading manuale: invii un ordine di acquisto/vendita; il ticket non viene inviato e un popup o una riga di stato segnala Mercato chiuso.
- Finestra di dialogo Modifica/Chiudi: la modifica di SL/TP sulle posizioni aperte può essere rifiutata in prossimità o durante una pausa; anche le modifiche agli ordini in sospeso possono essere limitate durante un arresto completo.
- Scheda Diario/Esperti: MT4 registra l’errore 132; MT5 mostra il codice di ritorno che indica mercato chiuso.
- Grafici e Market Watch: le quotazioni potrebbero apparire statiche. Anche se una quotazione lampeggia da un flusso non eseguito, il motore di trading blocca comunque le esecuzioni fino a quando la sessione non torna aperta.
In che modo si differenzia dagli altri messaggi della piattaforma
- Quotazioni fuori corso: il server non aveva alcun prezzo eseguibile accettabile in quel momento, non si trattava di un blocco di calendario.
- Riquotazione: il server ha offerto un nuovo prezzo; l’esecuzione è consentita, ma il prezzo è cambiato.
- Nessuna connessione: il tuo terminale non è collegato al server di trading;
non è possibile tentare l’esecuzione. - Contesto di negoziazione occupato: il cliente sta già gestendo un’altra richiesta di negoziazione; non si tratta di un problema di sessione.
- Operazione disabilitata: l’account o il simbolo sono disabilitati a livello amministrativo; si tratta di uno stato di autorizzazione, non di uno stato di calendario.
Sapere a quale classe appartieni ti fa risparmiare tempo. Mercato chiuso è esclusivamente una condizione di tempo/sessione.
Le conseguenze operative che dovresti aspettarti
- Ordini di mercato: rifiutati fino all’apertura della sessione.
- Ordini in sospeso: memorizzati sul server; l’attivazione attende la sessione successiva e un tick valido. Se il primo prezzo negoziabile dopo l’apertura supera il tuo livello, l’ordine viene eseguito al primo prezzo disponibile, non al livello precedente.
- Stop Loss / Take Profit: per le sessioni chiuse, gli trigger sulle posizioni aperte attendono la ripresa della sessione. Si applica il rischio di gap; le esecuzioni avvengono al prossimo prezzo disponibile.
- Modifiche: il server può bloccare SL/TP o modifiche in sospeso durante l’interruzione; una volta che la sessione è attiva, le modifiche procedono secondo le normali regole di distanza e congelamento.
Progettate il vostro processo tenendo conto di queste realtà; il messaggio non sarà più una sorpresa.
Soluzioni definitive per trader discrezionali
Fai trading solo durante le sessioni attive per lo strumento.
Invia ordini di mercato e attendi l’attivazione di SL/TP solo mentre la sessione del simbolo è aperta. Evita di inserire ordini urgenti negli ultimi minuti prima di una pausa programmata; la liquidità diminuisce e il motore potrebbe passare allo stato chiuso durante la richiesta.
Pianifica le uscite e le entrate lontano dalle finestre di rollover.
Se il tuo approccio richiede l’esecuzione intorno al momento dello swap, regola i tempi in modo che la richiesta arrivi al di fuori della finestra di manutenzione. In questo modo eliminerai la possibilità di un blocco totale.
Pianifica l’apertura di domenica/lunedì e i gap.
Se mantieni posizioni durante il fine settimana, accetta che gli stop e gli obiettivi vengano elaborati al prezzo di riapertura se il mercato presenta un gap. Se è essenziale evitare il rischio di gap nel fine settimana, appiattisci prima della chiusura del venerdì piuttosto che affidarti agli stop durante la sospensione.
Utilizza gli ordini in sospeso in modo strategico, ma comprendi i trigger.
Inserire un ordine in sospeso prima dell’apertura è valido come strumento di pianificazione; l’effettiva esecuzione avverrà al primo prezzo eseguibile al o superiore al tuo livello all’inizio della sessione. Struttura la dimensione della posizione tenendo conto del rischio di gap.
Playbook deterministico per sviluppatori EA (MT4 e MT5)
Crea una logica sensibile alla sessione in modo che il tuo algoritmo non martelli mai un libro chiuso e non interpreti mai erroneamente un rifiuto.
- 1) Controlla il flusso degli ordini in base allo stato della sessione.
– MT5: verifica la negoziabilità della sessione conSymbolInfoSessionTrade()
oSymbolInfoInteger(symbol, SYMBOL_SESSION_DEALS)
/SYMBOL_TRADE_MODE
. Se la sessione è chiusa per l’intervallo di tempo corrente, non inviare ordini; mettili in coda fino all’inizio del primo intervallo aperto.
– MT4: non esiste una funzione di sessione diretta, ma è possibile leggere l’ora del server (TimeCurrent()
), la modalità di negoziazione del simbolo (MarketInfo(symbol, MODE_TRADEALLOWED)
) e mantenere una tabella di programmazione per simbolo che corrisponda alle pause giornaliere della sede.
Utilizzare tali controlli per bloccare le chiamate durante le interruzioni note.
2) Gestire esplicitamente l’errore 132 /TRADE_RETCODE_MARKET_CLOSED
. A tale risposta, interrompere i tentativi e programmare il prossimo tentativo al limite successivo aperto. I loop ciechi sprecano cicli e rischiano di causare throttling. - 3) Controllare il comportamento nel fine settimana.
Creare uno scheduler per il venerdì che esca o disabiliti le nuove voci prima dell’ultimo minuto di negoziazione se il metodo non è progettato per i gap del fine settimana. Alla riapertura di domenica/lunedì, riqualificare i segnali dai nuovi tick piuttosto che agire sullo stato di venerdì. - 4) Tempistica degli ordini intorno al roll-over.
Avvolgi una breve finestra di blackout intorno al tempo di swap per i simboli che si fermano. Metti in coda le modifiche e gli invii; rilasciali dopo l’apertura dei rapporti di sessione. - 5) Costruisci per un rischio consapevole del gap.
Gli stop e gli ordini in sospeso possono saltare i livelli all’apertura. Configura il rischio massimo per operazione ipotizzando che le esecuzioni avvengano al prossimo prezzo disponibile dopo un gap. Ciò mantiene i risultati allineati al comportamento del motore invece che a un flusso di prezzi continuo idealizzato. - 6) Registrare chiaramente gli stati.
Scrivere “bloccato: mercato chiuso” con timestamp quando si sopprime un’azione. Distinguere da “off quotes” e “trade context busy”. I log puliti accelerano l’analisi post-mortem.
Casi di studio comuni e percorso risolto
- Venerdì, 1 minuto prima della chiusura, lo scalper dell’indice CFD invia un ordine di mercato.
Il motore passa allo stato chiuso; il ticket restituisce Mercato chiuso.
Percorso risolto: anticipare il cutoff finale della strategia e disabilitare automaticamente gli ingressi all’interno di un buffer pre-chiusura. - Oro durante la pausa di manutenzione giornaliera.
L’EA tenta di spostare lo SL al break-even; il server rifiuta la modifica perché l’esecuzione è disattivata.
Percorso risolto: l’EA rinvia tutte le modifiche SL/TP in una breve finestra che copre la pausa; il primo tick dopo la riapertura elabora la modifica in coda soggetta ai normali limiti di distanza. - Gap di apertura domenicale attraverso un Buy Stop.
Esiste un ordine in sospeso; il primo tick negoziabile è sopra il livello di ingresso.
Percorso risolto: l’ordine viene eseguito al prossimo prezzo disponibile; la gestione del denaro considera questo slippage come parte del progetto. L’EA o il piano non lo trattano come un’eccezione. - Chiusura festiva su un singolo CFD azionario mentre il FX rimane aperto.
Un EA multi-asset cerca di inviare ordini per tutti i simboli. Le parti azionarie vengono rifiutate con Mercato chiuso, mentre le parti FX procedono.
Percorso risolto: la strategia interroga lo stato della sessione per simbolo e agisce solo sui simboli aperti per l’esecuzione.
Consigli precisi che eliminano il messaggio dal trading quotidiano
- Ancorare le voci e le modifiche al calendario delle sessioni. Le richieste vengono inviate solo durante le fasce aperte.
- Evita i minuti limite. L’ultimo minuto prima di una pausa programmata e il primo minuto dopo la riapertura possono essere instabili e volatili; mantieni un approccio conservativo all’automazione in questi casi.
- Separa la generazione del segnale dall’esecuzione. I segnali possono essere calcolati continuamente; l’esecuzione viene rilasciata solo quando il motore conferma una sessione aperta.
- Trattare i gap come normali, non come eventi rari. Progettare SL/TP e dimensione della posizione tenendo conto del rischio di gap.
- Se è necessario mantenere la posizione durante le chiusure, accettare le regole del server. Gli stop e i target non vengono valutati durante un’interruzione; agiscono al prezzo eseguibile successivo.
MT4 vs MT5: piccole differenze, stesso risultato
- Codici di ritorno: gli EA MT4 visualizzano l’errore 132, MT5 restituisce
TRADE_RETCODE_MARKET_CLOSED
. Il tuo gestore si ramifica in base alla piattaforma, ma intraprende la stessa azione: rinviare. - Accesso alla sessione: MT5 espone metadati di sessione più ricchi; MT4 richiede tabelle di pianificazione e flag di base. In entrambi i casi, l’approccio corretto è quello di bloccare gli invii mentre è chiuso e riprendere all’apertura.
- Gestione degli ordini in sospeso: entrambi memorizzano gli ordini sul lato server ed entrambi li attivano solo quando arriva un tick valido durante una sessione aperta. Il gap fill è possibile su entrambi.
Perché non dovresti mai “riprovare finché non funziona”
Il gate della sessione è binario: chiuso o aperto. Nessun numero di reinvii lo modifica. I loop aggressivi fanno perdere tempo e possono produrre risposte di limitazione della velocità o altri errori che oscurano la vera causa. La risposta corretta è fermarsi, impostare il prossimo momento idoneo e procedere quando il simbolo è nuovamente negoziabile.
Una checklist concisa che funziona sempre
- Invia ordini di mercato solo durante una sessione live per quel simbolo.
- Metti in coda o disabilita gli ordini per il fine settimana; riabilitali alla riapertura.
- Crea una finestra di blackout intorno al rollover e alle pause di manutenzione giornaliere.
- Controlla gli EA con condizioni sensibili alla sessione; gestisci l’errore 132 / TRADE_RETCODE_MARKET_CLOSED rinviando, non riprovando.
- Determina le dimensioni delle posizioni tenendo conto del rischio di gap; considera che le prime esecuzioni dopo la riapertura potrebbero superare il tuo livello.
Seguite queste regole e lo stop “Mercato chiuso” smetterà di apparire nel vostro flusso di lavoro, non perché lo avete ignorato, ma perché il vostro processo ora è perfettamente allineato con il funzionamento dei motori di trading e dei server MT4/MT5.
- Close