IndicatorCreate

Devuelve el manejador del indicador técnico especificado que ha sido creado a base del array de parámetros del tipo MqlParam.

int  IndicatorCreate(
   string           symbol,                            // nombre del símbolo
   ENUM_TIMEFRAMES  period,                            // período
   ENUM_INDICATOR   indicator_type,                    // tipo del indicador desde la enumeración ENUM_INDICATOR
   int              parameters_cnt=0,                  // número de parámetros
   const MqlParam&  parameters_array[]=NULL,           // array de parámetros
   );

Parámetros

symbol

[in]  Nombre de símbolo del instrumento, a base de los datos de la cual se calcula el indicador. NULL significa el símbolo actual.

period

[in]  Valor del período de tiempo puede ser uno de los valores de la enumeración ENUM_TIMEFRAMES, 0 significa el período de tiempo corriente.

indicator_type

[in]  Tipo del indicador, puede ser uno de los valores de la enumeración ENUM_INDICATOR.

parameters_cnt

[in]  Número de parámetros pasados en el array parameters_array[]. Los elementos del array tienen un tipo especial de la estructura MqlParam. Por defecto, valor cero - los parámetros no se pasan. Si el número de parámetros indicado es distinto a cero, entonces el parámetro parameters_array es obligatorio. Se puede pasar no más de 64 parámetros.

parameters_array[]=NULL

[in]  Array del tipo MqlParam, cuyos elementos contienen el tipo y valor de cada uno de los parámetros de entrada del indicador técnico.

Valor devuelto

Devuelve el manejador del indicador técnico especificado, en caso del fallo devuelve INVALID_HANDLE.

Nota

Si se crea el manejador del indicador del tipo IND_CUSTOM, el campo type del primer elemento del array de los parámetros de entrada parameters_array obligatoriamente tiene que tener el valor TYPE_STRING desde la enumeración ENUM_DATATYPE, y el campo string_value del primer elemento tiene que tener el nombre del indicador personalizado. El indicador personalizado tiene que estar compilado (archivo con la extensión EX5) y ubicarse en el directorio MQL5/Indicators del terminal de cliente o en una subcarpeta.

Los indicadores que requieren verificaciones se definen automáticamente desde la llamada a la función iCustom(), si el parámetro correspondiente es fijado por una cadena constante. Para los demás casos (uso de función IndicatorCreate() o uso de una cadena no constante en el parámetro que asigna el nombre del indicador) esta propiedad #property tester_indicator es necesaria:

#property tester_indicator "indicator_name.ex5"

Si en un indicador personalizado se utiliza la primera forma de la llamada, entonces a la hora de pasar los parámetros de entrada, a través del último parámetro se puede especificar adicionalmente a base de qué datos éste va a ser calculado. Si el parámetro "Apply to" no está especificado explícitamente, por defecto el cálculo se basa en los valores PRICE_CLOSE.

Ejemplo:

void OnStart()
  {
   MqlParam params[];
   int      h_MA,h_MACD;
//--- create iMA("EURUSD",PERIOD_M15,8,0,MODE_EMA,PRICE_CLOSE);
   ArrayResize(params,4);
//--- set ma_period
   params[0].type         =TYPE_INT;
   params[0].integer_value=8;
//--- set ma_shift
   params[1].type         =TYPE_INT;
   params[1].integer_value=0;
//--- set ma_method
   params[2].type         =TYPE_INT;
   params[2].integer_value=MODE_EMA;
//--- set applied_price
   params[3].type         =TYPE_INT;
   params[3].integer_value=PRICE_CLOSE;
//--- create MA
   h_MA=IndicatorCreate("EURUSD",PERIOD_M15,IND_MA,4,params);
//--- create iMACD("EURUSD",PERIOD_M15,12,26,9,h_MA);
   ArrayResize(params,4);
//--- set fast ma_period
   params[0].type         =TYPE_INT;
   params[0].integer_value=12;
//--- set slow ma_period
   params[1].type         =TYPE_INT;
   params[1].integer_value=26;
//--- set smooth period for difference
   params[2].type         =TYPE_INT;
   params[2].integer_value=9;
//--- set indicator handle as applied_price
   params[3].type         =TYPE_INT;
   params[3].integer_value=h_MA;
//--- create MACD based on moving average
   h_MACD=IndicatorCreate("EURUSD",PERIOD_M15,IND_MACD,4,params);
//--- use indicators
//--- . . .
//--- release indicators (first h_MACD)
   IndicatorRelease(h_MACD);
   IndicatorRelease(h_MA);
  }