- Obtener símbolos disponibles y listas de Observación de Mercado
- Editar la lista de Observación de Mercado
- Comprobar la existencia de un símbolo
- Comprobar la pertinencia de los datos de los símbolos
- Obtener el último tick de un símbolo
- Horarios de sesiones de trading y cotización
- Coeficientes de margen de los símbolos
- Visión general de las funciones para obtener las propiedades de los símbolos
- Comprobar el estado de los símbolos
- Tipo de precio para construir gráficos de símbolos
- Divisas base, de cotización y de margen del instrumento
- Precisión de la representación de precios y pasos de cambio
- Volúmenes permitidos de operaciones de trading
- Permiso de trading
- Condiciones de trading de símbolos y modos de ejecución de órdenes
- Requisitos de margen
- Reglas de vencimiento de órdenes pendientes
- Diferenciales y distancia de orden del precio actual
- Obtener tamaños de swap
- Información actual sobre el mercado (tick)
- Propiedades descriptivas de los símbolos
- Profundidad de Mercado
- Propiedades personalizadas de símbolos
- Propiedades específicas (bolsa, derivados, bonos)
Comprobar la pertinencia de los datos de los símbolos
Debido a la arquitectura distribuida cliente-servidor, los datos del cliente y del servidor pueden ser ocasionalmente diferentes. Por ejemplo, esto puede ocurrir inmediatamente después del inicio de la sesión de terminal, cuando se pierde la conexión o cuando los recursos del ordenador están muy cargados. Además, lo más probable es que el símbolo permanezca no sincronizado durante algún tiempo inmediatamente después de ser añadido a Observación de Mercado. La API de MQL5 permite comprobar la relevancia de los datos de cotización de un símbolo concreto mediante la función SymbolIsSynchronized.
bool SymbolIsSynchronized(const string name)
La función devuelve true si los datos locales del símbolo denominado name están sincronizados con los datos del servidor de trading.
En la sección Obtención de características de arrays de precios, entre otras propiedades de series temporales, se introdujo la propiedad SERIES_SYNCHRONIZED, que devuelve un atributo de sincronización más limitado en su significado: se aplica a una combinación específica de símbolo y marco temporal. En contraste con esta propiedad, la función SymbolIsSynchronized devuelve un atributo de sincronización del historial general para un símbolo.
La construcción de todos los marcos temporales comienza sólo después de la finalización de la descarga del historial. Debido a la arquitectura multihilo y a la computación paralela en el terminal, puede ocurrir que SymbolIsSynchronized devuelva true, y para un marco temporal en el mismo símbolo, la propiedad SERIES_SYNCHRONIZED sea temporalmente igual a false.
Veamos cómo trabaja la nueva función en el indicador SymbolListSync.mq5. Está diseñada para comprobar periódicamente la sincronización de todos los símbolos de Observación de Mercado. El periodo de comprobación lo establece el usuario en segundos en el parámetro SyncCheckupPeriod. Hace que el temporizador se inicie en OnInit.
#property indicator_chart_window
|
En el manejador OnTimer, en un bucle, llamamos a SymbolIsSynchronized y recopilamos todos los símbolos no sincronizados en una cadena común, tras lo cual se muestran en el comentario y en el registro.
void OnTimer()
|
Por ejemplo, si añadimos algún símbolo que faltaba (Brent) a Observación de Mercado, obtendremos una entrada como ésta:
Unsynced symbols:
|
En condiciones normales, la mayor parte del tiempo (mientras el indicador está funcionando) no debería haber mensajes de este tipo en el registro. No obstante, en caso de problemas de comunicación puede generarse una avalancha de alertas.