Precio inválido y off quotes en MT5: por qué rebotan las órdenes
Estos dos errores vienen del servidor del bróker, no de tu terminal: el precio que llevaba tu solicitud ya no existe, o no había cotizaciones para procesarla. Mercado rápido, minutos de rollover y cotizaciones a un solo lado son los sospechosos habituales. Cómo leerlos y qué arregla cada caso.
Saltar a: Qué significan 10015 y 10021 · El diagnóstico de 60 segundos · Las causas del 90% de los casos
Qué significan 10015 y 10021
El retcode 10015 (TRADE_RETCODE_INVALID_PRICE) significa que no hay un precio válido para procesar tu solicitud: el precio de la orden no casa con ninguna cotización actual. El 10021 (TRADE_RETCODE_PRICE_OFF, off quotes) significa que directamente no había cotizaciones del símbolo en ese instante.
Los dos son transitorios por naturaleza: describen el desajuste entre el mercado de hace un milisegundo y el de ahora. Por eso los reintentos a ciegas y a toda velocidad los empeoran, y esperar al siguiente tick suele disolverlos.
El diagnóstico de 60 segundos
Abre la pestaña Historial y lee la columna de motivo de la orden rechazada: ese número es tu diagnóstico. Después responde tres preguntas. ¿Pasa solo en el rollover, la apertura del domingo o las noticias grandes? Entonces es el feed. ¿Solo en un símbolo (típicamente oro o un índice a horas raras)? Cotización a un lado. ¿En todas las órdenes, incluso en mercado tranquilo? Mira el modo de trading del símbolo y la conexión del terminal.
Las causas del 90% de los casos
Mercado rápido en noticias: el precio se mueve entre el momento en que tu EA construye la solicitud y el momento en que el servidor la lee; cuando llega, tu precio está caducado. Rollover y apertura: los spreads se disparan y un lado de la cotización desaparece durante segundos.
Símbolo en modo solo-cerrar o trading suspendido por el bróker: puedes mantener, no abrir. Un feed congelado mientras el terminal reconecta. Y en manual, mandar una orden límite a través del mercado actual: el servidor es más amable ahí, pero los stops apretados en picos chocan con el mismo muro.
El arreglo de cada causa
Para noticias y aperturas: no entres dentro del pico. Si automatizas, un filtro de noticias vale más que cualquier lógica de reintentos, porque elimina los segundos donde viven estos errores. Para cotizaciones a un lado: espera al siguiente tick y refresca antes de reintentar; no hagas bucle a máxima velocidad, solo apilarás rechazos.
Para símbolos solo-cerrar: revisa la especificación del símbolo (modo de trading) y el calendario del bróker; el error se corta solo cuando reabre el trading. Para feeds congelados: reconecta el terminal (ver la guía de Sin conexión) y vuelve a abrir el gráfico del símbolo para resuscribirlo.
Qué significa si un EA envía tus órdenes
Un EA por alertas envía a mercado en el instante exacto en que se dispara, que es justo cuando el mercado rápido rechaza precios. Lo esperable: la orden rechazada queda con su retcode en el Historial y la siguiente señal funciona. Lo que no quieres es un EA martilleando el servidor con reintentos inmediatos: llegan los límites de tasa y más rechazos.
Si tu estrategia es sensible a noticias, configura el filtro antes de rezar para que el requote se arregle solo: saltarse la ventana del dato es el único arreglo que elimina la causa. El lote que enví;as también importa en esos momentos: un rechazo más un lote mal calculado es como mueren las cuentas pequeñas en el siguiente reintento; calcula sobre el papel primero.
Preguntas frecuentes
¿Por qué los errores de precio se concentran en el rollover y la apertura del domingo?
Los spreads se ensanchan y las cotizaciones se afilan durante unos minutos mientras vuelve la liquidez. Las solicitudes con el precio del tick anterior dejan de casar con cualquier cotización y el servidor contesta 10015 o 10021 hasta que el feed se estabiliza.
¿Debe mi EA reintentar inmediatamente tras uno de estos errores?
No. Reintenta con el siguiente tick confirmado, no en bucle cerrado. El reintento inmediato manda el mismo precio caducado otra vez, apila rechazos y puede tirar de los límites de tasa del servidor, convirtiendo un error transitorio en un timeout.
¿Off quotes es lo mismo que un requote?
No. El requote (10004) vuelve con un precio nuevo que puedes aceptar; off quotes (10021) significa que no había cotización para procesar la solicitud. El requote se negocia, el off quotes es simplemente un 'prueba más tarde'.
¿Por qué solo pasa con el oro o un índice por la noche?
Liquidez más fina fuera de horario: un banco retira su lado de la cotización y el feed queda a un solo lado durante segundos. Cualquier solicitud sobre ese símbolo en esos segundos rebota con 10021.
Lee la columna de motivo, no el popup
Los códigos en el Historial y las causas en el Diario: cuando los lees, MT5 deja de ser criptico. El paso siguiente es automatizar la pata aburrida, para que tus alertas de TradingView lleguen a MT5 sin vigilar gráficos.
Referencia: MQL5 runtime error codes; trade server return codes. 4756 y 10016 son códigos distintos; 10016 identifica stops no válidos.