Errores comunes del EA
Qué significa cada código de error que ves en /signals y cómo solucionarlo.
Cuando una señal aparece como failed o blocked en /signals, el
campo de error te dice por qué. Esta página los lista todos con
solución.
Errores en señales blocked (rechazadas por el backend)
Estos los marca PineLink antes de mandar la señal al EA.
daily_target_hit
Significa: el guardián de equity bloqueó la señal porque ya tocaste algún límite del día (profit target, loss limit o max drawdown).
Solución:
- Si quieres seguir operando hoy: ve a
/targets, sube el límite o resetea el halt manualmente. No recomendado si estás en prop firm. - Lo correcto es esperar al día siguiente (los halts diarios se resetean automáticamente en la zona horaria configurada).
- Si es el
max_drawdown, solo se desbloquea manualmente desde/targets→ Resetear halt.
parse_error
Significa: el mensaje de TradingView no respeta la sintaxis. El
detalle del error te dice qué falló (ej. unknown action, missing symbol).
Solución: revisa la alerta en TradingView. Compara con Sintaxis de señales.
invalid_license
Significa: el license_key del Webhook URL no existe en BD o está
desactivada.
Solución:
- Verifica que el Webhook URL en TradingView es exactamente el de
/connections. Cualquier carácter de más rompe. - Si recientemente desactivaste la conexión, reactívala o crea una nueva y actualiza la URL en TradingView.
rate_limited
Significa: tu licencia recibió demasiadas señales en poco tiempo. Límites: 60/minuto y 1000/hora por licencia.
Solución:
- Si dispara una alerta legítima muy frecuentemente, redúcela en TradingView (cambia "Once Per Bar" a "Once Per Bar Close").
- Si pasaste el límite por error: espera al siguiente minuto/hora.
unmapped_symbol (warning, no bloquea)
Significa: la alerta usó un símbolo que no tiene mapping y PineLink lo está pasando tal cual al EA. NO bloquea la señal — es solo un aviso de que igual el broker no lo reconoce.
Solución:
- Si la operación se ejecuta OK: ignora el warning, no necesitas mapping.
- Si la operación falla con
symbol_not_found: añade un mapping en/symbols.
inactive_license
Significa: la licencia existe pero no está activa.
Solución: ve a /connections y reactívala (o crea una nueva).
Errores en señales failed (rechazadas por MT5/broker)
Estos los reporta el EA después de intentar abrir la operación.
symbol_not_found
Significa: el broker no tiene un símbolo con el nombre que enviaste (después del mapeo si lo hay).
Solución:
- Abre MT5 → Market Watch → busca cómo se llama tu símbolo realmente.
- Añade un mapping en
/symbols. Por ejemplo:EURUSD → EURUSD.m. - Mira Mapping de símbolos.
market_closed
Significa: el mercado para ese símbolo está cerrado en este momento.
Solución:
- Forex tiene horario 24/5 (cerrado fines de semana).
- Stocks/índices tienen horario específico de cada bolsa.
- Crypto en algunos brokers es 24/7, en otros tiene cortes.
- Ajusta tus alertas TradingView para que no disparen en horario cerrado, o filtra por session en Pine Script.
insufficient_margin
Significa: tu cuenta no tiene margen libre suficiente para abrir la operación con el tamaño calculado.
Solución:
- Reduce el
risk=en la alerta. - Cierra otras posiciones que tengan margen retenido.
- Sube de plan en el broker (apalancamiento mayor) si tu broker lo permite.
min_stop_distance
Significa: tu SL o TP está más cerca del precio de entrada de lo que tu broker permite. Cada broker tiene su distancia mínima (típico: 3-10 pips).
Solución:
- Aleja el SL/TP. Por ejemplo, si tenías
sl=2, prueba consl=10. - Comprueba la distancia mínima de tu broker en su web o pregúntales.
freeze_level
Significa: el precio actual está dentro del "freeze level" que el broker fija alrededor de los SL/TP de las órdenes pendientes — no puedes modificar ni cancelar la orden mientras esté ahí.
Solución:
- Espera a que el precio se aleje y reintenta.
- O cancela manualmente desde MT5 si te urge.
max_positions_reached
Significa: el EA llegó al límite local de posiciones simultáneas
configurado en /ea-config → Posiciones → Max posiciones.
Solución:
- Sube el límite si quieres más posiciones a la vez.
- O cierra alguna posición abierta antes de que entre la nueva.
halted_locally
Significa: el EA detectó halt local (consultó al backend recientemente y le dijo que estaba en halt). Esto es redundancia con el backend para protegerte si la sincronización tiene latencia.
Solución: igual que daily_target_hit arriba — espera al cambio
de día o resetea manualmente.
broker_rejected (con mensaje específico)
Significa: el broker devolvió un error genérico que no encaja en
las categorías anteriores. El campo error lleva el mensaje específico
de MT5 (ej. "trade context busy", "requote", etc.).
Solución: depende del mensaje. Búscalo en la documentación de tu broker. Los más comunes:
| Mensaje del broker | Solución |
|--------------------|----------|
| trade context busy | Reintenta después. El terminal MT5 está procesando otra orden. |
| requote | El precio cambió mientras se enviaba. Activar Allow slippage en el EA. |
| off quotes | El broker no está dando precio en ese momento. Probar más tarde. |
| too many requests | Reduce la frecuencia de envío. |
Códigos HTTP de respuesta del webhook
Si llamas al webhook desde fuera (testing o integración custom), estos son los códigos:
| HTTP | Significado |
|------|-------------|
| 200 | Señal aceptada (puede ser queued o blocked — mira el body) |
| 400 | parse_error — sintaxis inválida |
| 401 | invalid_license — licencia no existe o está desactivada |
| 413 | payload_too_large — body de más de 10KB |
| 429 | rate_limited — espera tiempo en Retry-After |
| 500 | Error interno del backend (raro). Reintenta en unos segundos. |
Próximos pasos
- Solución de problemas — para casos donde no es un código de error específico (ej. "el EA no conecta").
- Sintaxis de señales — para
evitar
parse_error.