← Todos los tutoriales
MT5 API · 5:59

Interrupciones y límites de solicitudes.

La API recupera el terminal. Tú controlas el cliente.

Descargar el ejemplo de Python · PY ↓

Guía paso a paso

  1. 0:00

    Interrupciones y límites de solicitudes.

    Este tutorial explica cómo gestionar interrupciones de MT5 y límites de solicitudes: esperar la recuperación de la API, restablecer el flujo y reintentar lecturas de forma segura. Usamos respuestas reales de una cuenta demo.

  2. 0:20

    Comprueba la sesión existente.

    Abre mt5.mrpc.pro. Conserva tu clave de API y el id del terminal. Esta respuesta de ConnectState muestra Connected y los campos isConnected, isAlive y apiIsAlive en true. El terminal funciona correctamente. Una desconexión del navegador o una solicitud fallida no significa, por sí sola, que necesites otro terminal.

  3. 0:47

    Deja actuar a la recuperación automática.

    MetaRPC supervisa los terminales e intenta recuperar automáticamente las sesiones activas que cumplen las condiciones, manteniendo su id. Tu aplicación debe pausar las operaciones afectadas y dar tiempo al servicio, en vez de llamar repetidamente a Reconnect o ConnectEx. Comprueba el estado a intervalos y verifica el acceso con AccountSummary antes de continuar. La recuperación necesita tiempo; no es inmediata tras cada fallo.

  4. 1:22

    Actúa según la causa.

    Una desconexión intencionada, una sesión caducada, una suspensión o credenciales incorrectas requieren la acción correspondiente. Lee la causa y actualiza las credenciales o resuelve el problema de la cuenta. Reconnect y ConnectByToken son herramientas de recuperación explícita, no parte de un bucle para cada solicitud. Si una sesión recuperable sigue sin estar disponible, mantén las operaciones pausadas y comunica a soporte el código de error y la hora.

  5. 1:59

    Restablece el WebSocket del cliente.

    El terminal y el WebSocket de tu aplicación usan conexiones distintas. Cuando vuelvan a funcionar las lecturas de la cuenta, cierra el socket averiado y abre OnSymbolTick con el id guardado y la clave de API. Recupera las suscripciones. Estos mensajes reales de EURUSD incluyen bid, ask y marcas de tiempo. Confirma que llegan datos nuevos y evita flujos duplicados. Un flujo que funciona puede permanecer abierto.

  6. 2:34

    Reconoce una respuesta de limitación.

    Esta respuesta real de AccountSummary procede de una prueba de lectura acotada. HTTP Status Code 200 indica que la API devolvió una respuesta. El campo error no es null: contiene TERMINAL_RATE_LIMIT_EXCEEDED e indica que la llamada no se ejecutó. El límite observado fue de trescientas llamadas no comerciales por minuto móvil, compartidas por los clientes del terminal. Consulta los límites vigentes; no fijes este número permanentemente en el código.

  7. 3:12

    Espera lo que indique el servidor.

    En esta respuesta, error.properties contiene un par clave-valor llamado RetryAfterSeconds con valor 1. Espera al menos un segundo y añade una pequeña demora aleatoria antes de repetir la lectura. Pausa también los otros procesos que comparten la cuota del terminal. Si llega otro rechazo, usa su nuevo plazo. Para HTTP Status Code 429, respeta la cabecera Retry-After.

  8. 3:46

    Reanuda de forma gradual.

    Tras la espera, la lectura real vuelve a funcionar: HTTP Status Code 200, sin error de API y con datos de la cuenta demo. No envíes de golpe todas las lecturas pendientes. Guarda en caché la información repetida, coordina el ritmo entre procesos y usa OnSymbolTick para cotizaciones. Un límite de solicitudes exige esperar, no reconectar el terminal.

  9. 4:17

    Define reintentos claros y limitados.

    El ejemplo Python se limita a AccountSummary. Solo reintenta respuestas explícitas de limitación u ocupación con un plazo válido, añade una demora aleatoria y termina tras tres intentos. Los demás errores se devuelven al código que lo llama. Guarda las credenciales en variables de entorno. Usa otra política acotada para interrupciones; no apliques este ayudante de lectura a comandos de conexión ni métodos comerciales.

  10. 4:52

    Aclara primero una operación incierta.

    Si se pierde la respuesta a una solicitud comercial, el bróker podría haberla procesado. La recuperación automática no determina su resultado. Cuando vuelva el acceso, revisa OpenedOrders y DealsHistory. Usa los tickets de órdenes y operaciones disponibles y compara símbolo, dirección, volumen y hora. Operaciones parecidas pueden confundirse: deja pausada una solicitud sin resolver en lugar de reenviarla automáticamente.

  11. 5:29

    Termina la sesión correctamente.

    Cuando termines deliberadamente la sesión, detén las suscripciones y llama a Disconnect. El flujo de demostración se detuvo y el terminal se desconectó; no se modificó ninguna operación. Recuerda: MetaRPC recupera los terminales elegibles, el cliente restablece su socket si hace falta, espera ante límites y aclara los resultados comerciales antes de enviar otra operación.