Códigos de error de MT5: 10016, 10018, 10019, 10027, 10030 y su solución
Contenido (7)
Contenido
Códigos de error de MT5 / MQL5: retcodes 10004–10031 y errores de ejecución
MT5 informa de dos tipos de errores: los retcodes de trading de 5 dígitos (p. ej., 10027 AutoTrading desactivado, 10030 modo de llenado no soportado, 10016 stops inválidos, 10019 fondos insuficientes) y los errores de ejecución de 4 dígitos de GetLastError() (p. ej., 4401, 4756); la tabla siguiente relaciona cada uno con su solución.
Consulta rápida: código → significado → solución
Los números y los nombres de las constantes siguen la referencia oficial de MQL5 (códigos de retorno del servidor de trading y errores de ejecución).
Retcodes de trading (MqlTradeResult.retcode)
| Código | Constante | Significado | Solución | Detalles |
|---|---|---|---|---|
| 10004 | TRADE_RETCODE_REQUOTE | Requote: el precio se movió antes de la ejecución | Amplía la desviación permitida o reenvía la orden al precio actualizado | Off quotes y requotes |
| 10006 | TRADE_RETCODE_REJECT | Solicitud rechazada | Suele deberse a un spread amplio o a un mercado rápido; deja que el EA reintente en un tick posterior | — |
| 10013 | TRADE_RETCODE_INVALID | Solicitud inválida | Un campo de la solicitud (acción, tipo de orden, símbolo) es incorrecto; valídala con OrderCheck() antes de enviarla | — |
| 10014 | TRADE_RETCODE_INVALID_VOLUME | Volumen inválido en la solicitud | Redondea el lote al mínimo, al máximo y al paso del símbolo (SYMBOL_VOLUME_MIN / MAX / STEP) | — |
| 10015 | TRADE_RETCODE_INVALID_PRICE | Precio inválido en la solicitud | Normaliza el precio a los dígitos y al tamaño de tick del símbolo; asegúrate de que la orden pendiente quede en el lado correcto del mercado | — |
| 10016 | TRADE_RETCODE_INVALID_STOPS | Stops inválidos en la solicitud | Mantén el SL/TP más lejos que el stops level del bróker y en el lado correcto del precio | Invalid stops |
| 10017 | TRADE_RETCODE_TRADE_DISABLED | El trading está deshabilitado | Revisa el modo de trading del símbolo en Especificación y que hayas iniciado sesión con la contraseña de trading (no la de inversor); si no, consulta al bróker | — |
| 10018 | TRADE_RETCODE_MARKET_CLOSED | El mercado está cerrado | Espera a que abra la sesión de trading del símbolo | Mercado cerrado |
| 10019 | TRADE_RETCODE_NO_MONEY | Fondos insuficientes para completar la solicitud | Reduce el tamaño del lote, cierra posiciones o deposita fondos | Fondos insuficientes |
| 10021 | TRADE_RETCODE_PRICE_OFF | No hay cotizaciones para procesar la solicitud | Comprueba la conexión y si el símbolo está cotizando en ese momento, y vuelve a intentarlo | Off quotes y requotes |
| 10026 | TRADE_RETCODE_SERVER_DISABLES_AT | Autotrading deshabilitado por el servidor | El bróker bloquea el trading algorítmico en esta cuenta; contacta con el bróker | AutoTrading desactivado |
| 10027 | TRADE_RETCODE_CLIENT_DISABLES_AT | Autotrading deshabilitado por el terminal cliente | Activa el botón Algo Trading y permite el trading algorítmico en Opciones y en las propiedades del EA | AutoTrading desactivado |
| 10030 | TRADE_RETCODE_INVALID_FILL | Tipo de llenado de la orden inválido | Establece type_filling en un modo que el símbolo admita (FOK / IOC / Return) | Modo de llenado no soportado |
| 10031 | TRADE_RETCODE_CONNECTION | Sin conexión con el servidor de trading | Revisa la barra de estado de la conexión, la red del VPS y el estado del servidor del bróker | — |
Errores de ejecución (GetLastError())
| Código | Constante | Significado | Solución | Detalles |
|---|---|---|---|---|
| 4001 | ERR_INTERNAL_ERROR | Error interno inesperado | No corresponde a una causa concreta: llama a ResetLastError() antes de la función que estás comprobando y, si persiste, reinicia o actualiza el terminal | — |
| 4401 | ERR_HISTORY_NOT_FOUND | No se encontró el historial solicitado | Llama a HistorySelect() para un periodo que contenga la operación o la orden antes de leerla | — |
| 4752 | ERR_TRADE_DISABLED | Trading mediante Expert Advisors prohibido | Activa Algo Trading y marca «Permitir el trading algorítmico» en las propiedades del EA | AutoTrading desactivado |
| 4756 | ERR_TRADE_SEND_FAILED | Falló el envío de la solicitud de trading | OrderSend() devolvió false; lee MqlTradeResult.retcode para conocer el motivo real (a menudo 10027, 10030 o 10016) | — |
¿Vienes de MT4? MT4 usa números distintos, en su mayoría de 3 dígitos, para las mismas situaciones (134, 130, 132, 136, 4109 …). Cada sección de abajo indica el equivalente en MT4, tomado de la referencia oficial de MQL4. Ten en cuenta que en MT5 el número 4109 significa ERR_CHART_WRONG_PROPERTY (un error de gráfico), no un error de trading.
Nuestros 3 EA principales (todas las cifras del backtest a largo plazo y del forward público)
📧 Curso gratuito por email (8 correos) + paquete de 13 indicadores MT5 solo para suscriptores
* Privacidad estrictamente protegida. Puedes darte de baja en cualquier momento.
Cómo revisar la pestaña Expertos
Haz clic en la pestaña Expertos en la parte inferior de MT5 para ver un registro cronológico de toda la actividad de los EAs.
Formato del log:
2026.05.18 10:00:01.234 GOLD VIPER XAUUSD,M30: [ERROR] 10016
Fecha/Hora Nombre del EA Símbolo Temporalidad Mensaje
Cuando aparezca un error, usa el número de código para localizar la causa en la tabla de arriba.
Códigos de error frecuentes y cómo solucionarlos
10019 — Fondos insuficientes (TRADE_RETCODE_NO_MONEY)
Equivalente en MT4: 134 ERR_NOT_ENOUGH_MONEY. ERR_NO_MONEY es una abreviatura muy extendida para la misma situación.
Ejemplos de mensaje: "Order failed: not enough money"
"No money"
Causa: Margen insuficiente: el EA no puede abrir una nueva posición.
Solución:
- Revisa el nivel de margen actual en la pestaña Trade de MT5
- Si el margen está cerca del 100% o por debajo, considera depositar fondos adicionales
- Reduce el ajuste
RiskPercentdel EA para disminuir el tamaño de la posición - Cierra manualmente algunas posiciones abiertas para liberar margen
📖 Para saber por qué aparece aunque el saldo parezca suficiente, y el código MQL5 que lo evita, consulta Not enough money en MT5: causas y soluciones.
10027 — AutoTrading deshabilitado por el cliente (TRADE_RETCODE_CLIENT_DISABLES_AT)
Error de ejecución de MT5 relacionado: 4752 ERR_TRADE_DISABLED. Equivalente en MT4: 4109 ERR_TRADE_NOT_ALLOWED.
Ejemplos de mensaje: "AutoTrading disabled by client"
"Trade is not allowed"
Causa: El trading automático está desactivado en MT5.
Solución:
- Haz clic en el botón Algo Trading de la barra de herramientas de MT5 para activarlo (debe ponerse verde)
- Ve a Herramientas → Opciones → Expert Advisors → activa Permitir el trading algorítmico y reinicia MT5
Este error ocurre a menudo cuando MT5 se inicia automáticamente tras un reinicio del VPS.
📖 Para ver la cadena completa de permisos (ajustes de Opciones, Permitir el trading algorítmico por gráfico, contraseña de inversor y la diferencia entre 10027 y 10026), consulta AutoTrading desactivado en MT5: la solución completa.
10018 — Mercado cerrado (TRADE_RETCODE_MARKET_CLOSED)
Equivalente en MT4: 132 ERR_MARKET_CLOSED.
Ejemplo de mensaje: "Market closed"
Causa: El EA intentó abrir una operación fuera del horario de mercado (fin de semana o festivo).
Solución: No hay que hacer nada. El mercado está cerrado durante el fin de semana, y cualquier intento de entrada en ese intervalo produce este error; el EA se reanuda automáticamente cuando el mercado vuelve a abrir.
📖 ¿Lo ves entre semana? Las sesiones de trading del símbolo, la hora del servidor y el modo de solo cierre se explican en Market closed (10018/132): causas y soluciones.
10016 — Stops inválidos (TRADE_RETCODE_INVALID_STOPS)
Equivalente en MT4: 130 ERR_INVALID_STOPS.
Ejemplo de mensaje: "Invalid stops"
Causa: El valor del SL (stop loss) o del TP (take profit) infringe el requisito de stop level mínimo del bróker.
Solución:
- Consulta el stop level del bróker (distancia mínima del SL): clic derecho sobre el símbolo en MT5 → Especificación → busca el campo Stops level
- Asegúrate de que la distancia del SL del EA sea mayor que el stop level
- Este error es más habitual en periodos de baja volatilidad, cuando los valores del ATR son muy pequeños
📖 Para entender cómo funcionan realmente los stop levels, la diferencia entre 10016 y 130 y el código MQL5 que lo evita de forma definitiva, consulta Invalid stops (10016/130): la solución completa.
10021 — Sin cotizaciones (TRADE_RETCODE_PRICE_OFF)
Equivalente en MT4: 136 ERR_OFF_QUOTES.
Ejemplo de mensaje: "Off quotes"
Causa: No se recibe ninguna cotización del servidor del bróker: un problema de conectividad.
Solución:
- Comprueba el estado de la conexión en la barra de estado de MT5, en la parte inferior de la pantalla
- Si estás desconectado, reinicia MT5
- Revisa la página de estado de los servidores de tu bróker por si hay incidencias
- Verifica la conexión de red de tu VPS
📖 Para ver la diferencia con los requotes (10004/138), el ajuste de la desviación y una implementación de reintentos, consulta Off quotes y requotes (10021/10004): la solución completa.
📖 ¿Te aparece Unsupported filling mode (10030) justo después de cambiar de bróker? Es un problema distinto: consulta Unsupported filling mode (10030): cómo solucionarlo.
10012 — Tiempo de espera de la solicitud agotado (TRADE_RETCODE_TIMEOUT)
Equivalente en MT4: 128 ERR_TRADE_TIMEOUT.
Ejemplo de mensaje: "Request canceled by timeout"
Causa: La orden superó el tiempo de espera por congestión del servidor o latencia de red.
Solución:
- Es más habitual justo después de noticias importantes, cuando la carga del servidor es alta
- Normalmente el EA reintentará en el siguiente tick; no hace falta hacer nada
- Si ocurre con frecuencia, revisa el entorno de red de tu VPS o considera otro bróker
10006 — Solicitud rechazada (TRADE_RETCODE_REJECT)
Ejemplo de mensaje: "Request rejected"
Causa: El bróker rechazó la orden, normalmente porque el spread supera los límites o el precio se mueve demasiado rápido.
Solución:
- Revisa el ajuste
MaxSpreadPoints; este error es habitual cuando los spreads se amplían de forma notable - Durante las noticias e inmediatamente después es un comportamiento esperado; puedes ignorarlo
- Si ocurre con frecuencia, aumenta ligeramente el valor de
MaxSpreadPoints
"Margin level too low"
Ejemplo de mensaje: "Margin level too low. Skip signal."
Causa: El ajuste UseMarginCheck = true del EA detectó que el nivel de margen cayó por debajo de MinMarginLevel (p. ej., 200%), por lo que las nuevas entradas se bloquean automáticamente.
Solución:
- Es un comportamiento de protección normal; no es un error
- Las entradas se reanudarán automáticamente cuando el nivel de margen se recupere
- Solución de fondo: deposita más fondos o reduce
RiskPercent
"No signal on this bar" o "Wait for next bar"
No son errores: son entradas del log de depuración.
"No signal. ATR=1245, EMA(50)=1998.23"
El EA evalúa el gráfico en cada vela y registra cuándo no se cumplen las condiciones de entrada. Es el funcionamiento normal.
Clasificación de errores por prioridad
| Prioridad | Error | Acción |
|---|---|---|
| Crítico | 10019 Fondos insuficientes (MT4: 134) | Deposita fondos o reduce el tamaño del lote de inmediato |
| Crítico | 10027 AutoTrading desactivado / 4752 (MT4: 4109) | Activa Algo Trading |
| Advertencia | 10016 Stops inválidos (MT4: 130) | Revisa la configuración del SL |
| Advertencia | 10030 Tipo de llenado inválido | Establece un modo de llenado que el símbolo admita |
| Advertencia | 10021 Sin cotizaciones (MT4: 136) recurrente | Verifica la conexión |
| Normal | 10018 Mercado cerrado (MT4: 132) solo en fin de semana | No es necesario actuar |
| Normal | 10012 Tiempo de espera (MT4: 128) esporádico | No es necesario actuar |
| Normal | Margin level too low | Protección normal con margen bajo |
Cómo leer la pestaña Expertos de forma eficiente
Filtrar los logs
Haz clic derecho dentro de la pestaña Expertos y selecciona Filtro para mostrar únicamente los logs de un EA o de un tipo de error concreto.
Ubicación de los archivos de log
Los archivos de log de MT5 se guardan aquí:
C:\Users\[NombreDeUsuario]\AppData\Roaming\MetaQuotes\Terminal\[ID]\MQL5\Logs\
Los archivos se crean automáticamente por fecha. Abre esta carpeta cuando investigues errores.
Resumen
La mayoría de los errores de un EA se pueden clasificar en cuatro categorías:
- Margen insuficiente (10019) — Deposita más fondos o reduce el tamaño del lote
- AutoTrading desactivado (10027 / 4752) — Haz clic en el botón Algo Trading para activarlo
- Problemas de conexión (10021 / 10031) — Reinicia MT5 o revisa la red del VPS
- Comportamiento normal — No requiere acción (cierre de mercado en fin de semana, evitar spreads amplios, etc.)
Adquiere el hábito de revisar la pestaña Expertos a diario para detectar rápidamente los errores críticos (10019 y 10027) antes de que causen problemas.
Preguntas frecuentes
P: ¿Dónde puedo consultar los códigos de error?
La referencia oficial de MQL5 recoge todos los códigos: códigos de retorno del servidor de trading para el rango 10004–10046 y errores de ejecución para el rango 4xxx. También puedes buscarlos en la ayuda integrada de MT5 (pulsa F1).
P: ¿Cuál es la diferencia entre un retcode y GetLastError()?
Un retcode (10004–10046) es la respuesta del servidor de trading a una orden y se guarda en MqlTradeResult.retcode. GetLastError() devuelve un error de ejecución del propio programa MQL5 (4xxx y 5xxx). Cuando OrderSend() falla, a menudo obtienes ambos: 4756 de GetLastError() más un retcode que te indica el motivo real.
P: ¿Debo detener el EA si aparecen errores con frecuencia?
Si 10018 (mercado cerrado) o 10012 (tiempo de espera) aparecen de forma ocasional, no es necesario detener el EA. Sin embargo, si 10019 (fondos insuficientes) se repite, pausa el EA, revisa tu situación de margen y vuelve a iniciarlo una vez resuelta.
P: Me aparece el error «Invalid account».
Es posible que tus datos de acceso a MT5 (nombre del servidor, ID de login o contraseña) sean incorrectos. Ve a Archivo → Abrir una cuenta para volver a iniciar sesión.
P: No aparece ningún error, pero el EA no abre operaciones.
Si no hay errores ni entradas, el EA simplemente está esperando a que se cumplan sus condiciones de entrada; es completamente normal. Los EAs no entran en cada vela; solo entran cuando todas las condiciones coinciden. Dale algo de tiempo. Un EA en H1 que entra de una a tres veces al día funciona con normalidad.
Relacionado
2026-07-07
«Invalid Stops» en MT5 (10016 / error 130): 6 causas y su solución
2026-07-07
AutoTrading desactivado en MT5 (10027 / 10026): 4 interruptores a revisar
2026-07-07
Error 10030 de MT5 «Unsupported Filling Mode»: ajusta el FOK/IOC del símbolo
2026-07-07
«Market Closed» en MT5 (10018 / 132) entre semana: causas y solución
📧 Curso gratuito por email (8 correos) + paquete de 13 indicadores MT5 solo para suscriptores
* Privacidad estrictamente protegida. Puedes darte de baja en cualquier momento.
¿Tienes alguna pregunta sobre EAs o Forex?
Puedes publicarla en el foro de trading de Nattzy (registro gratuito). También son bienvenidas preguntas que vayan más allá de este artículo: configuración de EAs, elección de bróker y más.
Preguntar en Nattzy ↗