Utilización de indicadores preconfeccionados de programas MQL

En el capítulo anterior aprendimos a desarrollar indicadores personalizados. Los usuarios pueden colocarlos en gráficos y realizar con ellos análisis técnicos manuales. Pero ésta no es la única forma de utilizar los indicadores: MQL5 le permite crear instancias de indicadores y solicitar sus datos calculados mediante programación. Esto puede hacerse tanto a partir de otros indicadores, combinando varios sencillos en otros más complejos, como a partir de Asesores Expertos que implementan el trading automático o semiautomático en señales de indicadores.

Basta con conocer los parámetros del indicador, así como la ubicación y el significado de los datos calculados en sus búferes públicos, a fin de organizar la construcción de estas series temporales recién aplicadas y acceder a ellas.

En este capítulo estudiaremos las funciones para la creación y eliminación de indicadores, así como la lectura de sus búferes. Esto se aplica no sólo a los indicadores personalizados escritos en MQL5, sino también a un amplio conjunto de indicadores integrados.

Los principios generales de la interacción programática con los indicadores incluyen varios pasos:

  • Creación del indicador descriptor, que es un número de identificación único emitido por el sistema en respuesta a una determinada llamada a una función (iCustom o IndicatorCreate) y a través del cual el código MQL informa del nombre y los parámetros del indicador requerido.
  • Lectura de datos de los búferes de indicadores especificados por el descriptor mediante la función CopyBuffer.
  • Liberación del manejador (IndicatorRelease) si el indicador ya no es necesario.

La creación y liberación del descriptor suelen realizarse durante la inicialización y desinicialización del programa, respectivamente, y los búferes se leen y analizan repetidamente, según sea necesario; por ejemplo, cuando llegan los ticks.

En todos los casos, excepto en los exóticos, cuando se requiera cambiar dinámicamente la configuración de los indicadores durante la ejecución del programa, se recomienda obtener descriptores de indicadores una vez en OnInit o en el constructor de la clase de objeto global.

Todas las funciones de creación de indicadores tienen al menos 2 parámetros: símbolo y marco temporal. En lugar de un símbolo, puede pasar NULL, que significa el instrumento actual. Además, el valor 0 corresponde al marco temporal actual. Opcionalmente, puede utilizar las variables integradas _Symbol y _Period. Si es necesario, puede establecer un símbolo y un marco temporal arbitrarios que no estén relacionados con el gráfico. Así, en particular, es posible aplicar indicadores multiactivos y de marco temporal múltiple.

No se puede acceder a los datos del indicador inmediatamente después de crear su instancia porque el cálculo de los búferes lleva cierto tiempo. Antes de leer los datos, debe comprobar su disponibilidad mediante la función BarsCalculated (también recibe un argumento descriptor y devuelve el número de barras calculadas). De lo contrario, se recibirá un error en lugar de datos. Aunque no es crítico, ya que no provoca que el programa se detenga y se descargue, la ausencia de datos hará que el programa sea inútil.

Más adelante en este capítulo, por brevedad, nos referiremos a la creación de instancias de indicadores y a la obtención de sus descriptores simplemente como «creación de indicadores». Debe distinguirse del término similar «creación de indicadores personalizados», con el que nos referíamos a escribir el código fuente de los indicadores en el capítulo anterior.