CalendarValueById

ID'sine göre olay değeri açıklaması elde edin.

bool  CalendarValueById(
   ulong                value_id,     // olay değeri ID'si 
   MqlCalendarValue&    value         // olay değeri almak için değişken
   );

Parametreler

value_id

[in]  Olay değeri ID'si.

value

[out]  Olay açıklaması almak için MqlCalendarValue tip değişkeni. Takvim olaylarını yönetme örneğine bakın.

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ı),
  • 5402 – ERR_CALENDAR_NO_DATA (ülke bulunamadı),
  • 5401 – ERR_CALENDAR_TIMEOUT (istek süresi sınırı aşıldı).

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.

Örnek:

//+------------------------------------------------------------------+
//| Script programı başlatma fonksiyonu                              |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Japonya için ülke kodu (ISO 3166-1 Alpha-2)
   string japan_code="JP";
//--- 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    
//--- Japonya olay değerleri dizisini al
   MqlCalendarValue values[];
   int values_count=CalendarValueHistory(values,date_from,date_to,japan_code);
//--- algılanan olay değerlerini gözden geçir
   if(values_count>0)
     {
      PrintFormat("Japonya olayları için değer sayısı: %d",values_count);
      //--- tüm "boş" değerleri sil (actual_value==-9223372036854775808)       
      for(int i=values_count-1;i>=0;i--)
        {
         if(values[i].actual_value==-9223372036854775808)
            ArrayRemove(values,i,1);
        }
      PrintFormat("Boş olanları sildikten sonra değer sayısı: %d",ArraySize(values));
     }
   else
     {
      PrintFormat("Şu ülke kodu için olaylar alınamadı: %s, hata %d",
                  japan_code,GetLastError());
      //--- komut dosyasının erken tamamlanması
      return;
     }
//--- values[] dizisinde 10'dan fazla değer olmamasını sağla
   if(ArraySize(values)>10)
     {
      PrintFormat("Değer listesini 10'a düşür ve bu değerleri görüntüle");
      ArrayRemove(values,0,ArraySize(values)-10);
     }
   ArrayPrint(values);
 
//--- şimdi bilinen value_id ye dayanarak bir olay değeri açıklamasının nasıl elde edileceğini gösterelim.
   for(int i=0;i<ArraySize(values);i++)
     {
      MqlCalendarValue value;
      CalendarValueById(values[i].id,value);
      PrintFormat("%d: value_id=%d değer=%d etki=%s",
                  i,values[i].id,value.actual_value,EnumToString(ENUM_CALENDAR_EVENT_IMPACT(value.impact_type)));
     }
//---
  }
/*
  Sonuç:
  Japonya olayları için değer sayısı: 1734
  Boş olanları sildikten sonra değer sayısı: 1017
  Değer listesini 10'a düşür ve bu değerleri görüntüle
        [id] [event_id]              [time]            [period] [revision] [actual_value] [prev_value] [revised_prev_value] [forecast_value] [impact_type] [reserved]
   [0] 56500  392030004 2019.03.28 23:30:00 2019.03.01 00:00:00          0         900000       600000 -9223372036854775808           500000             1          0
   [1] 56501  392030005 2019.03.28 23:30:00 2019.03.01 00:00:00          0         700000       700000 -9223372036854775808           700000             0          0
   [2] 56502  392030006 2019.03.28 23:30:00 2019.03.01 00:00:00          0        1100000      1100000 -9223372036854775808           900000             1          0
   [3] 56544  392030007 2019.03.28 23:30:00 2019.02.01 00:00:00          0        2300000      2500000 -9223372036854775808          2200000             2          0
   [4] 56556  392050002 2019.03.28 23:30:00 2019.02.01 00:00:00          0        1630000      1630000              1610000          1620000             1          0
   [5] 55887  392020003 2019.03.28 23:50:00 2019.02.01 00:00:00          0         400000       600000 -9223372036854775808          1300000             2          0
   [6] 55888  392020004 2019.03.28 23:50:00 2019.02.01 00:00:00          0       -1800000     -3300000 -9223372036854775808         -2000000             1          0
   [7] 55889  392020002 2019.03.28 23:50:00 2019.02.01 00:00:00          0         200000     -2300000             -1800000           300000             2          0
   [8] 55948  392020006 2019.03.28 23:50:00 2019.02.01 00:00:00          1        1400000     -3400000 -9223372036854775808          -300000             1          0
   [9] 55949  392020007 2019.03.28 23:50:00 2019.02.01 00:00:00          1       -1000000       300000 -9223372036854775808          -100000             2          0
  Value_id değerine dayanan olay değerlerine ilişkin kısa verileri görüntüle
   0: value_id=56500 value=900000 impact=CALENDAR_IMPACT_POSITIVE
   1: value_id=56501 value=700000 impact=CALENDAR_IMPACT_NA
   2: value_id=56502 value=1100000 impact=CALENDAR_IMPACT_POSITIVE
   3: value_id=56544 value=2300000 impact=CALENDAR_IMPACT_NEGATIVE
   4: value_id=56556 value=1630000 impact=CALENDAR_IMPACT_POSITIVE
   5: value_id=55887 value=400000 impact=CALENDAR_IMPACT_NEGATIVE
   6: value_id=55888 value=-1800000 impact=CALENDAR_IMPACT_POSITIVE
   7: value_id=55889 value=200000 impact=CALENDAR_IMPACT_NEGATIVE
   8: value_id=55948 value=1400000 impact=CALENDAR_IMPACT_POSITIVE
   9: value_id=55949 value=-1000000 impact=CALENDAR_IMPACT_NEGATIVE
*/

Ayrıca bakınız

CalendarValueHistoryByEvent, CalendarValueHistory, CalendarValueLastByEvent, CalendarValueLast