IndicatorCreate

MqlParam tipi parametrelerden meydana gelen bir diziyle oluşturulmuş teknik göstergenin tanıtıcı değerine dönüş yapar.

int  IndicatorCreate(
   string           symbol,                            // sembol ismi
   ENUM_TIMEFRAMES  period,                            // zaman-aralığı
   ENUM_INDICATOR   indicator_type,                    // ENUM_INDICATOR içinden seçilen gösterge tipi
   int              parameters_cnt=0,                  // parametrelerin sayısı
   const MqlParam&  parameters_array[]=NULL,           // parametrelerin dizisi
   );

Parametreler

symbol

[in] Gösterge verisinin hesaplandığı sembolün ismi. NULL mevcut sembol anlamına gelir.

period

[in]  Zaman-aralığı değeri, ENUM_TIMEFRAMES sayımının değerlerinden biri olabilir, 0 mevcut zaman-aralığı anlamına gelir.

indicator_type

[in]  Gösterge tipi, ENUM_INDICATOR sayımının değerlerinden biri olabilir.

parameters_cnt

[in] parameters_array[] dizisine geçirilen parametrelerin sayısı. Dizi elemanları özel bir yapı tipine sahiptir: MqlParam. Varsayılan değeri sıfırdır (parametreler geçirilmedi). Sıfır harici bir parametre sayısını belirtmeniz durumunda, parameters_array kullanımı zorunludur. Diziye 64'dan fazla parametre geçiremezsiniz.

parameters_array[]=NULL

[in]  MqlParam tipi bir dizi - elemanları, bir teknik göstergenin her bir giriş parametresinin tipini ve değerini içerir.

Dönüş değeri

Belirtilen teknik göstergenin tanıtıcı değerine dönüş yapar, başarısızlık durumunda ise, INVALID_HANDLE değerine dönüş yapar.

Not

IND_CUSTOM tipinde bir gösterge oluşturulmuşsa, parameters_array giriş parametrelerinden oluşan dizinin ilk elemanının type alanı, ENUM_DATATYPE sayımının TYPE_STRING değerini, string_value alanı ise özel göstergenin ismini içermelidir. Özel gösterge (EX5 uzantılı dosya) derlenmeli ve MQL5/Indicators konumunda veya bir alt klasörde yer almalıdır.

Sınama gerektiren göstergeler, eğer karşılık gelen parametre bir sabit dizgi ile ayarlanmışsa, iCustom() fonksiyonunun çağrısıyla otomatik olarak tanımlanırlar. Tüm diğer durumlarda (IndicatorCreate() fonksiyonunun kullanımı veya sabit olmayan bir dizginin gösterge ismini belirleyen bir parametrede kullanımı) #property tester_indicator özelliği gereklidir:

#property tester_indicator "gösterge_ismi.ex5"

Bir özel gösterge içerisinde ilk çağrı versiyonunun kullanılması durumunda, giriş parametrelerini geçirirken son parametre ayrı olarak belirtilebilir. "Apply to" parametresi açık şekilde belirtilmemişse, varsayılan hesaplama PRICE_CLOSE değerlerinin temelinde gerçekleştirilir.

Örnek:

void OnStart()
  {
   MqlParam params[];
   int      h_MA,h_MACD;
//--- iMA("EURUSD",PERIOD_M15,8,0,MODE_EMA,PRICE_CLOSE) göstergesini oluştur;
   ArrayResize(params,4);
//--- ma_period değerini ayarla
   params[0].type         =TYPE_INT;
   params[0].integer_value=8;
//--- ma_shift değerini ayarla
   params[1].type         =TYPE_INT;
   params[1].integer_value=0;
//--- ma_method değerini ayarla
   params[2].type         =TYPE_INT;
   params[2].integer_value=MODE_EMA;
//--- applied_price değerini ayarla
   params[3].type         =TYPE_INT;
   params[3].integer_value=PRICE_CLOSE;
//--- MA göstergesini oluştur
   h_MA=IndicatorCreate("EURUSD",PERIOD_M15,IND_MA,4,params);
//--- iMACD("EURUSD",PERIOD_M15,12,26,9,h_MA) göstergesini oluştur;
   ArrayResize(params,4);
//--- hızlı ma_period değerini ayarla
   params[0].type         =TYPE_INT;
   params[0].integer_value=12;
//--- yavaş ma_period değerini ayarla
   params[1].type         =TYPE_INT;
   params[1].integer_value=26;
//--- fark için düzleştirme periyodunu ayarla
   params[2].type         =TYPE_INT;
   params[2].integer_value=9;
//--- gösterge tanıtıcı değerini applied_price şeklinde ayarla
   params[3].type         =TYPE_INT;
   params[3].integer_value=h_MA;
//--- MACD göstergesini hareketli ortalama temelinde oluştur
   h_MACD=IndicatorCreate("EURUSD",PERIOD_M15,IND_MACD,4,params);
//--- göstergeleri kullan
//--- . . .
//--- göstergeleri serbest bırak (önce h_MACD)
   IndicatorRelease(h_MACD);
   IndicatorRelease(h_MA);
  }