CalendarValueHistoryByEvent

Retourne le tableau des valeurs pour tous les évènements dans un intervalle de temps spécifié pour un identifiant d'évènement.

bool  CalendarValueHistoryByEvent(
   ulong              event_id,          // identifiant de l'évènement 
   MqlCalendarValue&  values[],          // tableau des descriptions des valeurs 
   datetime           datetime_from,     // bordure gauche de l'intervalle de temps
   datetime           datetime_to=0      // bordure droite de l'intervalle de temps
   );

Paramètres

event_id

[in]  Identifiant de l'évènement.

values[]

[out]  Tableau d'éléments de type MqlCalendarValue pour retourner les valeurs des évènements. Voir l'exemple de gestion des événements du calendrier.

datetime_from

[in]  Date initiale de l'intervalle de temps à partir duquel les évènements sont sélectionnés pour un identifiant donné, avec datetime_from < datetime_to.

datetime_to=0

[in]  Date de fin de l'intervalle de temps à partir duquel les évènements sont spécifiés pour un identifiant donné. Si datetime_to n'est pas donné (ou vaut 0), toutes les valeurs des évènements depuis la date datetime_from dans la base de données du Calendrier sont retournées (incluant les valeurs des évènements futurs).

Valeur de Retour

Retourne true en cas de succès, sinon retourne false. Pour obtenir des informations sur une erreur, appelez la fonction GetLastError(). Erreurs possibles :

  • 4001 — ERR_INTERNAL_ERROR  (erreur générale d'exécution),
  • 4004 — ERR_NOT_ENOUGH_MEMORY (pas assez de mémoire pour exécuter une requête),
  • 5401 — ERR_CALENDAR_TIMEOUT (limite de temps de traitement de la requête atteinte),
  • 5400 — ERR_CALENDAR_MORE_DATA (la taille du tableau est insuffisante pour recevoir les descriptions de toutes les valeurs, toutes les descriptions ne seront pas retournées).

Note

Toutes les fonctions permettant de travailler avec le calendrier économique utilisent l’heure du serveur de trading(TimeTradeServer). Cela signifie que l'heure dans la structure MqlCalendarValue et l'heure donnée dans les fonctions CalendarValueHistoryByEvent/CalendarValueHistory sont définies dans le fuseau horaire du serveur de trading, et non pas selon l'heure locale de l'utilisateur.

La structure MqlCalendarValue fournit des méthodes pour vérifier et définir les valeurs des champs actual_value, forecast_value, prev_value et revised_prev_value. Si aucune valeur n'est spécifiée, le champ stocke LONG_MIN (-9223372036854775808).

Veuillez noter que les valeurs stockées dans ces champs sont multipliées par un million. Cela signifie que lorsque vous recevez des valeurs dans MqlCalendarValue à l'aide des fonctions CalendarValueById, CalendarValueHistoryByEvent, CalendarValueHistory, CalendarValueLastByEvent et CalendarValueLast, vous devez vérifier si les valeurs des champs sont égales à LONG_MIN ; si une valeur est spécifiée dans un champ, vous devez diviser la valeur par 1 000 000 afin d'obtenir la valeur. Une autre méthode pour obtenir les valeurs consiste à vérifier et à obtenir des valeurs en utilisant les fonctions de la structure MqlCalendarValue.

Exemple :

//+------------------------------------------------------------------+
//| Fonction de lancement du programme                               |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- code du pays pour EU (ISO 3166-1 Alpha-2)
   string EU_code="EU";
//--- récupère les évènements pour EU
   MqlCalendarEvent events[];
   int events_count=CalendarEventByCountry(EU_code,events);
//--- affiche les évènements de EU dans le Journal
   if(events_count>0)
     {
      PrintFormat("Evènements pour EU : %d",events_count);
      //--- réduit la liste des évènements, 10 évènements sont suffisants pour l'analyse
      ArrayResize(events,10);
      ArrayPrint(events);
     }
//--- l'évènement "ECB Interest Rate Decision" a l'event_id=999010007
   ulong event_id=events[6].id;        // l'identifiant de l'évènement peut changer dans le Calendrier, donc vérifiez-le
   string event_name=events[6].name;   // nom de l'évènement du Calendrier
   PrintFormat("Valeurs obtenues pour event_name=%s event_id=%d",event_name,event_id);
//--- récupère toutes les valeurs de l'évènement "ECB Interest Rate Decision"
   MqlCalendarValue values[];
//--- définit les limites de l'intervalle duquel l'évènement est pris
   datetime date_from=0;           // prends tous les évènements depuis le début de l'historique disponible
   datetime date_to=D'01.01.2016'; // ne prends pas les évènements antérieurs à 2016
   if(CalendarValueHistoryByEvent(event_id,values,date_from,date_to))
     {
      PrintFormat("Valeurs reçues pour %s: %d",
                  event_name,ArraySize(values));
      //--- réduit la liste des valeurs, 10 valeurs sont suffisantes pour l'analyse
      ArrayResize(values,10);
      ArrayPrint(values);
     }
   else
     {
      PrintFormat("Erreur ! Echec de l'obtention des valeurs pour event_id=%d",event_id);
      PrintFormat("Code d'erreur : %d",GetLastError());
     }
  }
//---
/*
  Résultat :
  Evènements pour EU : 56
            [id] [type] [secteur][fréquence] [time_mode] [country_id] [unité][importance] [multiplicateur] [décimales]                                     [url_source]                                 [code_évènement]                                [nom] [réservé]
   [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"        
  Valeurs obtenues pour event_name=ECB Interest Rate Decision event_id=999010007
  Valeurs reçues pour ECB Interest Rate Decision: 102
       [id] [id_évènement]          [date_heure]      [periode][révision] [valeur_actuelle][valeur_précédente] [val_prec_révisée]     [valeur_prévue] [type_impact] [réservé]
   [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
*/

 

Voir aussi

CalendarCountries, CalendarEventByCountry, CalendarValueHistory, CalendarEventById, CalendarValueById