CalendarValueHistoryByEvent

Belirtilen zaman aralığındaki tüm olayların değer dizisini olay ID'sine göre elde edin.

bool  CalendarValueHistoryByEvent(
   ulong              event_id,          // olay ID'si 
   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ı
   );

Parametreler

event_id

[in]  Olay ID'si

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.

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.

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";
//--- AB olaylarını al
   MqlCalendarEvent events[];
   int events_count=CalendarEventByCountry(EU_code,events);
//--- AB olaylarını Günlük'te görüntüle
   if(events_count>0)
     {
      PrintFormat("AB olayları: %d",events_count);
      //--- olay listesini azalt, analiz için 10 olay yeterlidir
      ArrayResize(events,10);
      ArrayPrint(events);
     }
//--- "ECB Interest Rate Decision" olayının event_id=999010007 ye sahip olduğunu görün
   ulong event_id=events[6].id;        // olayın ID'si Takvim’de değişebilir, bu yüzden doğruladığınızdan emin olun.
   string event_name=events[6].name;   // Takvim olayının adı
   PrintFormat("event_name=%s event_id=%d için değerleri elde et",event_name,event_id);
//--- "ECB Interest Rate Decision" olayının tüm değerlerini al
   MqlCalendarValue values[];
//--- olayları aldığımız aralığın sınırlarını belirle
   datetime date_from=0;           // tüm olayları kullanılabilir geçmişin başlangıcından itibaren al
   datetime date_to=D'01.01.2016'; // 2016'dan eski olmayan olayları al
   if(CalendarValueHistoryByEvent(event_id,values,date_from,date_to))
     {
      PrintFormat("%s için değerler alındı: %d",
                  event_name,ArraySize(values));
      //--- değer listesini azalt, analiz için 10 olay yeterlidir
      ArrayResize(values,10);
      ArrayPrint(values);
     }
   else
     {
      PrintFormat("Hata! event_id=%d için değerler alınamadı",event_id);
      PrintFormat("Hata kodu: %d",GetLastError());
     }
  }
//---
/*
  Sonuç:
  AB olayları: 56
            [id] [type] [sector] [frequency] [time_mode] [country_id] [unit] [importance] [multiplier] [digits]                                        [source_url]                                 [event_code]                                    [name] [reserv
   [0] 999010001      0        5           0           0          999      0            2            0        0 "https://www.ecb.europa.eu/home/html/index.en.html" "ecb-non-monetary-policy-meeting"            "ECB Non-monetary Policy Meeting"                
   [1] 999010002      0        5           0           0          999      0            2            0        0 "https://www.ecb.europa.eu/home/html/index.en.html" "ecb-monetary-policy-meeting-accounts"       "ECB Monetary Policy Meeting Accounts"           
   [2] 999010003      0        5           0           0          999      0            3            0        0 "https://www.ecb.europa.eu/home/html/index.en.html" "ecb-monetary-policy-press-conference"       "ECB Monetary Policy Press Conference"           
   [3] 999010004      0        5           0           0          999      0            3            0        0 "https://www.ecb.europa.eu/home/html/index.en.html" "ecb-president-draghi-speech"                "ECB President Draghi Speech"                    
   [4] 999010005      0        5           0           0          999      0            2            0        0 "https://www.ecb.europa.eu/home/html/index.en.html" "ecb-vice-president-vitor-constancio-speech" "ECB Vice President Constancio Speech"           
   [5] 999010006      1        5           0           0          999      1            3            0        2 "https://www.ecb.europa.eu/home/html/index.en.html" "ecb-deposit-rate-decision"                  "ECB Deposit Facility Rate Decision"             
   [6] 999010007      1        5           0           0          999      1            3            0        2 "https://www.ecb.europa.eu/home/html/index.en.html" "ecb-interest-rate-decision"                 "ECB Interest Rate Decision"                     
   [7] 999010008      0        5           0           0          999      0            2            0        0 "https://www.ecb.europa.eu/home/html/index.en.html" "ecb-economic-bulletin"                      "ECB Economic Bulletin"                          
   [8] 999010009      1        5           0           0          999      2            2            3        3 "https://www.ecb.europa.eu/home/html/index.en.html" "targeted-ltro"                              "ECB Targeted LTRO"                              
   [9] 999010010      0        5           0           0          999      0            2            0        0 "https://www.ecb.europa.eu/home/html/index.en.html" "ecb-executive-board-member-praet-speech"    "ECB Executive Board Member Praet Speech"        
  event_name=ECB Interest Rate Decision event_id=999010007 için değerleri elde et
  ECB Interest Rate Decision olay değerleri alındı: 102
       [id] [event_id]              [time]            [period] [revision] [actual_value] [prev_value] [revised_prev_value]     [forecast_value] [impact_type] [reserved]
   [0] 2776  999010007 2007.03.08 11:45:00 1970.01.01 00:00:00          0        3750000      4250000 -9223372036854775808 -9223372036854775808             0          0
   [1] 2777  999010007 2007.05.10 11:45:00 1970.01.01 00:00:00          0        3750000      3750000 -9223372036854775808 -9223372036854775808             0          0
   [2] 2778  999010007 2007.06.06 11:45:00 1970.01.01 00:00:00          0        4000000      3750000 -9223372036854775808 -9223372036854775808             0          0
   [3] 2779  999010007 2007.07.05 11:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0
   [4] 2780  999010007 2007.08.02 11:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0
   [5] 2781  999010007 2007.09.06 11:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0
   [6] 2782  999010007 2007.10.04 11:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0
   [7] 2783  999010007 2007.11.08 12:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0
   [8] 2784  999010007 2007.12.06 12:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0
   [9] 2785  999010007 2008.01.10 12:45:00 1970.01.01 00:00:00          0        4000000      4000000 -9223372036854775808 -9223372036854775808             0          0
*/

 

Ayrıca bakınız

CalendarCountries, CalendarEventByCountry, CalendarValueHistory, CalendarEventById, CalendarValueById