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