- Obtener una lista general de las propiedades del terminal y del programa
- Número de versión del terminal
- Tipo de programa y licencia
- Modos de funcionamiento del terminal y del programa
- Permisos
- Comprobación de las conexiones de red
- Recursos informáticos: memoria, disco y CPU
- Especificaciones de la pantalla
- Propiedades del terminal y de la cadena de programa
- Propiedades personalizadas: límite de barras e idioma de la interfaz
- Vincular un programa a propiedades en tiempo de ejecución
- Comprobar el estado del teclado
- Comprobar el estado del programa MQL y motivo de finalización
- Cierre programático del terminal y establecimiento de un código de retorno
- Tratamiento de errores en tiempo de ejecución
- Errores definidos por el usuario
- Gestión de depuración
- Variables predefinidas
- Constantes predefinidas del lenguaje MQL5
Comprobación de las conexiones de red
Como sabe, la plataforma MetaTrader 5 es un sistema distribuido que incluye varios enlaces. Además del terminal de cliente y del servidor broker, incluye la comunidad MQL5, Market y servicios en la nube, entre otras muchas cosas. De hecho, la parte cliente también está distribuida, y consta de un terminal y agentes de prueba que pueden desplegarse en varios ordenadores de una red local. En este caso, la conexión entre los enlaces puede romperse por una razón u otra. Aunque la infraestructura de MetaTrader 5 intenta restaurar automáticamente su funcionalidad, no siempre es posible hacerlo rápidamente.
Por lo tanto, en los programas MQL hay que tener en cuenta la posibilidad de una pérdida de conexión. La API de MQL5 le permite controlar las conexiones más importantes: con el servidor de trading y con la comunidad MQL5. En TerminalInfoInteger están disponibles las siguientes propiedades:
Identificador |
Descripción |
---|---|
TERMINAL_CONNECTED |
Conexión con el servidor de trading |
TERMINAL_PING_LAST |
El último ping conocido al servidor de trading en microsegundos |
TERMINAL_COMMUNITY_ACCOUNT |
Disponibilidad de los datos de autorización MQL5.community en el terminal |
TERMINAL_COMMUNITY_CONNECTION |
Conexión con MQL5.community |
TERMINAL_MQID |
Disponibilidad de MetaQuotes ID para el envío de notificaciones push |
Todas las propiedades excepto TERMINAL_PING_LAST son banderas booleanas. TERMINAL_PING_LAST contiene un valor de tipo int.
Además de la conexión, un programa MQL a menudo necesita asegurarse de que los datos que tiene están actualizados. En concreto, la bandera TERMINAL_CONNECTED comprobada no significa todavía que las cotizaciones que le interesan estén sincronizadas con el servidor. Para ello, debe comprobar adicionalmente SymbolIsSynchronized o SeriesInfoInteger(..., SERIES_SYNCHRONIZED). Estas características se tratarán en el capítulo sobre series temporales.
La función TerminalInfoDouble admite otra propiedad interesante: TERMINAL_RETRANSMISSION. Denota el porcentaje de paquetes de red reenviados en el protocolo TCP/IP para todas las aplicaciones y servicios en ejecución en este ordenador. Incluso en la red más rápida y mejor configurada, a veces se producen pérdidas de paquetes y, como resultado, no habrá confirmación de la entrega del paquete entre el destinatario y el remitente. En estos casos se vuelve a enviar el paquete perdido. El propio terminal no cuenta el indicador TERMINAL_RETRANSMISSION, sino que lo solicita una vez por minuto en el sistema operativo.
Un valor alto de esta métrica puede indicar problemas externos (conexión a Internet, su proveedor, red local o problemas informáticos), que pueden empeorar la calidad de la conexión del terminal.
Si existe una conexión confirmada con la comunidad (TERMINAL_COMMUNITY_CONNECTION), un programa MQL puede consultar el saldo actual del usuario llamando a TerminalInfoDouble(TERMINAL_COMMUNITY_BALANCE). Esto le permite utilizar una suscripción automatizada a señales de trading de pago (la documentación de la API está disponible en la página web mql5.com ).
Comprobemos las propiedades de la lista utilizando el script EnvConnection.mq5.
void OnStart()
|
He aquí un ejemplo de registro (los valores coincidirán con su configuración).
TerminalInfoInteger(TERMINAL_CONNECTED)=1 / ok
|