- 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 el estado de los símbolos
Antes hemos visto varias funciones relacionadas con el estado de un símbolo. Recordemos que SymbolExist se utiliza para comprobar la existencia de un símbolo, y SymbolSelect se utiliza para comprobar la inclusión o exclusión de la lista Observación de Mercado. Entre las propiedades del símbolo, hay varias banderas de propósito similar, cuyo uso tiene ventajas y desventajas en comparación con las funciones anteriores.
En concreto, la propiedad SYMBOL_SELECT permite averiguar si el símbolo especificado está seleccionado en Observación de Mercado, mientras que la función SymbolSelect modifica esta propiedad.
La función SymbolExist, a diferencia de la propiedad similar SYMBOL_EXIST, rellena adicionalmente la variable de salida con una indicación de que el símbolo es un símbolo definido por el usuario. Al consultar las propiedades, sería necesario analizar estos dos atributos por separado, ya que el atributo del símbolo personalizado se almacena en otra propiedad, SYMBOL_CUSTOM. Sin embargo, en algunos casos, el programa puede necesitar sólo una propiedad, y entonces la posibilidad de una consulta independiente se convierte en una ventaja.
Todas las banderas son valores booleanos obtenidos a través de la función SymbolInfoInteger.
Identificador |
Descripción |
---|---|
SYMBOL_EXIST |
Indica que existe un símbolo con el nombre dado. |
SYMBOL_SELECT |
Indica que el símbolo está seleccionado en Observación de Mercado |
SYMBOL_VISIBLE |
Indica que el símbolo especificado se muestra en Observación de Mercado |
Especialmente interesante es SYMBOL_VISIBLE. El hecho es que algunos símbolos (por regla general, se trata de tipos de cambio cruzados que son necesarios para calcular los requisitos de margen y el beneficio en la divisa de depósito) se seleccionan en Observación de Mercado automáticamente y no aparecen en la lista visible para el usuario. Tales símbolos deben ser elegidos explícitamente (por el usuario o mediante programación) para que se muestren. Así, es la propiedad SYMBOL_VISIBLE la que permite determinar si un símbolo es visible en la ventana: puede ser igual a false para algunos elementos de la lista, obtenidos mediante un par de funciones SymbolsTotal y SymbolName con el parámetro selected igual a true.
Consideremos un sencillo script (SymbolInvisible.mq5) que busca en el terminal los símbolos seleccionados implícitamente, es decir, aquellos que no se muestran en Observación de Mercado (se restablece SYMBOL_VISIBLE) mientras SYMBOL_SELECT para ellos es igual a true.
#define PUSH(A,V) (A[ArrayResize(A, ArraySize(A) + 1) - 1] = V)
|
Pruebe a compilar y ejecutar el script en diferentes cuentas. No siempre se da la situación de que un símbolo se seleccione implícitamente. Por ejemplo, si en Observación de Mercado se seleccionan los tickers de los blue chips rusos que cotizan en rublos y la cuenta de trading está en otra divisa (por ejemplo, dólares o euros, pero no rublos), se seleccionará automáticamente el símbolo USDRUB. Por supuesto, esto supone que no se ha añadido previamente a Observación de Mercado de forma explícita. Obtenemos el siguiente resultado en el registro:
Symbols: total=50681, selected=49, implicit=1
|