Librerie: Calendario - pagina 7

 

Grazie fxsaber,

Lo script è ottimo. Sono nuovo della MT5 e sto usando il tuo script del calendario. Per i dati storici, come posso aggiungere il periodo a cui appartengono i dati economici? (ad esempio gennaio per i dati di rilascio appartiene a gennaio)?


Grazie e cordiali saluti,

Edwin

 
eapricorn periodo a cui appartengono i dati economici? (ad es. gennaio per i dati di rilascio appartiene a gennaio)?
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/it/code/32430

void OnStart()
{
  CALENDAR Calendar;
  
  Calendar.Set(NULL, CALENDAR_IMPORTANCE_HIGH, D'2023.01.01', D'2023.02.01');
  
  Print(Calendar.ToString());
}
 
fxsaber # :

Ciao fxsaber,


Grazie per il tuo messaggio. Mi dispiace di aver interpretato la mia domanda in modo sbagliato. In realtà mi riferisco alla "finestra del calendario" in MT5 che normalmente ha il "Jan" nella colonna del periodo che indica che i dati economici che escono oggi "2 Feb 2023" si riferiscono effettivamente ai dati economici di gennaio (come da immagine allegata). Ma dallo script, vedo che abbiamo solo la data di pubblicazione dei dati, mentre il "Periodo" non è specificato. (come da immagine allegata).

Ho provato a cercare MqlCalendarValue e a usare Value.period per la data del "Periodo", ma il risultato è molto strano, essendo 1970.01.01. (come in allegato).

Spero solo di sapere se il periodo può essere disponibile e come aggiungerlo al vostro script. Grazie.

File:
Calendar.jpg  298 kb
MT5_calendar.jpg  414 kb
MetaEditor.jpg  465 kb
 
eapricorn #:

In realtà mi riferisco alla 'finestra del calendario' in MT5 che normalmente ha 'Jan' nella colonna del periodo che indica che i dati economici che escono oggi '2 Feb 2023' si riferiscono in realtà ai dati economici di gennaio (come da immagine allegata).

#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/it/code/32430

struct CALENDAR_EVENT : public EVENT
{
  string ToString() const
  {
    struct CALENDAR_VALUE : public MqlCalendarValue
    {
      string ToString( void ) const
      {
        static const string Month[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
        static const string Quarter[] = {"Q1", "Q2", "Q3", "Q4"};
        
        MqlDateTime Time;
    
        return((this.period && ::TimeToStruct(this.period, Time) ? (this.revision ? Quarter[(Time.mon - 1) / 3]
                                                                                  : Month[Time.mon - 1] + ((Time.day != 1) ? " " + (string)Time.day : NULL))
                                                                 : NULL));
      }
    } Value;

    return(this.EVENT::ToString() + (::CalendarValueById(this.id, Value) ? Value.ToString() : NULL));
  }
};

void OnStart()
{  
  CALENDAR Calendar;
  
  Calendar.Set();
  
  const int Size = Calendar.GetAmount();
  
  for (int i = 0; i < Size; i++)
  {
    const CALENDAR_EVENT Event = Calendar[i];
    
    Print(Event.ToString());
  }
}


2023.02.02 16:15 GBP 3 BoE Governor Bailey Speech (boe-governor-bailey-speech), United Kingdom (GB) |  |  |  |  
2023.02.02 17:15 EUR 3 ECB President Lagarde Speech (ecb-president-lagarde-speech), European Union (EU) |  |  |  |  
2023.02.02 20:30 EUR 3 ECB President Lagarde Speech (ecb-president-lagarde-speech), European Union (EU) |  |  |  |  
2023.02.03 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) |  | 16 K | 223 K |  Jan
2023.02.03 17:00 USD 3 ISM Non-Manufacturing PMI (ism-non-manufacturing-pmi), United States (US) |  | 53 | 49.6 |  Jan
2023.02.06 12:00 EUR 3 Retail Sales m/m (retail-sales-mm), European Union (EU) |  | 0.3% | 0.8% |  Dec
2023.02.06 17:00 CAD 3 Ivey PMI (ivey-pmi), Canada (CA) |  | 55.2 | 33.4 |  Jan
2023.02.07 05:30 AUD 3 RBA Interest Rate Decision (rba-interest-rate-decision), Australia (AU) |  |  | 3.1% |  
2023.02.07 19:30 CAD 3 BoC Governor Macklem Speech (boc-governor-macklem-speech), Canada (CA) |  |  |  |  
2023.02.08 06:30 INR 3 RBI Interest Rate Decision (rbi-interest-rate-decision), India (IN) |  |  | 6.25% |  
2023.02.08 17:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) |  | -0.012 M | 4.140 M |  Feb 3
2023.02.09 AllDay EUR 3 EU Leaders Summit (eu-leaders-summit), European Union (EU) |  |  |  |  
2023.02.09 10:30 SEK 3 Riksbank Interest Rate Decision (riksbank-interest-rate-decision), Sweden (SE) |  |  | 2.5% |  
 

Perché il valore della notizia attuale non viene generato istantaneamente? Il vostro esempio utilizza il metodo (Event.Actual!= LONG_MIN) && (Event.Forecast!= LONG_MIN), ma i valori non vengono accettati.

Cosa devo fare affinché in un test reale accetti questo valore esatto e la logica del tuo esempio venga eseguita?

Grazie

 
AdrianR007 LONG_MIN) && (Event.Forecast!= LONG_MIN), ma i valori non vengono accettati

Cosa devo fare per far sì che accetti questo valore in un test reale e che la logica del vostro esempio venga eseguita?

Non capisco il contesto della conversazione.

 
Il valore attuale della notizia non viene aggiornato, pertanto il codice (Event.Actual!= LONG_MIN) && (Event.Forecast!= LONG_MIN) non funziona. Esiste un altro modo per leggere l'evento nel momento in cui si verifica?
 
AdrianR007 LONG_MIN) && (Event.Forecast!= LONG_MIN) non funziona. Esiste un altro modo per leggere l'evento nel momento in cui si verifica?

Siete troppo concisi per capire chiaramente cosa intendete. Fornire un codice conciso che possa essere eseguito per vedere il problema di cui si vuole parlare.

 
fxsaber #:

Siete troppo concisi per capire senza ambiguità cosa intendete. Fornite del codice conciso che possa essere eseguito per vedere il problema di cui volete parlare.

Sto utilizzando il codice del tuo esempio, ma il valore corrente non viene aggiornato quando si verifica l'evento. Qualche suggerimento in merito?
Grazie.
File:
Capture.PNG  124 kb
 
AdrianR007 #:
Sto utilizzando il codice del tuo esempio, ma il valore corrente non viene aggiornato quando si verifica l'evento. Qualche suggerimento in merito?
Grazie

non è una libreria che si aggiorna da sola, usa l'id, dal calendario, per ottenere dati freschi da mql5.