Librerie: Calendario - pagina 8

 
AdrianR007 #:
Sto utilizzando il codice del vostro esempio, ma il valore corrente non viene aggiornato quando si verifica l'evento. Qualche suggerimento in merito?

Questo esempio è stato realizzato per dimostrare come funziona il calendario in Tester. Viene fornito con queste istruzioni.

Eseguirlo una volta in MT5-Terminal per salvare tutti i dati storici (~60 Mb). Dopodiché saranno disponibili nel Tester.

Purtroppo, continuate a fare affermazioni inarticolate, prendendomi il tempo per ipotizzare "cosa intendeva dire?".

 
fxsaber #:

Questo esempio è stato realizzato per dimostrare il funzionamento del calendario in Tester. Viene fornito con le seguenti istruzioni.

Purtroppo, continuate a fare affermazioni inarticolate, prendendomi il tempo per ipotizzare "cosa intendeva dire?".

Nell'istante in cui si verifica la notizia, il valore Corrente non viene aggiornato rispetto al valore atteso, quindi l'operazione non viene eseguita. Sto parlando dell'operazione in una notizia in tempo reale e non in un test. In modalità di test funziona molto bene.
 
AdrianR007 #:
Nell'istante in cui si verifica la notizia, il valore corrente non viene aggiornato rispetto al valore atteso, quindi l'operazione non viene eseguita. Sto parlando dell'operazione in una notizia in tempo reale e non in un test. In modalità di test funziona molto bene.

Forum sul trading, sui sistemi di trading automatizzati e sulla verifica delle strategie di trading.

Biblioteche: Calendario

BillionerClub, 2023.02.23 19:35

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


 
Enrique Dangeroux #:

Grazie Enrique. Forse hai un esempio per farlo?
 
AdrianR007 #:
Grazie Enrique. Forse hai un esempio per farlo?

Non ho tempo di dare lezioni di codifica di base. O leggi la documentazione o chiedi sul forum.

Una nota a margine. Se vuoi fare trading sulle notizie, il calendario MQL è inutile. Ci sono ritardi di secondi, minuti o ore.

 
AdrianR007 #:
Nell'istante in cui si verifica la notizia, il valore corrente non viene aggiornato rispetto al valore atteso, quindi l'operazione non viene eseguita. Sto parlando dell'operazione in una notizia in tempo reale e non in un test. In modalità di test funziona molto bene.

Non so cosa stiate eseguendo. Per quanto riguarda gli aggiornamenti dei dati del calendario, leggere la seguente discussione.


La libreria fornisce solo i dati disponibili nella scheda Calendario.

MetaTrader5 calendar updates - I'm looking to improve my news trading robot for MT5 platform calendar updates: Is it possible the same broker-by-broker
MetaTrader5 calendar updates - I'm looking to improve my news trading robot for MT5 platform calendar updates: Is it possible the same broker-by-broker
  • 2022.07.14
  • www.mql5.com
I would like to ask about mt5 platform calendar updates: is platform's calendar updated about actual values in real time. Is it possible  updating time is not the same broker-by-broker. Yes, i'm looking how to improve my news trading robot
 
fxsaber #:

Non so cosa si stia eseguendo. Per quanto riguarda gli aggiornamenti dei dati del calendario, leggere la seguente discussione.


La libreria fornisce solo i dati disponibili nella scheda Calendario.

Grazie mille. Ora mi è chiaro!!!....
 

L'unico modo per capire il calendario MT5 è confrontare i valori PRIMA/DOPO.

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

void OnStart()
{
  CALENDAR Calendar;
  
  if (Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, 0)) // Caricati assolutamente tutti gli eventi (storia + futuro) dal terminale MT5.
  {
    const string FileName = "Calendars\\" + AccountInfoString(ACCOUNT_SERVER) + "\\Calendar_" +
                            AccountInfoString(ACCOUNT_SERVER) + "_" + TimeToString(TimeCurrent(), TIME_DATE) + ".bin";
    
    Calendar.Save(FileName); // Salvato per un confronto futuro quando si sincronizzeranno USA/Europa.
  }
}

Ovviamente, nessuno lo farà.

 

Forum sul trading, sui sistemi di trading automatizzati e sulla verifica delle strategie di trading

Biblioteche: Calendario

fxsaber, 2023.01.07 21:31.

Sembra che dovremmo fare un correttore automatico delle date del calendario.

Sembra che il correttore del calendario corrisponda al server di trading.

#property script_show_inputs

input ulong inEventID = 840030006; // EventID
input string inName = ""; // Nome -> EventID (Nonfarm Payrolls -> 840030016)
input datetime inFrom = D'2020.01.01';
input bool inDST = true;

void OnStart()
{
  CALENDAR Calendar;
    
  if (inName == "")
  {
    Calendar.Set(inEventID);
    Calendar.FilterByTime(inFrom, TimeCurrent());
    
    Calendar.CorrectTime(); // Bypassare le peculiarità di MQL-calendario: https://www.mql5.com/ru/forum/444094/page14#comment_46213385
    
    if (inDST)
      Calendar.DST(); // Chiamata se il server commerciale è sincronizzato con l'ora europea.
  
    for (int i = Calendar.GetAmount() - 1; i >= 0; i--)
    {
      const EVENT Event = Calendar[i];    
      const datetime ChartNews = ChartNewsTime(Event.time); // https://www.mql5.com/ru/forum/357793/page5#comment_44225999
      
      if (Event.time != ChartNews)    
        Print("-" + (string)Event.EventID + ": " + TimeToString(ChartNews) + " != " + Event.ToString());
      else
        Print("+" + (string)Event.EventID + ": " + TimeToString(ChartNews) + " == " + Event.ToString());
    }
  }
  else // Ottenere l'ID evento per nome.
  {
    string Currencies[2];
    
    // Ottenere le valute del carattere corrente.
    Currencies[0] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE);
    Currencies[1] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT);
    
    if (Calendar.Set(Currencies, CALENDAR_IMPORTANCE_MODERATE, inFrom) && Calendar.FilterByName(inName))
      for (int i = Calendar.GetAmount() - 1; i >= 0; i--)
        Print((string)Calendar[i].EventID + ": " + Calendar[i].ToString());
  }
}


Risultato.

+840030016: 2023.04.07 15:30 == 2023.04.07 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 236 K | -8 K | 311 K | 326 K
+840030016: 2023.03.10 15:30 == 2023.03.10 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 311 K | -35 K | 517 K | 504 K
+840030016: 2023.02.03 15:30 == 2023.02.03 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 517 K | 16 K | 223 K | 260 K
+840030016: 2023.01.06 15:30 == 2023.01.06 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 223 K | 57 K | 263 K | 256 K
+840030016: 2022.12.02 15:30 == 2022.12.02 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | -30 K | 261 K | 284 K
+840030016: 2022.11.04 14:30 == 2022.11.04 14:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 261 K | -97 K | 263 K | 315 K
+840030016: 2022.10.07 15:30 == 2022.10.07 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | 33 K | 315 K | 
+840030016: 2022.09.02 15:30 == 2022.09.02 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 315 K | 156 K | 528 K | 526 K

Corrisponde al calendario web. Se qualcuno vede delle evidenti discrepanze, me lo faccia sapere.

Questo sembra essere il modo corretto di utilizzare il calendario per i backtest ora.

 
fxsaber #:

Sembra che si tratti di un correttore di calendario che corrisponde al server commerciale.


Risultato.

Corrisponde al calendario Web. Se qualcuno vede delle discrepanze evidenti, me lo faccia sapere.

Ora sembra che sia corretto utilizzare il calendario per i backtest.

Ma cosa succede se l'ora è quella di un altro paese? So che paesi diversi hanno date diverse per orari diversi.