La función iCustom de MetaTrader devuelve el valor de cualquier indicador que tengamos compilado. Esta función se puede parametrizar para hacer que devuelva el valor del indicador en cualquier símbolo, timeframe, barra de tiempo y por supuesto con los valores de entrada del indicador que estimemos.
A modo de ejemplo vamos a crear otro indicador que imprima mensajes de alerta con el valor del indicador Momentum cada vez que se abra una barra nueva.
El indicador Momentum tiene únicamente dos parámetros el Periodo y el precio al que lo aplicamos.
Al cargar nuestro indicador deberíamos pedir dos datos de entrada: el nombre del indicador para obtener datos y el número de periodos sobre los que hacemos el cálculo. Ésto lo conseguimos con dos variables externas a principio del programa:
extern string NombreIndicador = "Momentum"; extern int PeriodoIndicador = 14;
Con esto ya podemos utilizar la función iCustom de la siguiente forma:
double valor = iCustom(NULL,0,NombreIndicador,PeriodoIndicador,0,0);
Los parámetros corresponden a:
Se observa que del par de entradas del indicador solamente hemos especificado la primera, el periodo. No nos importa mucho, de momento, el precio aplicado.
Con esto ya tenemos el valor del indicador almacenado en una variable de tipo double. Podríamos mostrarla a cada nueva barra utilizando la función Alert:
Alert("El indicador ",NombreIndicador," vale: ",valor);
Finalmente el código completo quedaría así:
#property copyright "Programando Forex" #property link "http://www.programandoforex.com" #property indicator_chart_window extern string NombreIndicador = "Momentum"; extern int PeriodoIndicador = 14; int start() { static datetime MarcaTiempo = 0; // Cada apertura if(MarcaTiempo != Time[0]) { // Tomar datos del indicador double valor = iCustom(NULL,0,NombreIndicador,PeriodoIndicador,0,0); Alert("El indicador ",NombreIndicador," vale: ",valor); MarcaTiempo = Time[0]; } return(0); }
[...] los EA utilizan indicadores personalizados para operar, es por eso que cuando adquirimos un nuevo programa normalmente vienen varios ficheros [...]