CalendarValueHistory

Abrufen des Arrays der Werte für alle Ereignisse in einem bestimmten Zeitbereich mit der Möglichkeit, nach Land und/oder Währung zu sortieren.

bool  CalendarValueHistory(
   MqlCalendarValue&  values[],              // Array der Wertbeschreibungen
   datetime           datetime_from,         // Anfang des Zeitraums
   datetime           datetime_to=0          // Ende des Zeitraums
   const string       country_code=NULL,     // Länder-Code (ISO 3166-1 alpha-2)
   const string       currency=NULL          // Währungs-Code des Landes
   );

Parameter

values[]

[out]   Variable vom Typ MqlCalendarValue für die Übernahme der Ereigniswerte.

datetime_from

[in]  Anfangszeitpunkt des Zeitraums der Ereignisse für die angegebene ID, während datetime_from < datetime_to.

datetime_to=0

[in]  Endzeitpunkt des Zeitraums der Ereignisse für die angegebene ID. Wenn datetime_to nicht (oder auf 0) gesetzt wurde, werden alle Ereignisse ab dem angegebenen Zeitpunkt datetime_from aus der Kalenderdatenbank (inklusive der zukünftigen) zurückgegeben.

country_code=NULL

[in]  Code-Name des Landes (ISO 3166-1 alpha-2)

currency=NULL

[in]  Währungs-Code des Landes.

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),
  • 4004 – ERR_NOT_ENOUGH_MEMORY (nicht genügend Speicherplatz für die Ausführung der Anforderung),
  • 5401 - ERR_CALENDAR_TIMEOUT (Zeitlimit für Anfragen überschritten),
  • 5400 - ERR_CALENDAR_MORE_DATA (Array ist zu klein, um die Beschreibungen aller Werte zu übernehmen, es wurden nur diejenigen übernommen, die eingetragen werden konnten).

 

Hinweis

Wenn der Array events[] mit einer unveränderlichen Größe der Funktion übergeben wurde und die Größe für alle Ereignisse zu klein ist, wird der Fehler ERR_CALENDAR_MORE_DATA (5400) ausgeworfen.

Wenn datetime_to nicht (oder auf 0) gesetzt wurde, werden alle Ereignisse ab dem angegebenen Zeitpunkt datetime_from aus der Kalenderdatenbank (inklusive der zukünftigen) zurückgegeben.

Zu dem Länder-Code country_code und der Währung : NULL und "" sind äquivalent und bedeuten, es wird nichts heraus gefiltert.

Für country_code, dem Feld des Codes in der Struktur MqlCalendarCountry, sollten zum Beispiel "US", "RU" oder "EU" verwendet werden.

Für currency, dem Feld der Währungen in der Struktur MqlCalendarCountry, sollten zum Beispiel "USD", "RUB" oder "EUR" verwendet werden.

Die Filter werden über ein logisches 'UND' verbunden und werden verwendet, um nur die Werte auszuwählen, für die zugleich beide Bedingungen (Land und Währung) zutreffen.

Wenn ein Ereigniswert keines der unten angeführten Felder aufweist

struct MqlCalendarValue
  {
   ...
   long              actual_value;              // aktueller Ereigniswert
   long              prev_value;                // vorheriger Ereigniswert
   long              revised_prev_value;        // revidierter, vorheriger Ereigniswert
   long              forecast_value;            // prognostizierter Ereigniswert
   ...
  };

dann wird im fehlenden Feld der Wert von INT64_MIN (-9223372036854775808) zurückgegeben. Siehe das Feld revised_prev_value im Beispiel unten.

Beispiel:

//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Länder-Code der EU (ISO 3166-1 Alpha-2)
   string EU_code="EU";
//--- Abrufen aller Ereigniswerte der EU
   MqlCalendarValue values[];
//--- 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 der historischen Ereignisse seit dem Jahr 2018 für die EU
   if(CalendarValueHistory(values,date_from,date_to,EU_code))
     {
      PrintFormat("Erhaltene Ereigniswerte für country_code=%s: %d",
                  EU_code,ArraySize(values));
      //--- Verkleinern der Arraygröße für die Ausgabe im Journal
      ArrayResize(values,10);
//--- Anzeigen der Ereigniswerte im Journal
      ArrayPrint(values);      
     }
   else
     {
      PrintFormat("Fehler! Fehler beim Erhalt der Ereignisse für country_code=%s",EU_code);
      PrintFormat("Fehlernummer: %d",GetLastError());
     }
//---
  }
/*
  Ergebnis:
  Erhaltene Ereigniswerte für country_code=EU: 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   
*/ 

Siehe auch

CalendarCountries, CalendarEventByCountry, CalendarValueHistoryByEvent, CalendarEventById, CalendarValueById