Codici di errore MT5: 10027, 10030, 10016 e altri
Contenuti (7)
Contenuti
Codici di errore MT5 / MQL5: retcode 10004–10031 ed errori di runtime
MT5 segnala due tipi di errori: i retcode di trading a 5 cifre (ad es. 10027 AutoTrading disattivato, 10030 modalità di riempimento non supportata, 10016 stop non validi, 10019 fondi insufficienti) e gli errori di runtime a 4 cifre restituiti da GetLastError() (ad es. 4401, 4756) — la tabella qui sotto associa a ciascuno la relativa soluzione.
Consultazione rapida: codice → significato → soluzione
Numeri e nomi delle costanti seguono il riferimento ufficiale MQL5 (codici di ritorno del server di trading ed errori di runtime).
Retcode di trading (MqlTradeResult.retcode)
| Codice | Costante | Significato | Soluzione | Dettagli |
|---|---|---|---|---|
| 10004 | TRADE_RETCODE_REQUOTE | Requote — il prezzo si è mosso prima dell'esecuzione | Ampliare la deviazione consentita oppure reinviare l'ordine al prezzo aggiornato | Off quotes e requote |
| 10006 | TRADE_RETCODE_REJECT | Richiesta rifiutata | Di solito uno spread ampio o un mercato veloce; lasciare che l'EA riprovi a un tick successivo | — |
| 10013 | TRADE_RETCODE_INVALID | Richiesta non valida | Un campo della richiesta (azione, tipo di ordine, simbolo) è errato; validarla con OrderCheck() prima dell'invio | — |
| 10014 | TRADE_RETCODE_INVALID_VOLUME | Volume non valido nella richiesta | Arrotondare il lotto al minimo, al massimo e al passo del simbolo (SYMBOL_VOLUME_MIN / MAX / STEP) | — |
| 10015 | TRADE_RETCODE_INVALID_PRICE | Prezzo non valido nella richiesta | Normalizzare il prezzo in base ai decimali e alla dimensione del tick del simbolo; assicurarsi che un ordine pendente si trovi sul lato corretto del mercato | — |
| 10016 | TRADE_RETCODE_INVALID_STOPS | Stop non validi nella richiesta | Tenere SL/TP più lontani dello stops level del broker e sul lato corretto del prezzo | Invalid stops |
| 10017 | TRADE_RETCODE_TRADE_DISABLED | Il trading è disabilitato | Controllare la modalità di trading del simbolo in Specifica e di aver effettuato l'accesso con la password di trading (non quella investitore); altrimenti chiedere al broker | — |
| 10018 | TRADE_RETCODE_MARKET_CLOSED | Il mercato è chiuso | Attendere l'apertura della sessione di trading del simbolo | Mercato chiuso |
| 10019 | TRADE_RETCODE_NO_MONEY | Fondi insufficienti per completare la richiesta | Ridurre la dimensione del lotto, chiudere posizioni o depositare fondi | Fondi insufficienti |
| 10021 | TRADE_RETCODE_PRICE_OFF | Nessuna quotazione per elaborare la richiesta | Controllare la connessione e se il simbolo è attualmente quotato, quindi riprovare | Off quotes e requote |
| 10026 | TRADE_RETCODE_SERVER_DISABLES_AT | Autotrading disabilitato dal server | Il broker blocca il trading algoritmico su questo conto; contattare il broker | AutoTrading disattivato |
| 10027 | TRADE_RETCODE_CLIENT_DISABLES_AT | Autotrading disabilitato dal terminale client | Attivare il pulsante Algo Trading e consentire l'algo trading nelle Opzioni e nelle proprietà dell'EA | AutoTrading disattivato |
| 10030 | TRADE_RETCODE_INVALID_FILL | Tipo di riempimento dell'ordine non valido | Impostare type_filling su una modalità supportata dal simbolo (FOK / IOC / Return) | Modalità di riempimento non supportata |
| 10031 | TRADE_RETCODE_CONNECTION | Nessuna connessione con il server di trading | Controllare la barra di stato della connessione, la rete del VPS e lo stato del server del broker | — |
Errori di runtime (GetLastError())
| Codice | Costante | Significato | Soluzione | Dettagli |
|---|---|---|---|---|
| 4001 | ERR_INTERNAL_ERROR | Errore interno imprevisto | Non è legato a un'unica causa: chiamare ResetLastError() prima della funzione che si sta verificando, quindi riavviare o aggiornare il terminale se persiste | — |
| 4401 | ERR_HISTORY_NOT_FOUND | Storico richiesto non trovato | Chiamare HistorySelect() per un periodo che contenga il deal o l'ordine prima di leggerlo | — |
| 4752 | ERR_TRADE_DISABLED | Trading tramite Expert Advisor vietato | Attivare Algo Trading e spuntare «Consenti Algo Trading» nelle proprietà dell'EA | AutoTrading disattivato |
| 4756 | ERR_TRADE_SEND_FAILED | Invio della richiesta di trading non riuscito | OrderSend() ha restituito false; leggere MqlTradeResult.retcode per conoscere il motivo reale (spesso 10027, 10030 o 10016) | — |
Arrivate da MT4? MT4 usa numeri diversi, per lo più a 3 cifre, per le stesse situazioni (134, 130, 132, 136, 4109 …). Ogni sezione qui sotto riporta l'equivalente MT4, tratto dal riferimento ufficiale MQL4. Si noti che in MT5 il numero 4109 significa ERR_CHART_WRONG_PROPERTY (un errore del grafico), non un errore di trading.
I nostri 3 EA principali (pubblicati tutti i dati del backtest a lungo termine e del forward pubblico)
📧 Corso email gratuito (8 email) + pacchetto di 13 indicatori MT5 riservato agli iscritti
* Privacy rigorosamente protetta. Potete cancellarvi in qualsiasi momento.
Come controllare la scheda Expert
Fare clic sulla scheda Expert nella parte inferiore di MT5 per vedere il log cronologico di tutta l'attività degli EA.
Formato del log:
2026.05.18 10:00:01.234 GOLD VIPER XAUUSD,M30: [ERROR] 10016
Data/ora Nome EA Simbolo Timeframe Messaggio
Quando compare un errore, usare il numero del codice per trovarne la causa nella tabella qui sopra.
Codici di errore più comuni e relative soluzioni
10019 — Fondi insufficienti (TRADE_RETCODE_NO_MONEY)
Equivalente MT4: 134 ERR_NOT_ENOUGH_MONEY. ERR_NO_MONEY è un'abbreviazione molto diffusa per la stessa situazione.
Esempi di messaggio: "Order failed: not enough money"
"No money"
Causa: Margine insufficiente — l'EA non può aprire una nuova posizione.
Soluzione:
- Verificare il livello di margine attuale nella scheda Trading di MT5
- Se il margine è vicino o inferiore al 100%, valutare un deposito aggiuntivo
- Abbassare l'impostazione
RiskPercentdell'EA per ridurre la dimensione della posizione - Chiudere manualmente alcune posizioni aperte per liberare margine
📖 Per capire perché compare anche quando il saldo sembra sufficiente, e il codice MQL5 che lo previene, vedere Not enough money su MT5 — cause e soluzioni.
10027 — AutoTrading disabilitato dal client (TRADE_RETCODE_CLIENT_DISABLES_AT)
Errore di runtime MT5 correlato: 4752 ERR_TRADE_DISABLED. Equivalente MT4: 4109 ERR_TRADE_NOT_ALLOWED.
Esempi di messaggio: "AutoTrading disabled by client"
"Trade is not allowed"
Causa: Il trading automatico è disattivato in MT5.
Soluzione:
- Fare clic sul pulsante Algo Trading nella barra degli strumenti di MT5 per attivarlo (deve diventare verde)
- Andare in Strumenti → Opzioni → Expert Advisor → attivare Consenti Algo Trading, quindi riavviare MT5
Questo errore si verifica spesso quando MT5 si avvia automaticamente dopo il riavvio del VPS.
📖 Per l'intera catena dei permessi (impostazioni delle Opzioni, Consenti Algo Trading per singolo grafico, password investitore e differenza tra 10027 e 10026), vedere AutoTrading disattivato su MT5 — la soluzione completa.
10018 — Mercato chiuso (TRADE_RETCODE_MARKET_CLOSED)
Equivalente MT4: 132 ERR_MARKET_CLOSED.
Esempio di messaggio: "Market closed"
Causa: L'EA ha tentato di aprire un trade al di fuori dell'orario di mercato (weekend o festività).
Soluzione: Non è necessario fare nulla. Il mercato è chiuso durante il weekend e qualsiasi tentativo di ingresso in quell'intervallo produce questo errore; l'EA riprende automaticamente alla riapertura del mercato.
📖 Compare nei giorni feriali? Sessioni di trading del simbolo, ora del server e modalità di sola chiusura sono trattate in Market closed (10018/132) — cause e soluzioni.
10016 — Stop non validi (TRADE_RETCODE_INVALID_STOPS)
Equivalente MT4: 130 ERR_INVALID_STOPS.
Esempio di messaggio: "Invalid stops"
Causa: Il valore di SL (stop loss) o TP (take profit) viola il requisito di stop level minimo del broker.
Soluzione:
- Verificare lo stop level del broker (distanza minima dello SL): fare clic con il tasto destro sul simbolo in MT5 → Specifica → cercare il campo Stops level
- Assicurarsi che la distanza dello SL dell'EA sia superiore allo stop level
- Questo errore è più comune nei periodi di bassa volatilità, quando i valori dell'ATR sono molto ridotti
📖 Per capire come funzionano davvero gli stop level, la differenza tra 10016 e 130 e il codice MQL5 che lo previene definitivamente, vedere Invalid stops (10016/130) — la soluzione completa.
10021 — Nessuna quotazione (TRADE_RETCODE_PRICE_OFF)
Equivalente MT4: 136 ERR_OFF_QUOTES.
Esempio di messaggio: "Off quotes"
Causa: Nessuna quotazione ricevuta dal server del broker — un problema di connettività.
Soluzione:
- Verificare lo stato della connessione nella barra di stato di MT5, nella parte inferiore dello schermo
- Se disconnesso, riavviare MT5
- Controllare la pagina di stato dei server del broker per eventuali disservizi
- Verificare la connessione di rete del VPS
📖 Per la differenza rispetto ai requote (10004/138), la regolazione della deviazione e un'implementazione dei nuovi tentativi, vedere Off quotes e requote (10021/10004) — la soluzione completa.
📖 Compare Unsupported filling mode (10030) subito dopo aver cambiato broker? È un problema diverso — vedere Unsupported filling mode (10030) — come risolverlo.
10012 — Richiesta scaduta per timeout (TRADE_RETCODE_TIMEOUT)
Equivalente MT4: 128 ERR_TRADE_TIMEOUT.
Esempio di messaggio: "Request canceled by timeout"
Causa: L'ordine è andato in timeout per congestione del server o latenza di rete.
Soluzione:
- È più comune subito dopo le notizie importanti, quando il carico del server è elevato
- Di norma l'EA riprova al tick successivo — non è richiesta alcuna azione
- Se accade frequentemente, rivedere l'ambiente di rete del VPS o valutare un altro broker
10006 — Richiesta rifiutata (TRADE_RETCODE_REJECT)
Esempio di messaggio: "Request rejected"
Causa: Il broker ha rifiutato l'ordine — in genere perché lo spread supera i limiti o il prezzo si muove troppo velocemente.
Soluzione:
- Controllare l'impostazione
MaxSpreadPoints; questo errore è comune quando gli spread si allargano in modo significativo - Durante le notizie e subito dopo è un comportamento previsto — lo si può ignorare
- Se si verifica frequentemente, aumentare leggermente il valore di
MaxSpreadPoints
"Margin level too low"
Esempio di messaggio: "Margin level too low. Skip signal."
Causa: L'impostazione UseMarginCheck = true dell'EA ha rilevato che il livello di margine è sceso sotto MinMarginLevel (ad es. 200%), quindi i nuovi ingressi vengono bloccati automaticamente.
Soluzione:
- Si tratta di un normale comportamento di protezione — non è un errore
- Gli ingressi riprendono automaticamente quando il livello di margine si recupera
- Soluzione di fondo: depositare più fondi o abbassare
RiskPercent
"No signal on this bar" oppure "Wait for next bar"
Non sono errori — sono voci del log di debug.
"No signal. ATR=1245, EMA(50)=1998.23"
L'EA valuta il grafico a ogni candela e registra quando le condizioni di ingresso non sono soddisfatte. È il normale funzionamento.
Classificazione degli errori per priorità
| Priorità | Errore | Azione |
|---|---|---|
| Critico | 10019 Fondi insufficienti (MT4: 134) | Depositare fondi o ridurre subito la dimensione del lotto |
| Critico | 10027 AutoTrading disattivato / 4752 (MT4: 4109) | Attivare Algo Trading |
| Avviso | 10016 Stop non validi (MT4: 130) | Rivedere le impostazioni dello SL |
| Avviso | 10030 Tipo di riempimento non valido | Impostare una modalità di riempimento supportata dal simbolo |
| Avviso | 10021 Nessuna quotazione (MT4: 136) ricorrente | Verificare la connessione |
| Normale | 10018 Mercato chiuso (MT4: 132) solo nel weekend | Nessuna azione necessaria |
| Normale | 10012 Timeout (MT4: 128) occasionale | Nessuna azione necessaria |
| Normale | Margin level too low | Protezione normale con margine basso |
Come leggere la scheda Expert in modo efficiente
Filtrare i log
Fare clic con il tasto destro all'interno della scheda Expert e selezionare Filtro per visualizzare solo i log di un determinato EA o tipo di errore.
Percorso dei file di log
I file di log di MT5 vengono salvati qui:
C:\Users\[NomeUtente]\AppData\Roaming\MetaQuotes\Terminal\[ID]\MQL5\Logs\
I file vengono creati automaticamente per data. Aprire questa cartella quando si indagano gli errori.
Riepilogo
La maggior parte degli errori degli EA rientra in quattro categorie:
- Margine insufficiente (10019) — Depositare più fondi o ridurre la dimensione del lotto
- AutoTrading disattivato (10027 / 4752) — Fare clic sul pulsante Algo Trading per attivarlo
- Problemi di connessione (10021 / 10031) — Riavviare MT5 o verificare la rete del VPS
- Comportamento normale — Nessuna azione necessaria (chiusura del mercato nel weekend, attesa per evitare lo spread, ecc.)
Prendete l'abitudine di controllare la scheda Expert ogni giorno, così da individuare rapidamente gli errori critici (10019 e 10027) prima che causino problemi.
FAQ
D: Dove posso cercare i codici di errore?
Il riferimento ufficiale MQL5 elenca tutti i codici: codici di ritorno del server di trading per l'intervallo 10004–10046 ed errori di runtime per l'intervallo 4xxx. È possibile cercarli anche nella guida integrata di MT5 (premere F1).
D: Qual è la differenza tra un retcode e GetLastError()?
Un retcode (10004–10046) è la risposta del server di trading a un ordine e viene memorizzato in MqlTradeResult.retcode. GetLastError() restituisce un errore di runtime del programma MQL5 stesso (4xxx e 5xxx). Quando OrderSend() fallisce, spesso si ottengono entrambi: 4756 da GetLastError() più un retcode che indica il motivo effettivo.
D: Devo fermare l'EA se gli errori compaiono spesso?
Se 10018 (mercato chiuso) o 10012 (timeout) compaiono occasionalmente, non è necessario fermare l'EA. Tuttavia, se 10019 (fondi insufficienti) si ripete, mettere in pausa l'EA, verificare la situazione del margine e riavviarlo una volta risolto il problema.
D: Viene visualizzato l'errore «Invalid account».
È possibile che le credenziali di accesso a MT5 (nome del server, ID di accesso o password) siano errate. Andare in File → Apri un conto per accedere di nuovo.
D: Non compare alcun errore, ma l'EA non apre posizioni.
Se non ci sono né errori né ingressi, l'EA sta semplicemente aspettando che le sue condizioni di ingresso siano soddisfatte — è del tutto normale. Gli EA non entrano a ogni candela; entrano solo quando tutte le condizioni coincidono. Dategli un po' di tempo. Un EA su H1 che entra da una a tre volte al giorno funziona normalmente.
Correlati
📧 Corso email gratuito (8 email) + pacchetto di 13 indicatori MT5 riservato agli iscritti
* Privacy rigorosamente protetta. Potete cancellarvi in qualsiasi momento.
Hai domande su EA o Forex?
Puoi pubblicarle sul forum di trading di Nattzy (registrazione gratuita). Sono benvenute anche domande che vanno oltre questo articolo: impostazioni degli EA, scelta del broker e altro.
Chiedi su Nattzy ↗