CalendarValueById

Ottiene una descrizione del valore dell'evento tramite il suo ID.

bool  CalendarValueById(
   ulong                value_id,     // ID valore evento
   MqlCalendarValue&    value         // variabile per la ricezione di un valore evento
   );

Parametri

value_id

[in] ID valore evento.

value

[out] MqlCalendarValue: è il tipo di variabile per ricevere una descrizione dell'evento.

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),
  • 5402 – ERR_CALENDAR_NO_DATA (Paese non trovato),
  • 5401 – ERR_CALENDAR_TIMEOUT (tempo limite della richiesta ecceduto).

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 il Giappone (ISO 3166-1 Alpha-2)
   string japan_code="JP";
//--- 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    
//--- ottiene l'arra dei valori degli eventi in Giappone
   MqlCalendarValue values[];
   int values_count=CalendarValueHistory(values,date_from,date_to,japan_code);
//--- sposta i valori degli eventi rilevati
   if(values_count>0)
    {
      PrintFormat("Numero di valori per gli eventi in Giappone: %d",values_count);
      //--- elimina tutti i valori "vuoti" (actual_value==-9223372036854775808)       
      for(int i=values_count-1;i>=0;i--)
        {
         if(values[i].actual_value==-9223372036854775808)
            ArrayRemove(values,i,1);
        }
      PrintFormat("Numero di valori dopo aver eliminato quelli vuoti: %d",ArraySize(values));
     }
   else
    {
      PrintFormat("Impossibile ricevere eventi per il codice Paese %s, errore %d",
                  japan_code,GetLastError());
//--- completamento precoce script
      return;
     }
//--- lascia non più di 10 valori nell' array values[]
   if(ArraySize(values)>10)
    {
      PrintFormat("Riduce l'elenco dei valori a 10 e li visualizza");
      ArrayRemove(values,0,ArraySize(values)-10);
     }
   ArrayPrint(values);
 
//--- ora mostriamo come ottenere una descrizione del valore di un evento in base al valore 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)));
     }
//---
  }
/*
  Risultato:
  Numero di valori per gli eventi in Giappone: 1734
  Numero di valori dopo aver cancellato quelli vuoti: 1017
  Riduce l'elenco dei valori a 10 e li visualizza
        [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
  Mostra dati brevi sui valori degli eventi in base a 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
*/

Guarda anche

CalendarValueHistoryByEvent, CalendarValueHistory, CalendarValueLastByEvent, CalendarValueLast