Principales características de los indicadores

El indicador implementa un determinado algoritmo de cálculo aplicado por barras a una serie temporal inicial dada o a varias series temporales. Todas estas series temporales son los arrays terminal's own (véase la función ArrayIsSeries): el terminal les asigna memoria y añade nuevos elementos cada vez que se forman nuevas barras. Naturalmente, entre estos arrays, los arrays con cotizaciones de símbolos en diferentes marcos temporales desempeñan un papel fundamental, ya que son rellenadas por el terminal. Sin embargo, los indicadores lanzados pueden ampliar considerablemente el conjunto de series temporales disponibles para el análisis.

El indicador suele guardar los resultados de sus operaciones en arrays dinámicos, que se registran como búferes de indicadores mediante una función especial (SetIndexBuffer) y también se convierten en los arrays propios del terminal. Además de asignarles memoria, el terminal proporciona acceso público a estos arrays como a nuevas series temporales, sobre las que se pueden calcular otros indicadores.

El punto de entrada a la parte calculada del indicador es la función OnCalculate: un manejador de eventos del mismo nombre. En Visión general de las funciones de gestión de eventosmencionamos ya esta función: su sola presencia en el código fuente basta para que el programa MQL sea percibido por el terminal como un indicador. La función OnCalculate se describirá detalladamente en la sección siguiente. En concreto, la principal característica de OnCalculate es la presencia de dos formas diferentes. El programador debe seleccionar la opción al principio del diseño del indicador, ya que esto determina la finalidad y los posibles casos de uso.

La función OnCalculate no es la única característica distintiva del indicador. Además, un grupo de directivas #property especiales del preprocesador está destinado exclusivamente a los indicadores: los analizaremos paso a paso en varias secciones relevantes de este capítulo. Anteriormente ya hemos visto algunas Propiedades generales del programa, y estas directivas, por supuesto, también se aplican a los indicadores.

Como saben los usuarios de MetaTrader 5, cada indicador tiene una forma de mostrar sus construcciones gráficas (series temporales): en la ventana principal que muestra los precios de los símbolos o en una subventana separada. Esta subventana se crea en la parte inferior de la ventana cuando se añade un indicador específico (o un grupo de indicadores) al gráfico si está diseñado para trabajar en una subventana. Por ejemplo, el indicador estándar de Media Móvil (MA) se dibuja en el gráfico de precios, mientras que el Williams Percent Range (WPR) se dibuja en una subventana aparte.

Desde el punto de vista del desarrollador, esto significa que usted debe determinar inicialmente si el indicador se mostrará en la ventana principal o en una subventana, ya que estos dos modos no pueden combinarse. Además, esta característica, así como el número de búferes de indicador, sólo puede fijarse una vez mediante las directivas #property (véase Dos tipos de indicadores y Ajuste del número de búferes y trazados), y entonces no será posible cambiarlos utilizando llamadas a funciones de la API de MQL5, ya que dichas funciones simplemente no se proporcionan. A diferencia de estos atributos inmutables, la mayoría de las demás propiedades de los indicadores pueden ajustarse dinámicamente mediante funciones especiales. Así, a medida que estudiemos los aspectos técnicos de la programación de indicadores, podremos establecer correspondencias entre las propiedades de #property y las funciones MQL5.

Además, los indicadores suelen implementar los manejadores OnInit y OnDeinit (véase Eventos de referencia de indicadores y Asesores Expertos). OnInit es especialmente importante para asignar arrays que actuarán como búferes de indicadores, es decir, para acumular los resultados de los cálculos intermedios y finales, visibles para el usuario y disponibles para otros programas, como los Asesores Expertos.

El indicador es uno de los programas MQL interactivos que puede, si es necesario, trabajar con eventos de temporizador (OnTimer) y cambios en los gráficos (OnChartEvent) producidos por el usuario u otros programas. Estas características técnicas son opcionales para los indicadores y se basan en la cola de eventos gráficos. Los trataremos por separado en el capítulo sobre gráficos.