Bars

Belli bir sembol ve periyot değri için geçmiş verilerde yer alan çubuk sayısını verir. Fonksiyon çağrısının iki versiyonu vardır.

Tüm geçmiş çubukların istenmesi

int  Bars(
   string           symbol_name,     // sembol ismi
   ENUM_TIMEFRAMES  timeframe        // periyot
   );

Belirli bir zaman aralığındaki çubukların istenmesi

int  Bars(
   string           symbol_name,     // sembol ismi
   ENUM_TIMEFRAMES  timeframe,       // periyot
   datetime         start_time,      // başlangıç tarihi ve zamanı
   datetime         stop_time        // son tarih ve zaman
   );

Parametreler

symbol_name

[in]  Sembol ismi.

timeframe

[in]  Periyot.

start_time

[in]  İlk elemana karşılık gelen çubuğun zamanı.

stop_time

[in]  Son elemana karşılık gelen çubuğun zamanı.

Dönüş Değeri

start_time ve stop_time parametreleri girilmişse belirtilen zaman aralığındaki çubuk sayısına, aksi durumda toplam çubuk sayısına dönüş yapar.

Not

Bars() fonksiyonunun çağrısı sırasında ilgili zaman serisinin verileri terminalde mevcut değilse veya sunucuyla eşitlenmemişse fonksiyon '0' dönüşü yapar.

Belli bir zaman aralığındaki çubukların sayısı istendiğinde, sadece açılış zamanları bu aralığa düşen çubuklar hesaba katılır. Örneğin, Cumartesi günü start_time=son_salı ve stop_time=son_cuma parametreleriyle W1 çubuklarının sayısı istenirse fonksiyon '0' dönüşü yapacaktır. Çünkü W1 periyodu için açılış zamanı Pazar günüdür, dolayısıyla ilgili zaman aralığında herhangi bir W1 çubuğu yoktur.

Tüm geçmiş veriler için istek örneği:

   int bars=Bars(_Symbol,_Period);
   if(bars>0)
     {
      Print("Bu sembol ve periyot için geçmiş veride yer alan çubuk sayısı = ",bars);
     }
   else  //hiç çubuk yok
     {
      //--- sembol verisi sunucu verileriyle eşitlenmemiş olabilir
      bool synchronized=false;
      //--- döngü sayacı
      int attempts=0;
      // eşitleme için 5 deneme yap
      while(attempts<5)
        {
         if(SeriesInfoInteger(Symbol(),0,SERIES_SYNCHRONIZED))
           {
            //--- eşitleme bitti, çık
            synchronized=true;
            break;
           }
         //--- sayacı artır
         attempts++;
         //--- sonraki tekrara kadar 10 milisaniye bekle
         Sleep(10);
        }
      //--- eşitlemenin ardından döngüyü bitir
      if(synchronized)
        {
         Print("Bu sembol ve periyot için terminal geçmişindeki çubuk sayısı = ",bars);
         Print("Bu sembol ve periyot için terminal geçmişindeki ilk tarih = ",
               (datetime)SeriesInfoInteger(Symbol(),0,SERIES_FIRSTDATE));
         Print("Bu sembol için sunucuda bulunan ilk tarih = ",
               (datetime)SeriesInfoInteger(Symbol(),0,SERIES_SERVER_FIRSTDATE));
        }
      //--- veriler eşitlenemedi
      else
        {
         Print(_Sembol," için çubuk sayısı alınamadı");
        }
     }

Belirtilen aralık için çubuk sayısının istenmesi örneği:

   int n;
   datetime date1 = D'2016.09.02 23:55'// Cuma
   datetime date2 = D'2016.09.05 00:00'// Pazartesi
   datetime date3 = D'2016.09.08 00:00'// Perşembe
   //---
   n=Bars(_Symbol,PERIOD_H1,D'2016.09.02 02:05',D'2016.09.02 10:55');
   Print("Çubuk sayısı: ",n); // Çıktı: "Çubuk sayısı: 8", H2 hesaba dahil edildi, H11 edilmedi
   n=Bars(_Symbol,PERIOD_D1,date1,date2);
   Print("Çubuk sayısı: ",n); // Çıktı: "Çubuk sayısı: 1", belirtilen aralıkta bir D1 (Pazartesi) çubuğu olduğu için
   n=Bars(_Symbol,PERIOD_W1,date2,date3);
   Print("Çubuk sayısı: ",n); // Çıktı: "Çubuk sayısı: 0", belirtilen aralıkta herhangi bir W1 çubuğu bulunmuyor

Ayrıca bakınız

Olay İşleyici Fonksiyonları