CalendarValueHistory

Ülkeye ve/veya para birimine göre sıralan belirli bir zaman aralığındaki tüm olaylar için değer dizisini elde edin.

bool  CalendarValueHistory(
   MqlCalendarValue&  values[],              // değer açıklamaları için dizi 
   datetime           datetime_from,         // bir zaman aralığının sol sınırı
   datetime           datetime_to=0          // bir zaman aralığının sağ sınırı
   const string       country_code=NULL,     // kod olarak ülke adı (ISO 3166-1 alpha-2)
   const string       currency=NULL          // kod olarak ülke para birimi 
   );

Parametreler

values[]

[out]  Olay değerlerini almak için MqlCalendarValue tip dizisi. Takvim olaylarını yönetme örneğine bakın.

datetime_from

[in]  Olayların belirtilen bir ID tarafından seçildiği zaman aralığının başlangıç tarihi (datetime_from < datetime_to durumundayken).

datetime_to=0

[in]  Olayların belirtilen bir ID tarafından seçildiği zaman aralığının bitiş tarihi. Eğer datetime_to ayarlanmadıysa (veya 0 ise), Takvim veritabanındaki belirtilen datetime_from tarihinden başlayarak tüm olay değerleri (gelecekteki olayların değerleri dahil) geri döndürülür.

country_code=NULL

[in]  Kod olarak ülke adı (ISO 3166-1 alpha-2)

currency=NULL

[in]  Kod olarak ülke para birimi.

Geri dönüş değeri

Başarılı olursa true, aksi takdirde false olarak geri döner. Hata hakkında bilgi edinmek için, GetLastError() fonksiyonunu çağırın. Olası hatalar:

  • 4001 – ERR_INTERNAL_ERROR  (genel çalışma zamanı hatası),
  • 4004 – ERR_NOT_ENOUGH_MEMORY (istek yürütmek için yeterli bellek yok),
  • 5401 – ERR_CALENDAR_TIMEOUT (istek süresi sınırı aşıldı),
  • 5400 – ERR_CALENDAR_MORE_DATA (dizi boyutu, tüm değerlerin açıklamalarını almak için yetersiz; yalnızca diziye sığan açıklamalar alındı),

Not

Ekonomik takvim ile çalışmak için tüm fonksiyonlar alım-satım sunucusu zamanını (TimeTradeServer) kullanır. Bu; MqlCalendarValue yapısındaki zamanın ve CalendarValueHistoryByEvent/CalendarValueHistory fonksiyonlarındaki zaman girdilerinin, kullanıcının yerel zamanından ziyade, alım-satım sunucusu zaman diliminde ayarlandığı anlamına gelir.

Eğer events[] sabit uzunluklu dizi fonksiyona iletildiyse ve sonucun tamamını kaydetmek için yeterli alan yoksa, ERR_CALENDAR_MORE_DATA (5400) hatası etkinleştirilir.

Eğer datetime_to ayarlanmadıysa (veya 0 ise), Takvim veritabanındaki belirtilen datetime_from tarihinden başlayarak tüm olay değerleri (gelecekteki olayların değerleri dahil) geri döndürülür.

country_code ve currency filtreleri için NULL ve "" değerleri eşdeğerdir ve filtrenin yokluğu anlamına gelir.

country_code için, MqlCalendarCountry yapısının kod alanı, örneğin "US", "RU" veya "EU" kullanılmalıdır.

currency için, MqlCalendarCountry yapısının currency alanı, örneğin "USD", "RUB" veya "EUR" kullanılmalıdır.

Filtreler bir arada uygulanır, yani mantıksal 'VE' sadece her iki koşulun (ülke ve para birimi) aynı anda karşılandığı olayların değerlerini seçmek için kullanılır.

MqlCalendarValue yapısı, actual_value, forecast_value, prev_value ve revised_prev_value alanlarındaki değerleri kontrol etmek ve ayarlamak için yöntemler sağlar. Değer belirlenmezse, alan LONG_MIN (-9223372036854775808) olarak ayarlanır.

Lütfen bu alanlarda bulunan değerlerin bir milyon ile çarpıldığını unutmayın. Bunun anlamı, CalendarValueById, CalendarValueHistoryByEvent, CalendarValueHistory, CalendarValueLastByEvent ve CalendarValueLast fonksiyonlarını kullanarak MqlCalendarValue'da değerler aldığınızda, alandaki değerlerin LONG_MIN'e eşit olup olmadığını kontrol etmeniz; alanda bir değer belirlenmişse, değeri elde etmek için değeri 1.000.000'a bölmeniz gerektiği anlamına gelir. Değerleri elde etmenin diğer bir yöntemi de MqlCalendarValue yapısının fonksiyonlarını kullanarak değerleri kontrol etmek ve elde etmektir.

Örnek:

//+------------------------------------------------------------------+
//| Script programı başlatma fonksiyonu                              |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- AB için ülke kodu (ISO 3166-1 Alpha-2)
   string EU_code="EU";
//--- tüm AB olay değerlerini al
   MqlCalendarValue values[];
//--- olayları aldığımız aralığın sınırlarını belirle
   datetime date_from=D'01.01.2018';  // 2018’deki tüm olayları al
   datetime date_to=0;                // 0, henüz gerçekleşmemiş olanlar dahil tüm bilinen olaylar anlamına gelir 
//--- 2018 yılından bu yana AB olay geçmişini talep et
   if(CalendarValueHistory(values,date_from,date_to,EU_code))
     {
      PrintFormat("country_code=%s ülke kodu için olay değerleri alındı: %d",
                  EU_code,ArraySize(values));
      //--- Günlük çıktısı için dizinin boyutunu küçült
      ArrayResize(values,10);
//--- olay değerlerini Günlük'te görüntüle
      ArrayPrint(values);      
     }
   else
     {
      PrintFormat("Hata! Şu ülke kodu için olaylar alınamadı: country_code=%s",EU_code);
      PrintFormat("Hata kodu: %d",GetLastError());
     }
//---
  }
/*
  Sonuç:
  country_code=EU ülke kodu için olay değerleri alındı: 1384
        [id] [event_id]           [time]               [period] [revision]   [actual_value] [prev_value] [revised_prev_value] [forecast_value] [impact_type] [reserved]
   [0] 54215  999500001 2018.01.02 09:00:00 2017.12.01 00:00:00          3       60600000     60600000 -9223372036854775808         60500000             1          0
   [1] 54221  999500002 2018.01.04 09:00:00 2017.12.01 00:00:00          3       56600000     56500000 -9223372036854775808         56000000             1          0
   [2] 54222  999500003 2018.01.04 09:00:00 2017.12.01 00:00:00          3       58100000     58000000 -9223372036854775808         58400000             2          0
   [3] 45123  999030005 2018.01.05 10:00:00 2017.11.01 00:00:00          0         600000       400000 -9223372036854775808           100000             1          0
   [4] 45124  999030006 2018.01.05 10:00:00 2017.11.01 00:00:00          0        2800000      2500000 -9223372036854775808          1500000             1          0
   [5] 45125  999030012 2018.01.05 10:00:00 2017.12.01 00:00:00          1         900000       900000 -9223372036854775808          1000000             2          0
   [6] 45126  999030013 2018.01.05 10:00:00 2017.12.01 00:00:00          1        1400000      1500000 -9223372036854775808          1500000             2          0
   [7] 54953  999520001 2018.01.05 20:30:00 2018.01.02 00:00:00          0      127900000     92100000 -9223372036854775808         76400000             0          0
   [8] 22230  999040003 2018.01.08 10:00:00 2017.12.01 00:00:00          0        9100000      8200000              8100000          7600000             1          0
   [9] 22231  999040004 2018.01.08 10:00:00 2017.12.01 00:00:00          0       18400000     16300000             16400000         16800000             1          0   
*/ 

Ayrıca bakınız

CalendarCountries, CalendarEventByCountry, CalendarValueHistoryByEvent, CalendarEventById, CalendarValueById