Librerías: Calendario - página 8

 
AdrianR007 #:
Estoy utilizando el código de tu ejemplo pero el valor actual no se actualiza cuando se produce el evento. ¿Alguna sugerencia al respecto?

Este ejemplo fue hecho para demostrar como funciona el calendario en Tester. Viene con esta instrucción.

Ejecútalo una vez en MT5-Terminal para guardar todos los datos históricos (~60 Mb). Después estarán disponibles en el Tester.

Desafortunadamente, usted sigue haciendo declaraciones inarticuladas, tomando mi tiempo para hacer hipótesis "¿qué quiso decir?".

 
fxsaber #:

Este ejemplo se hizo para demostrar cómo funciona el calendario en Tester. Viene con las siguientes instrucciones.

Lamentablemente, sigues haciendo afirmaciones inarticuladas, lo que me lleva a plantearme la hipótesis de "¿qué habrá querido decir con eso?".

En el instante en que se produce la noticia, el valor Actual no se está actualizando con respecto al valor esperado, por lo que la operación no se ejecuta. Estoy hablando de la operación en una noticia en tiempo real y no en un test. En modo test funciona muy bien.
 
AdrianR007 #:
En el instante en que se produce la noticia, el valor Actual no se está actualizando respecto al valor esperado, por lo que la operación no se ejecuta. Estoy hablando de la operación en una noticia en tiempo real y no en un test. En modo test funciona muy bien.

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading.

Bibliotecas: Calendario

BillionerClub, 2023.02.23 19:35

no es auto refrescante biblioteca, uso id, de calendario, para obtener datos frescos de mql5.


 
Enrique Dangeroux #:

Gracias Enrique. ¿Tal vez tengas un ejemplo para hacer esto?
 
AdrianR007 #:
Gracias Enrique. ¿Tal vez usted tiene un ejemplo para hacer esto?

No tengo tiempo para dar lecciones básicas de codificación. Lee la documentación o pregunta en los foros.

En una nota al margen. Si desea negociar las noticias, el calendario MQL es inútil. Hay retrasos de segundos, minutos e incluso horas.

 
AdrianR007 #:
En el instante en que se produce la noticia, el valor Actual no se está actualizando respecto al valor esperado, por lo que la operación no se ejecuta. Estoy hablando de la operación en una noticia en tiempo real y no en un test. En modo test funciona muy bien.

No sé qué es lo que estás ejecutando. Respecto a la actualización de los datos del calendario, lee la siguiente discusión.


La librería sólo proporciona los datos que están disponibles en la pestaña 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 #:

No sé lo que está ejecutando. En cuanto a las actualizaciones de datos de calendario, lea la siguiente discusión.


La biblioteca sólo proporciona los datos que están disponibles en la pestaña Calendario.

Muchas gracias. Ya lo tengo claro!!!....
 

La única manera de entender el calendario MT5 es comparar los valores ANTES/DESPUÉS.

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

void OnStart()
{
  CALENDAR Calendar;
  
  if (Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, 0)) // Cargado absolutamente todos los eventos (historia + futuro) de MT5-Terminal.
  {
    const string FileName = "Calendars\\" + AccountInfoString(ACCOUNT_SERVER) + "\\Calendar_" +
                            AccountInfoString(ACCOUNT_SERVER) + "_" + TimeToString(TimeCurrent(), TIME_DATE) + ".bin";
    
    Calendar.Save(FileName); // Guardado para futuras comparaciones cuando USA/Europa se sincronicen.
  }
}

Obviamente, nadie va a hacer eso.

 

Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading

Bibliotecas: Calendario

fxsaber, 2023.01.07 21:31.

Parece que deberíamos hacer un corrector automático en las fechas del calendario.

Parece que se consigue un corrector de Calendario que coincide con el servidor de trading.

#property script_show_inputs

input ulong inEventID = 840030006; // EventID
input string inName = ""; // Name -> 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(); // Bypass MQL-calendar peculiaridades: https://www.mql5.com/ru/forum/444094/page14#comment_46213385
    
    if (inDST)
      Calendar.DST(); // Llamar si el servidor de comercio está sincronizado con la hora 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 // Obtener EventID por nombre.
  {
    string Currencies[2];
    
    // Obtener las monedas del carácter actual.
    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());
  }
}


Resultado.

+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

Coincide con el calendario web. Si alguien ve alguna discrepancia evidente, que me avise.

Esa parece ser la forma correcta de utilizar el calendario para backtests ahora.

 
fxsaber #:

Parece que resultó ser un corrector de Calendario que coincide con el servidor de comercio.


Resultado.

Coincide con el Calendario Web. Si alguien ve alguna discrepancia obvia, que me avise.

Ahora parece que es correcto utilizar el calendario para backtests.

Pero ¿qué pasa si es la hora de otro país? Sé que diferentes países tienen diferentes fechas para diferentes horas.