IndicatorCreate

La fonction retourne le handle de l'indicateur technique spécifié et créé à partir du tableau de paramètres de type MqlParam.

int  IndicatorCreate(
   string           symbol,                            // nom du symbole
   ENUM_TIMEFRAMES  period,                            // période
   ENUM_INDICATOR   indicator_type,                    // type d'indicateur de l'énumération ENUM_INDICATOR
   int              parameters_cnt=0,                  // nombre de paramètres
   const MqlParam&  parameters_array[]=NULL,           // tableau de paramètres
   );

Parameters

symbol

[in] Nom du symbole sur les données duquel l'indicateur sera calculé. NULL signifie le symbole courant.

period

[in]  La valeur de la période peut être l'une des valeurs de l'énumération ENUM_TIMEFRAMES, 0 signifie la période courante.

indicator_type

[in]  Type de l'indicateur, peut être l'une des valeurs de l'énumération ENUM_INDICATOR.

parameters_cnt

[in] Le nombre de paramètres passés dans le tableau parameters_array[]. Les éléments du tableau sont du type spécial MqlParam. Par défaut, aucun paramètre n'est passé. Si vous spécifiez un nombre positif de paramètres, le paramètre parameters_array est obligatoire. Vous ne pouvez pas passer plus de 64 paramètres.

parameters_array[]=NULL

[in]  Un tableau d'éléments de type MqlParam, dont les éléments contiennent le type et la valeur de chaque paramètre d'entrée d'un indicateur technique.

Valeur de Retour

Retourne le handle de l'indicateur technique spécifié, retourne INVALID_HANDLE en cas d'échec.

Note

Si le handle de l'indicateur de type IND_CUSTOM est créé, le champ type du premier élément du tableau des paramètres d'entrée parameters_array doit avoir la valeur TYPE_STRING de l'énumération ENUM_DATATYPE, et le champ string_value du premier élément doit contenir le nom de l'indicateur personnalisé. L'indicateur personnalisé doit être compilé (fichier avec une extension EX5) et doit être situé dans le répertoire MQL5/Indicators du terminal client ou dans un sous-répertoire.

Les indicateurs nécessitant un test sont définis automatiquement à partir de l'appel à la fonction iCustom(), si le paramètre correspondant est défini avec constant string. Pour tous les autres cas (utilisation de la fonction IndicatorCreate() ou utilisation d'une chaîne de caractères (string) non constante dans le paramètre définissant le nom de l'indicateur), la propriété #property tester_indicator est nécessaire :

#property tester_indicator "indicator_name.ex5"

Si la première forme de l'appel est utilisée dans un indicateur personnalisé, vous pouvez indiquer en plus comme dernier paramètre sur quelles données l'indicateur sera calculé. Si le paramètre "Appliquer à" n'est pas spécifié explicitement, le calcul sera basé par défaut sur les valeurs PRICE_CLOSE.

Exemple :

void OnStart()
  {
   MqlParam params[];
   int      h_MA,h_MACD;
//--- crée iMA("EURUSD",PERIOD_M15,8,0,MODE_EMA,PRICE_CLOSE);
   ArrayResize(params,4);
//--- configure ma_period
   params[0].type         =TYPE_INT;
   params[0].integer_value=8;
//--- configure ma_shift
   params[1].type         =TYPE_INT;
   params[1].integer_value=0;
//--- configure ma_method
   params[2].type         =TYPE_INT;
   params[2].integer_value=MODE_EMA;
//--- configure applied_price
   params[3].type         =TYPE_INT;
   params[3].integer_value=PRICE_CLOSE;
//--- crée la MA
   h_MA=IndicatorCreate("EURUSD",PERIOD_M15,IND_MA,4,params);
//--- crée iMACD("EURUSD",PERIOD_M15,12,26,9,h_MA);
   ArrayResize(params,4);
//--- configure la ma_period rapide
   params[0].type         =TYPE_INT;
   params[0].integer_value=12;
//--- configure la ma_period lente
   params[1].type         =TYPE_INT;
   params[1].integer_value=26;
//--- configure la période de lissage
   params[2].type         =TYPE_INT;
   params[2].integer_value=9;
//--- configure le handle de l'indicateur comme applied_price
   params[3].type         =TYPE_INT;
   params[3].integer_value=h_MA;
//--- crée le MACD à partir de la moyenne mobile
   h_MACD=IndicatorCreate("EURUSD",PERIOD_M15,IND_MACD,4,params);
//--- utilisation des indicateurs
//--- . . .
//--- libère les indicateurs (en premier h_MACD)
   IndicatorRelease(h_MACD);
   IndicatorRelease(h_MA);
  }