CalendarValueById

Retourne la description de la valeur d'un évènement par son identifiant.

bool  CalendarValueById(
   ulong                value_id,     // identifiant de la valeur de l'évènement
   MqlCalendarValue&    value         // variable pour retourner la valeur de l'évènement
   );

Paramètres

value_id

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

value

[out]  Variable de type MqlCalendarValue pour retourner la description de l'évènement. Voir l'exemple de gestion des événements du calendrier.

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),
  • 5402 — ERR_CALENDAR_NO_DATA (pays non trouvé),
  • 5401 — ERR_CALENDAR_TIMEOUT (limite de temps de traitement de la requête atteinte).

Note

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 le Japon (ISO 3166-1 Alpha-2)
   string japan_code="JP";
//--- 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
//--- récupère toutes les valeurs des évènements du Japon
   MqlCalendarValue values[];
   int values_count=CalendarValueHistory(values,date_from,date_to,japan_code);
//--- déplacement parmi les valeurs détectées
   if(values_count>0)
     {
      PrintFormat("Nombre de valeurs pour les évènements du Japon : %d",values_count);
      //--- suppression de toutes les valeurs "vides" (actual_value==-9223372036854775808)       
      for(int i=values_count-1;i>=0;i--)
        {
         if(values[i].actual_value==-9223372036854775808)
            ArrayRemove(values,i,1);
        }
      PrintFormat("Nombre de valeurs après la suppression des valeurs vides : %d",ArraySize(values));
     }
   else
     {
      PrintFormat("Echec de l'obtention des évènements pour le code de pays %s, erreur %d",
                  japan_code,GetLastError());
      //--- fin prématurée du script
      return;
     }
//--- ne conserve que 10 valeurs dans le tableau values[]
   if(ArraySize(values)>10)
     {
      PrintFormat("Réduit la liste des valeurs à 10 et les affiche");
      ArrayRemove(values,0,ArraySize(values)-10);
     }
   ArrayPrint(values);
 
//--- affichons maintenant comment récupérer la description de la valeur d'un évènement à partir du value_id connu
   for(int i=0;i<ArraySize(values);i++)
     {
      MqlCalendarValue value;
      CalendarValueById(values[i].id,value);
      PrintFormat("%d : value_id=%d valeur=%d impact=%s",
                  i,values[i].id,value.actual_value,EnumToString(ENUM_CALENDAR_EVENT_IMPACT(value.impact_type)));
     }
//---
  }
/*
  Résultat :
  Nombre de valeurs pour les évènements du Japon : 1734
  Nombre de valeurs après la suppression des valeurs vides : 1017
  Réduit la liste des valeurs à 10 et les affiche
        [id] [id_evenement]          [date_heure]      [période][révision] [valeur_actuelle][valeur_prec] [val_prec_révisée] [valeur_prévue] [type_impact] [réservé]
   [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
  Affiche les données succintes des valeurs des évènements à partir de value_id
   0 : value_id=56500 valeur=900000 impact=CALENDAR_IMPACT_POSITIVE
   1 : value_id=56501 valeur=700000 impact=CALENDAR_IMPACT_NA
   2 : value_id=56502 valeur=1100000 impact=CALENDAR_IMPACT_POSITIVE
   3 : value_id=56544 valeur=2300000 impact=CALENDAR_IMPACT_NEGATIVE
   4 : value_id=56556 valeur=1630000 impact=CALENDAR_IMPACT_POSITIVE
   5 : value_id=55887 valeur=400000 impact=CALENDAR_IMPACT_NEGATIVE
   6 : value_id=55888 valeur=-1800000 impact=CALENDAR_IMPACT_POSITIVE
   7 : value_id=55889 valeur=200000 impact=CALENDAR_IMPACT_NEGATIVE
   8 : value_id=55948 valeur=1400000 impact=CALENDAR_IMPACT_POSITIVE
   9 : value_id=55949 valeur=-1000000 impact=CALENDAR_IMPACT_NEGATIVE
*/

Voir aussi

CalendarValueHistoryByEvent, CalendarValueHistory, CalendarValueLastByEvent, CalendarValueLast