CalendarValueHistory

Ottiene l'array di valori per tutti gli eventi in un intervallo di tempo specificato con la possibilità di ordinare per Paese e/o valuta.

bool  CalendarValueById(
   MqlCalendarValue&  values[],              // array per le descrizioni dei valori 
   datetime           datetime_from,         // bordo sinistro dell' intervallo di tempo
   datetime           datetime_to=0          // bordo destro dell' intervallo di tempo
   const string       country_code=NULL,     // codice nome Paese (ISO 3166-1 alpha-2)
   const string       currency=NULL          // codice nome della valuta del Paese 
   );

Parametri

values[]

[out] MqlCalendarValue: è il tipo di array per ricevere i valori degli eventi

datetime_from

[in]  La data iniziale di un intervallo temporale viene selezionata da un ID specificato, mentre datetime_from < datetime_to.

datetime_to=0

[in]  La data di fine di un intervallo di tempo viene selezionata da un ID specificato. Se datetime_to non è impostato (o è 0), tutti i valori degli eventi che iniziano da quelli specificati dalla data datetime_from nel database del calendario vengono restituiti (compresi i valori degli eventi futuri).

country_code=NULL

[in] Nome codice Paese (ISO 3166-1 alpha-2)

currency=NULL

[in] Nome del codice valuta del Paese.

Valore di ritorno

Restituisce true se ha successo, altrimenti - false. Per ottenere informazioni su un errore, chiamare la funzione GetLastError(). Possibili errori:

  • 4001 – ERR_INTERNAL_ERROR  (errore di runtime generale),
  • 4004 – ERR_NOT_ENOUGH_MEMORY (memoria insufficiente per l'esecuzione di una richiesta),
  • 5401 – ERR_CALENDAR_TIMEOUT (tempo limite della richiesta ecceduto),
  • 5400 – ERR_CALENDAR_MORE_DATA (la dimensione dell'array è insufficiente per la ricezione delle descrizioni di tutti i valori, solo quelli che sono riusciti a rientrare sono stati ricevuti),

 

Nota

Tutte le funzioni per lavorare con il calendario economico utilizzano l'ora del trade server (TimeTradeServer). Ciò significa che il tempo nella struttura MqlCalendarValue e gli input di tempo nelle funzioni CalendarValueHistoryByEvent/CalendarValueHistory sono impostate nel fuso orario del trade server, piuttosto che nell'ora locale dell' utente.

Se l'array events[] di lunghezza fissa è stato passato alla funzione e non c'era spazio sufficiente per salvare l'intero risultato, l'errore ERR_CALENDAR_MORE_DATA (5400) viene attivato.

Se datetime_to non è impostato (o è 0), tutti i valori degli eventi che iniziano da quelli specificati dalla data datetime_from nel database del calendario vengono restituiti (compresi i valori degli eventi futuri).

Per i filtri country_code e currency, i valori NULL e "" sono equivalenti e significano l'assenza del filtro.

Per country_code, deve essere utilizzato il campo code della struttura MqlCalendarCountry, ad esempio "US", "RU" o "EU".

Per currency, deve essere utilizzato il campo currency della struttura MqlCalendarCountry, ad esempio "USD", "RUB" o "EUR".

I filtri sono applicati per congiunzione, es. l' 'AND' logico viene utilizzato per selezionare solo i valori degli eventi per cui vengono soddisfatte contemporaneamente entrambe le condizioni (Paese e valuta).

Se un valore di un evento non ha nessuno dei campi specificati di seguito

struct MqlCalendarValue
  {
   ...
   long              actual_value;              // valore attuale dell'evento
   long              prev_value;                // valore precedente dell'evento
   long              revised_prev_value;        // valore rivisto dell'evento precedente
   long              forecast_value;            // valore di previsione dell'evento
   ...
  };

allora il valore del campo mancante viene restituito come INT64_MIN (-9223372036854775808). Vedere il valore campo revised_prev_value nell'esempio seguente.

Esempio:

//+------------------------------------------------------------------+
//| Funzione Start del programma Script                              |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- codice Paese per EU (ISO 3166-1 Alpha-2)
   string EU_code="EU";
//--- ottiene tutti i valori degli eventi EU
   MqlCalendarValue values[];
//--- imposta i limiti dell'intervallo da cui prendiamo gli eventi
   datetime date_from=D'01.01.2018';  // prende tutti gli eventi dal 2018
   datetime date_to=0;                // 0 indica tutti gli eventi noti, inclusi quelli che non si sono ancora verificati 
//--- richiede la cronologia degli eventi dell'UE dall'anno 2018 
   if(CalendarValueHistory(values,date_from,date_to,EU_code))
    {
      PrintFormat("Valori evento ricevuti per country_code=%s: %d",
                  EU_code,ArraySize(values));
      //--- riduce la grandezza dell'array per l'output sul Journal
      ArrayResize(values,10);
//--- visualizza i valori degli eventi nel Journal
      ArrayPrint(values);      
     }
   else
    {
      PrintFormat("Errore! Impossibile ricevere eventi per country_code=%s",EU_code);
      PrintFormat("Codice errore: %d",GetLastError());
     }
//---
  }
/*
  Risultato:
  Valori evento ricevuti per 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   
*/ 

Guarda anche

CalendarCountries, CalendarEventByCountry, CalendarValueHistoryByEvent, CalendarEventById, CalendarValueById