ChartIndicatorAdd

Belirlenmiş tanıtıcı değere sahip olan bir göstergeyi, belirlenen bir çizelgeye ekler. Gösterge ve çizelge aynı sembol ve aynı zaman aralığı için oluşturulmuş olmalıdır.

bool  ChartIndicatorAdd(
   long  chart_id,                 // çizelge tanımlayıcı
   int   sub_window                // alt pencere numarası
   int   indicator_handle          // gösterge tanıtıcı değeri
   );

Parametreler

chart_id

[in]  Çizelge tanımlayıcısı. 0, mevcut çizelge anlamına gelir.

sub_window

[in]  çizelge alt penceresinin numarası. 0, ana çizelge penceresi demektir. Yeni bir pencerede bir gösterge eklemek için parametre, mevcut son pencerenin numarasından bir büyük olmalıdır; yani CHART_WINDOWS_TOTAL değerine eşit olmalıdır. Eğer parametre değeri, CHART_WINDOWS_TOTAL değerinden büyükse, yeni pencere oluşturulmayacak ve gösterge eklenmeyecektir.

indicator_handle

[in]  Göstergenin tanıtıcı değeri.

Dönüş değeri

Başarı durumunda 'true' değerine, aksi durumda 'false' değerine dönüş yapacaktır. Hata ile ilgili bilgi almak için, GetLastError() fonksiyonunu çağırın. Hata 4114, çizelgenin ve göstergenin, zaman aralığı veya sembol açısından farklı olduklarını belirtir.

Not

Eğer ayrı bir alt pencerede çizilmesi gereken bir gösterge (örneğin, gömülü iMACD veya #property indicator_separate_window özelliğiyle belirlenmiş bir özel gösterge), ana pencereye uygulanmışsa, bu pencerede görünür olmayabilir ama göstergeler listesinde yer alır. Bu, gösterge ölçeğinin fiyat çizelgesi ölçeğinden farklı olduğu ve uygulanan göstergenin değerlerinin, fiyat çizelgesinin kapsamına uymadığı anlamına gelir. Bu durumda GetLastError()fonksiyonu, hata olmadığını belirten sıfır değerine dönüş yapar. Bunun gibi "görünmez" göstergeler, Veri Penceresinde görülebilir ve diğer MQL5 uygulamaları tarafından kullanılabilir.

Örnek:

#property description "ChartIndicatorAdd() fonksiyonu ile çalışmayı gösteren Uzman Danışman."
#property description "Grafik üzerinde çalıştırdıktan (ve hata mesajı aldıktan) sonra, Uzman Danışman"
#property description "özelliklerini açın ve doğru <symbol> ve <period> parametrelerini girin."
#property description "MACD göstergesi çizelgeye eklenecektir."
 
//--- giriş parametreleri
input string          symbol="AUDUSD";    // sembol ismi
input ENUM_TIMEFRAMES period=PERIOD_M12;  // zaman aralığı
input int    fast_ema_period=12;          // hızlı MACD periyodu
input int    slow_ema_period=26;          // yavaş MACD periyodu
input int      signal_period=9;           // sinyal periyodu
input ENUM_APPLIED_PRICE apr=PRICE_CLOSE// MACD hesabı için fiyat tipi
 
int indicator_handle=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   indicator_handle=iMACD(symbol,period,fast_ema_period,slow_ema_period,signal_period,apr);
//--- göstergeyi çizelgeye eklemeyi dene
   if(!AddIndicator())
     {
      //--- AddIndicator() fonksiyonu, göstergeyi çizelgeye eklemeyi reddeti
      int answer=MessageBox("MACD'yi hala çizelgeye eklemek istiyor musunuz?",
                            "göstergeyi eklemek için hatalı sembol ve/veya zaman aralığı",
                            MB_YESNO // "Evet" ve "Hayır" seçim düğmeleri gözükecek
                            );
      //--- kullanıcı hala ChartIndicatorAdd() fonksiyonunun hatalı kullanımında ısrar ediyorsa
      if(answer==IDYES)
        {
         //--- öncelikle, bunun hakkında bir bülten girişi yapılacak
         PrintFormat("Uyarı! %s: MACD(%s/%s) göstergesi %s/%s çizelgesine eklenmek isteniyor. Hata 4114'in alınması",
                     __FUNCTION__,symbol,EnumToString(period),_Symbol,EnumToString(_Period));
         //--- göstergeyi eklemeyi deneyeceğimiz, yeni bir alt pencere numarası al
         int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);
         //--- şimdi başarısızlığa mahkum bir deneme yap
         if(!ChartIndicatorAdd(0,subwindow,indicator_handle))
            PrintFormat("MACD göstergesini %d çizelge penceresine ekleme başarısız oldu. Hata kodu  %d",
                        subwindow,GetLastError());
        }
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
// Uzman Danışman hiçbir şey gerçekleştirmiyor
  }
//+------------------------------------------------------------------+
//| Göstergeyi kontrol edip çizelgeye eklemek için fonksiyon         |
//+------------------------------------------------------------------+
bool AddIndicator()
  {
//--- gösterilen mesaj
   string message;
//--- gösterge ve çizelge sembollerinin uyumunu kontrol et
   if(symbol!=_Symbol)
     {
      message="Demo_ChartIndicatorAdd() fonksiyonunun kullanımını görüntüle:";
      message=message+"\r\n";
      message=message+"Başka sembolde hesaplanan göstergenin çizelgeye eklenmesi başarısız.";
      message=message+"\r\n";
      message=message+"Uzman Danışman özelliğinde çizelge sembolünü belirt - "+_Symbol+".";
      Alert(message);
      //--- erken çıkış, gösterge çizelgeye eklenmeyecek
      return false;
     }
//--- göstergenin ve çizelgenin zaman aralıkları uyuşuyor mu kontrol et
   if(period!=_Period)
     {
      message="farklı zaman aralığında hesaplanmış gösterge, çizelgeye eklemiyor.";
      message=message+"\r\n";
      message=message+"Uzman Danışman özelliklerinde çiizelge zaman aralığını belirt - "+EnumToString(_Period)+".";
      Alert(message);
      //--- erken çıkış, gösterge çizelgeye eklenmeyecek
      return false;
     }
//--- tüm kontroller tamamlandı, sembol ve gösterge zaman aralığı çizelgeyle uygun
   if(indicator_handle==INVALID_HANDLE)
     {
      Print(__FUNCTION__,"  MACD göstergesi oluşturuluyor");
      indicator_handle=iMACD(symbol,period,fast_ema_period,slow_ema_period,signal_period,apr);
      if(indicator_handle==INVALID_HANDLE)
        {
         Print("MACD göstergesinin oluşturulması başarısız oldu. Hata kodu ",GetLastError());
        }
     }
//--- hata kodunu sıfırla
   ResetLastError();
//--- göstergeyi çizelgeye uygula
   Print(__FUNCTION__,"  MACD göstergesinin çizelgeye eklenmesi");
   Print("MACD şu değerlerle oluşturuldu ",symbol,"/",EnumToString(period));
//--- MACD göstergesinin eklendiği alt pencere numarasını al
   int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);
   PrintFormat("MACD göstergesinin %d çizelge penceresine eklenmesi",subwindow);
   if(!ChartIndicatorAdd(0,subwindow,indicator_handle))
     {
      PrintFormat("MACD göstergesinin %d çizelge penceresine eklenmesi başarısız oldu. Hata kodu  %d",
                  subwindow,GetLastError());
     }
//--- Gösterge başarıyla eklendi
   return(true);
  }

Ayrıca Bakınız

ChartIndicatorDelete(), ChartIndicatorName(), ChartIndicatorsTotal(), iCustom(), IndicatorCreate()