//+------------------------------------------------------------------+
//| 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
*/
|