IndicatorCreate

A função retorna o handle de um indicador técnico especificado criado baseado no array de parâmetros de tipo MqlParam.

int  IndicatorCreate(
   string           symbol,                            // nome do ativo
   ENUM_TIMEFRAMES  period,                            // janela de tempo
   ENUM_INDICATOR   indicator_type,                    // tipo de indicador a partir da enumeração ENUM_INDICATOR
   int              parameters_cnt=0,                  // número de parâmetros
   const MqlParam&  parameters_array[]=NULL,           // array de parâmetros
   );

Parâmetros

symbol

[in] Nome de um ativo, sobre cujos dados o indicador é calculado. NULL significa o ativo corrente.

period

[in]  O valor da janela de tempo pode ser um dos valores da enumeração ENUM_TIMEFRAMES, 0 significa a janela de tempo corrente.

indicator_type

[in]  Tipo de indicador, pode ser um dos valores da enumeração ENUM_INDICATOR.

parameters_cnt

[in] O número de parâmetros passados no array parameters_array[]. Os elementos do array têm uma estrutura especial de tipo MqlParam. Por default, zero - parâmetros são passados. Se você especificar um número não zero de parâmetros, o parâmetro parameters_array é obrigatório. Você não pode passar mais que 64 parâmetros.

parameters_array[]=NULL

[in]  Um array do tipo MqlParam, cujos elementos contém o tipo e valor de cada parâmetro de input de um indicador técnico.

Valor de retorno

Retorna o handle de um indicador técnico especificado, em caso de falha retorna INVALID_HANDLE.

Observação

Se o handle de indicador de tipo IND_CUSTOM for criado, o campo type do primeiro elemento do array de parâmetros de entrada parameters_array deve ter o valor TYPE_STRING da enumeração ENUM_DATATYPE, e o campo string_value do primeiro elemento deve conter o nome do indicador customizado. O indicador customizado deve estar compilado (arquivo com extensão EX5) e localizado no diretório MQL5/Indicators do terminal cliente ou em um subdiretório.

Indicadores que requerem teste são definidos automaticamente a partir da chamada da função iCustom(), se o correspondente parâmetro for definido através de um string constante. Para todos os outros casos (uso da função IndicatorCreate() ou uso de uma string não-constante no parâmetro de define o nome do indicador) a propriedade #property tester_indicator é requerida:

#property tester_indicator "indicator_name.ex5"

Se primeira forma da chamada for usada em um indicador customizado, você pode adicionalmente indicar como último parâmetro sobre quais dados o indicador será calculado, ao passar os parâmetros de input. Se o parâmetro "Apply to" não for especificado explicitamente, o cálculo default é baseado no valores de PRICE_CLOSE.

Exemplo:

void OnStart()
  {
   MqlParam params[];
   int      h_MA,h_MACD;
//--- criar iMA("EURUSD",PERIOD_M15,8,0,MODE_EMA,PRICE_CLOSE);
   ArrayResize(params,4);
//--- define ma_period
   params[0].type         =TYPE_INT;
   params[0].integer_value=8;
//--- define ma_shift
   params[1].type         =TYPE_INT;
   params[1].integer_value=0;
//--- define ma_method
   params[2].type         =TYPE_INT;
   params[2].integer_value=MODE_EMA;
//--- define applied_price
   params[3].type         =TYPE_INT;
   params[3].integer_value=PRICE_CLOSE;
//--- criar MA
   h_MA=IndicatorCreate("EURUSD",PERIOD_M15,IND_MA,4,params);
//--- criar iMACD("EURUSD",PERIOD_M15,12,26,9,h_MA);
   ArrayResize(params,4);
//--- define ma_period rápido
   params[0].type         =TYPE_INT;
   params[0].integer_value=12;
//--- define ma_period lento
   params[1].type         =TYPE_INT;
   params[1].integer_value=26;
//--- define período de suavização por diferença
   params[2].type         =TYPE_INT;
   params[2].integer_value=9;
//--- define o handle do indicador como applied_price
   params[3].type         =TYPE_INT;
   params[3].integer_value=h_MA;
//--- criar MACD baseado em média móvel
   h_MACD=IndicatorCreate("EURUSD",PERIOD_M15,IND_MACD,4,params);
//--- usa os indicadores
//--- . . .
//--- libera os indicatores (primeiro h_MACD)
   IndicatorRelease(h_MACD);
   IndicatorRelease(h_MA);
  }