CalendarValueHistoryByEvent

Ottiene l'array di valori per tutti gli eventi in un intervallo di tempo specificato da un ID evento.

bool  CalendarValueById(
   ulong              event_id,          // ID evento 
   MqlCalendarValue&  values[],          // array per le descrizioni dei valori 
   datetime           datetime_from,     // bordo sinistro di un intervallo di tempo
   datetime           datetime_to=0      // bordo destro di un intervallo di tempo
   );

Parametri

event_id

[in]  Event ID.

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).

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),

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.

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.

Esempio:

//+------------------------------------------------------------------+
//| Funzione Start del programma Script                              |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- codice Paese per EU (ISO 3166-1 Alpha-2)
   string EU_code="EU";
//--- ottieni eventi UE
   MqlCalendarEvent events[];
   int events_count=CalendarEventByCountry(EU_code,events);
//--- visualizza gli eventi UE nel Journal
   if(events_count>0)
    {
      PrintFormat("eventi EU: %d",events_count);
      //--- riduce la lista degli eventi, 10 eventi sono sufficienti per l'analisi
      ArrayResize(events,10);
      ArrayPrint(events);
     }
//--- vedi che l'evento "Decisione tasso di interesse della BCE" abbia event_id = 999010007
   ulong event_id=events[6].id;        // l'ID dell'evento può cambiare nel Calendario, quindi assicurati di verificare
   string event_name=events[6].name;   // nome di un evento del calendario
   PrintFormat("Ottiene valori per event_name =%s event_id=%d",event_name,event_id);
//--- ottiene tutti i valori dell'evento "Decisione tasso di interesse della BCE"
   MqlCalendarValue values[];
//--- imposta i limiti dell'intervallo da cui prendiamo gli eventi
   datetime date_from=0;           // prende tutti gli eventi dall'inizio della cronologia disponibile
   datetime date_to=D'01.01.2016'; // prendere eventi non più vecchi del 2016
   if(CalendarValueHistoryByEvent(event_id,values,date_from,date_to))
    {
      PrintFormat("Valori ricevuti per %s: %d",
                  event_name,ArraySize(values));
      //--- riduci la lista valori, 10 eventi sono sufficienti per l'analisi
      ArrayResize(values,10);
      ArrayPrint(values);
     }
   else
    {
      PrintFormat("Errore! Impossibile ottenere valori per event_id=% d ", Event_id);
      PrintFormat("Codice errore: %d",GetLastError());
     }
  }
//---
/*
  Risultato:
  eventi EU: 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"        
  Ottieni valori per event_name=Decisione tasso di interesse ECB event_id = 999010007
  Valori degli eventi della Decisione sui tassi di interesse della BCE ricevuti: 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
*/

 

Guarda anche

CalendarCountries, CalendarEventByCountry, CalendarValueHistory, CalendarEventById, CalendarValueById