CalendarValueHistory

Retourne le tableau des valeurs pour tous les évènements dans un intervalle de temps spécifié avec la possibilité de trier par pays et/ou devise.

bool  CalendarValueHistory(
   MqlCalendarValue&  values[],              // tableau pour les descriptions des valeurs
   datetime           datetime_from,         // bordure gauche de l'intervalle de temps
   datetime           datetime_to=0          // bordure droite de l'intervalle de temps
   const string       country_code=NULL,     // nom du code du pays (ISO 3166-1 alpha-2)
   const string       currency=NULL          // nom du code de la devise du pays
   );

Paramètres

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

country_code=NULL

[in]  Nom du code du pays (ISO 3166-1 alpha-2)

currency=NULL

[in]  Nom du code de la devise du pays.

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.

Si le tableau events[] de taille fixe passé à la fonction n'est pas assez grand, l'erreur ERR_CALENDAR_MORE_DATA (5400) est générée.

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

Pour les filtres country_code et currency , les valeurs NULL et "" sont équivalentes et signifie l'absence de filtre.

Pour country_code, le champ code de la structure MqlCalendarCountry, par exemple "US", "RU" ou "EU", doit être utilisé.

Pour currency, le champ currency de la structure MqlCalendarCountry, par exemple "USD", "RUB" ou "EUR", doit être utilisé.

Les filtres sont ajoutés les uns aux autres, c'est à dire que le 'ET' logique est utilisé pour ne sélectionner que les valeurs des évènements remplissant les 2 conditions (pays et devise).

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 toutes les valeurs des évènements pour EU
   MqlCalendarValue values[];
//--- définit les limites de l'intervalle duquel l'évènement est pris
   datetime date_from=D'01.01.2018';  // prends tous les évènements depuis 2018
   datetime date_to=0;                // 0 signifie tous les évènements connus, incluant ceux qui ne se sont pas encore produits
//--- demandes l'historique des évènements pour EU depuis 2018
   if(CalendarValueHistory(values,date_from,date_to,EU_code))
     {
      PrintFormat("Valeurs reçues des évènements pour country_code=%s: %d",
                  EU_code,ArraySize(values));
      //--- réduit la taille du tableau pour une sortie dans le Journal
      ArrayResize(values,10);
//--- affiche les valeurs des évènements dans le Journal
      ArrayPrint(values);      
     }
   else
     {
      PrintFormat("Erreur ! Echec de l'obtention des évènements pour country_code=%s",EU_code);
      PrintFormat("Code d'erreur : %d",GetLastError());
     }
//---
  }
/*
  Résultat :
  Valeurs reçues des évènements pour=EU: 1384
        [id] [id_evenement]       [date_heure]         [période][révision]   [valeur_actuelle][valeur_précédente] [val_prec_révisée] [valeur_prévue] [type_impact] [réservé]
   [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   
*/ 

Voir aussi

CalendarCountries, CalendarEventByCountry, CalendarValueHistoryByEvent, CalendarEventById, CalendarValueById