IndicatorCreate

Gibt handle des angegebenen technischen Indikators, erzeugt auf der Grundlage des Feldes der Parameter des Typs MqlParam.

int  IndicatorCreate(
   string           symbol,                            // Symbolname
   ENUM_TIMEFRAMES  period,                            // Periode
   ENUM_INDICATOR   indicator_type,                    // Typ des Indikators aus der Enumeration ENUM_INDICATOR
   int              parameters_cnt=0,                  // Anzahl der Parameter
   const MqlParam&  parameters_array[]=NULL,           // Feld der Parameter
   );

Parameter

symbol

[in]  Symbolname auf deren Daten der Indikator berechnet werden wird. NULL bedeutet das laufende Symbol.

period

[in]  Wert der Periode kann einer der Enumerationswerte ENUM_TIMEFRAMES sein, 0 bedeutet das laufende Timeframe .

indicator_type

[in]  Typ des Indikators, kann einen der Enumerationswerte ENUM_INDICATOR annehmen.

parameters_cnt

[in]  Anzahl der Parameter, die im Feld  parameters_array[] übertragen werden. Elemente des Feldes haben haben den Spezialtyp der Struktur MqlParam. Der Default-Wert ist Null - Parameter werden nicht übertragen. Wenn Nicht-Nullzahl der Parameter angegeben wird, ist der Parameter parameters_array obligatorisch. Man kann nicht mehr als 64 Parameter übertragen.

parameters_array[]=NULL

[in]  Feld des Typs MqlParam, dessen Elemente Typ und Wert jedes Eingabeparameters des technischen Indikators enthalten.

Rückgabewert

Gibt handle des angegebenen technischen Indokators zurück, im Fall des Misserfolges gibt INVALID_HANDLE zurück.

Hinweis

Wenn handle des Indikators des Typs IND_CUSTOM erzeugt wird, muss das Feld type des ersten Elementes der Eingabeparameter parameters_array den Wert TYPE_STRING aus der Enumeration ENUM_DATATYPE haben, und das Feld string_value des ersten Elementes muss den Namen des Benutzerindikators enthalten. Benutzerindikator muss compiliert werden (Datei mit Verbreitung EX5) und sich im Verzeichnis MQL5/Indicators des Client-Terminals oder eingebettenem Verzeichnis befinden.

Die für Testenerforderliche Indikatoren werden automatisch aus Aufruf der Funktionen iCustom() bestimmt, wenn der entsprechende Parameter von der Konstantzeile vorgegeben ist. Für andere Fälle (Verwendung der Funktion IndicatorCreate() oder Verwendung einer nicht Konstantzeile im Parameter, der den Namen des Indikator vorgibt) ist diese Eigenschaft #property tester_indicator erforderlich :

#property tester_indicator "indicator_name.ex5"

Wenn im Benutzerindikator die erste Form des Aufrufes verwendet wird, kann bei der übertragung der Eingabeparameter vom letzten Parameter zusaetzlich angegeben werden, welche Daten für seine Beechnung verwendet werden. Wenn Parameter "Apply to"  nicht explizit angegeben wird, wird als Default die Berechnung für Werte PRICE_CLOSE durchgefürt.

Beispiel:

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);
  }