CalendarValueById

Abrufen der Ereigniswertbeschreibung nach seiner ID.

bool  CalendarValueById(
   ulong                value_id,     // Ereigniswert-ID
   MqlCalendarValue&    value         // Variable für die Übernahme des Ereigniswerts
   );

Parameter

value_id

[in]  Ereigniswert-ID.

Wert

[out]   Variable vom Typ MqlCalendarValue für die Übernahme der Ereignisbeschreibung. Beispiele der Behandlung von Kalenderereignisse.

Rückgabewert

Liefert bei Erfolg true, ansonsten false. Um Informationen über einen Fehler zu erhalten, rufen Sie die Funktion GetLastError() auf. Mögliche Fehler:

  • 4001 - ERR_INTERNAL_ERROR  (allgemeiner Laufzeitfehler),
  • 5402 – ERR_CALENDAR_NO_DATA (Land wurde nicht gefunden),
  • 5401 - ERR_CALENDAR_TIMEOUT (Zeitlimit für Anfragen überschritten).

Hinweis

Alle Funktionen, die mit dem Wirtschaftskalender arbeiten, nutzen die Zeit des Handelsservers (TimeTradeServer). Das bedeutet, dass die Zeit in der Struktur MqlCalendarValue und die Zeitangaben der Funktionen CalendarValueHistoryByEvent/CalendarValueHistory in der Zeitzone des Handelsservers eingestellt sind und nicht in der lokalen Zeitzone des Nutzers.

Die Struktur von MqlCalendarValue bietet Methoden zum Prüfen und Setzen von Werten der Felder actual_value, forecast_value, prev_value und revised_prev_value. Wenn kein Wert angegeben wird, speichert das Feld LONG_MIN (-9223372036854775808).

Bitte beachten Sie, dass die in diesem Feld gespeicherten Werte mit einer Million multipliziert werden. Dies bedeutet, dass, wenn Sie Werte von MqlCalendarValue mithilfe der Funktionen CalendarValueById, CalendarValueHistoryByEvent, CalendarValueHistory, CalendarValueLastByEvent und CalendarValueLast abrufen, sollten Sie überprüfen, ob die Feldwerte gleich LONG_MIN sind; wenn in einem Feld ein Wert angegeben ist, sollten Sie den Wert durch 1.000.000 dividieren, um den Wert zu erhalten. Eine andere Methode zum Abrufen der Werte besteht darin, die Werte mit den Funktionen der Struktur MqlCalendarValue zu überprüfen und abzurufen.

 

Beispiel:

//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Länder-Code von Japan (ISO 3166-1 Alpha-2)
   string japan_code="JP";
//--- Festlegen der Zeitgrenzen des Intervalls für die Ereignisse
   datetime date_from=D'01.01.2018';  // alle Ereignisse ab 2018
   datetime date_to=0;                // 0 bedeutet, alle bekannten Ereignisse, einschließlich der noch nicht aufgetretenen
//--- Abrufen des Arrays mit den Ereignissen von Japan
   MqlCalendarValue values[];
   int values_count=CalendarValueHistory(values,date_from,date_to,japan_code);
//--- Durchlaufen aller erkannten Ereigniswerte
   if(values_count>0)
     {
      PrintFormat("Anzahl der Ereigniswerte für Japan: %d",values_count);
      //--- Löschen aller "leerer" Werte (actual_value==-9223372036854775808)       
      for(int i=values_count-1;i>=0;i--)
        {
         if(values[i].actual_value==-9223372036854775808)
            ArrayRemove(values,i,1);
        }
      PrintFormat("Anzahl der Ereigniswerte nach dem Löschen der Leerwerte: %d",ArraySize(values));
     }
   else
     {
      PrintFormat("Fehler beim Erhalt der Ereignisse für den Länder-Code %s, error %d",
                  japan_code,GetLastError());
      //--- Skript wurde vorzeitig beendet
      return;
     }
//--- Behalten von nicht mehr als 10 Werte im Array values[]
   if(ArraySize(values)>10)
     {
      PrintFormat("Reduzieren und Anzeigen der Liste auf 10 Werte");
      ArrayRemove(values,0,ArraySize(values)-10);
     }
   ArrayPrint(values);
 
//--- Anzeigen der Ereigniswertbeschreibung auf Basis von value_id
   for(int i=0;i<ArraySize(values);i++)
     {
      MqlCalendarValue value;
      CalendarValueById(values[i].id,value);
      PrintFormat("%d: value_id=%d value=%d impact=%s",
                  i,values[i].id,value.actual_value,EnumToString(ENUM_CALENDAR_EVENT_IMPACT(value.impact_type)));
     }
//---
  }
/*
  Ergebnis:
  Anzahl der Ereigniswerte für Japan: 1734
  Anzahl der Ereigniswerte nach dem Löschen der Leerwerte: 1017
  Reduzieren und Anzeigen der Liste auf 10 Werte
        [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
  Anzeigen der verkürzten Daten eines Ereigniswertes auf Basis von value_id
   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
*/

Siehe auch

CalendarValueHistoryByEvent, CalendarValueHistory, CalendarValueLastByEvent, CalendarValueLast