IndicatorCreate

La funzione restituisce l'handle di un indicatore tecnico specificato creato in base all'array di parametri di MqlParam tipo.

int  IndicatorCreate(
   string           symbol,                            // nome simbolo
   ENUM_TIMEFRAMES  period,                            // timeframe
   ENUM_INDICATOR   indicator_type,                    // tipo indicatore per l'enumerazione ENUM_INDICATOR
   int              parameters_cnt=0,                  // numero di parametri
   const MqlParam&  parameters_array[]=NULL,           // array di parametri
   );

Parametri

symbol

[in] Nome di un simbolo, dei dati di cui viene calcolato l'indicatore. NULL significa il corrente simbolo

period

[in] Il valore del periodo può essere uno dei valori dell' enumerazione ENUM_TIMEFRAMES, 0 significa il timeframe corrente.

indicator_type

[in] Tipo indicatore, può essere uno dei valori dell' enumerazione ENUM_INDICATOR.

parameters_cnt

[in] Il numero di parametri passati nell' array parameters_array[]. Gli elementi dell' array ha un particolare tipo struttura MqlParam. Per impostazione predefinita, zero parametri - non vengono passati. Se si specifica un numero di parametri diverso da zero, il parametro parameters_array è obbligatorio. È possibile passare non più di 64 parametri.

parameters_array[]=NULL

[in] Un array di tipo MqlParam, i cui elementi contengono il tipo ed il valore di ciascun parametro di input di un indicatore tecnico.

Valore restituito

Restituisce l'handle di un indicatore tecnico specificato, in caso di fallimento restituisce INVALID_HANDLE.

Nota

Se viene creato l'handle indicatore di tipo IND_CUSTOM, il campo tipo del primo elemento dell'array di parametri di input parameters_array deve avere il valore dell'enumerazione TYPE_STRINGENUM_DATATYPE, ed il campo valore_stringa del primo elemento deve contenere il nome dell'indicatore personalizzato. L'indicatore personalizzato deve essere compilato (file con estensione EX5) e localizzato nella directory MQL5/Indicators del terminale client o in una sottodirectory.

Indicatori che richiedono il testing vengono definiti automaticamente dalla chiamata della funzione iCustom(), se il parametro corrispondente è impostato attraverso la costante stringa. Per tutti gli altri casi (utilizzo della funzione IndicatorCreate() o uso di una stringa non-costante nel parametro che imposta il nome indicatore) la proprietà #property tester_indicator è necessaria:

#property tester_indicator "indicator_name.ex5"

Se la prima forma di chiamata viene usata nell'indicatore personalizzato, è possibile inoltre indicare come ultimo parametro quali dati vengono calcolati quando si passano i parametri di input. Se il parametro "Applica a" non viene indicato, il calcolo predefinito è basato su valori PRICE_CLOSE.

Esempio:

voidOnStart()
  {
   MqlParam params[];
   int      h_MA,h_MACD;
//--- crea iMA("EURUSD",PERIOD_M15,8,0,MODE_EMA,PRICE_CLOSE);
   ArrayResize(params,4);
//--- imposta ma_period
   params[0].type         =TYPE_INT;
   params[0].integer_value=8;
//--- imposta ma_shift
   params[1].type         =TYPE_INT;
   params[1].integer_value=0;
//--- imposta ma_method
   params[2].type         =TYPE_INT;
   params[2].integer_value=MODE_EMA;
//--- imposta applied_price
   params[3].type         =TYPE_INT;
   params[3].integer_value=PRICE_CLOSE;
//--- crea MA
   h_MA=IndicatorCreate("EURUSD",PERIOD_M15,IND_MA,4,params);
//--- crea iMACD("EURUSD",PERIOD_M15,12,26,9,h_MA);
   ArrayResize(params,4);
//--- imposta fast ma_period
   params[0].type         =TYPE_INT;
   params[0].integer_value=12;
//--- imposta slow ma_period
   params[1].type         =TYPE_INT;
   params[1].integer_value=26;
//--- imposta periodo smooth for difference
   params[2].type         =TYPE_INT;
   params[2].integer_value=9;
//--- imposta l'handle indicatore come applied_price
   params[3].type         =TYPE_INT;
   params[3].integer_value=h_MA;
//--- crea MACD basato su moving average
   h_MACD=IndicatorCreate("EURUSD",PERIOD_M15,IND_MACD,4,params);
//--- usa l'indicatore
//--- . . .
//--- rilascia indicatore (first h_MACD)
   IndicatorRelease(h_MACD);
   IndicatorRelease(h_MA);
  }