- Principales características de los indicadores
- Evento indicador principal: OnCalculate
- Dos tipos de indicadores: para la ventana principal y para la subventana
- Ajuste del número de buffers y gráficos
- Asignación de un array como buffer: SetIndexBuffer
- Configuración de plot: PlotIndexSetInteger
- Reglas de asignación de buffers y gráficos
- Aplicación de directivas para personalizar plots
- Configuración de nombres de plots
- Visualización de las carencias de datos (elementos vacíos)
- Indicadores de subventanas independientes: tamaños y niveles
- Propiedades generales de los indicadores: precisión del título y del valor
- Coloreado de gráficos por elementos
- Omitir dibujo en barras iniciales
- Esperar datos y gestionar la visibilidad (DRAW_NONE)
- Indicadores multidivisa y multitemporal
- Seguimiento de formación de barras
- Comprobación de indicadores
- Limitaciones y ventajas de los indicadores
- Crear un borrador de indicador en el Asistente MQL
Limitaciones y ventajas de los indicadores
Todas las funciones especializadas que se tratan en este capítulo sólo están disponibles en los códigos fuente de los indicadores. No tiene sentido utilizarlos en otros tipos de programas MQL: devolverán un error.
Hay otras funciones que están prohibidas en los indicadores:
- OrderCalcMargin
- OrderCalcProfit
- OrderCheck
- OrderSend
- SendFTP
- WebRequest
- Socket***
- Sleep
- MessageBox
- ExpertRemove
Algunos de ellos (con el prefijo Order-) se refieren a cálculos de negociación y sólo están permitidos en Asesores Expertos y scripts. Otros están pensados para ejecutar peticiones que bloquean la ejecución del hilo hasta que se devuelve el resultado, mientras que esto no está permitido para los indicadores porque se ejecutan en el hilo de interfaz del terminal. Por una razón similar, las funciones Sleep y MessageBox están prohibidas.
Los indicadores se encargan principalmente de visualizar los datos y, curiosamente, no sirven para realizar cálculos masivos. En concreto, si decide crear un indicador que entrene una red neuronal o un árbol de decisión en el proceso, lo más probable es que esto afecte negativamente al funcionamiento normal del terminal.
El efecto de un cálculo largo se demuestra con el indicador IndBarIndex.mq5, que en el modo normal está diseñado para mostrar números de barra en los elementos de su búfer. No obstante, utilizando el parámetro de entrada SimulateCalculation, que debe ajustarse a true, puede iniciar un bucle infinito en un temporizador.
// Setting to true will freeze the drawing of indicators
|
En este modo, el indicador, como era de esperar, empieza a ocupar por completo 1 núcleo del procesador, pero también aparece otro efecto secundario: cualquier indicador en el mismo símbolo donde se coloca IndBarIndex deja de actualizarse. Por ejemplo, podemos ejecutar IndBarIndex en EURUSD (cualquier marco temporal), y luego en cualquier otro gráfico EURUSD, puede intentar aplicar una media móvil regular: no se mostrará hasta que elimine IndBarIndex del primer gráfico.
A este respecto, todos los cálculos largos deben colocarse en hilos separados, es decir, scripts o Asesores Expertos no comerciales, y sólo sus resultados deben ser utilizados en los indicadores. La API de MQL5 permite crear nuevos gráficos u objetos con gráficos en los que es posible aplicar plantillas tpl con el Asesor Experto o script requerido.