Bibliothèque: Calendrier - page 8

 
AdrianR007 #:
J'utilise le code de votre exemple mais la valeur actuelle n'est pas mise à jour lorsque l'événement se produit. Avez-vous des suggestions à ce sujet ?

Cet exemple a été créé pour démontrer le fonctionnement du calendrier dans Tester. Il est accompagné des instructions suivantes.

Exécutez-le une fois dans MT5-Terminal pour sauvegarder toutes les données historiques (~60 Mb). Elles seront ensuite disponibles dans le Testeur.

Malheureusement, vous continuez à faire des déclarations inarticulées, ce qui me fait perdre mon temps à émettre des hypothèses sur ce qu'il a voulu dire.

 
fxsaber #:

Cet exemple a été conçu pour démontrer le fonctionnement du calendrier dans Tester. Il est accompagné des instructions suivantes.

Malheureusement, vous continuez à faire des déclarations inarticulées, ce qui me fait perdre mon temps à émettre des hypothèses sur ce qu'il a voulu dire par là.

Au moment où la nouvelle se produit, la valeur actuelle n'est pas mise à jour par rapport à la valeur attendue, et l'opération n'est donc pas exécutée. Je parle de l'opération dans une nouvelle en temps réel et non dans un test. En mode test, cela fonctionne très bien.
 
AdrianR007 #:
Au moment où la nouvelle survient, la valeur actuelle n'est pas mise à jour par rapport à la valeur attendue, et l'opération n'est donc pas exécutée. Je parle de l'opération dans une nouvelle en temps réel et non dans un test. En mode test, cela fonctionne très bien.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading.

Bibliothèques : Calendrier

BillionerClub, 2023.02.23 19:35

La bibliothèque n'est pas auto-rafraîchissante, il faut utiliser l'id, du calendrier, pour obtenir des données fraîches à partir de mql5.


 
Enrique Dangeroux #:

Merci Enrique. Peut-être avez-vous un exemple pour faire cela ?
 
AdrianR007 #:
Merci Enrique. Peut-être avez-vous un exemple pour faire cela ?

Je n'ai pas le temps de donner une leçon de codage de base. Lisez la documentation ou demandez sur les forums.

Par ailleurs, si vous voulez négocier les nouvelles, le calendrier MQL est inutile. Si vous voulez négocier les nouvelles, le calendrier MQL est inutile. Il y a des retards de quelques secondes, minutes et même heures.

 
AdrianR007 #:
Au moment où la nouvelle survient, la valeur actuelle n'est pas mise à jour par rapport à la valeur attendue, et l'opération n'est donc pas exécutée. Je parle de l'opération dans une nouvelle en temps réel et non dans un test. En mode test, cela fonctionne très bien.

Je ne sais pas ce que vous utilisez. En ce qui concerne les mises à jour des données du calendrier, lisez la discussion suivante.


La bibliothèque ne fournit que les données disponibles dans l'onglet Calendrier.

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 #:

Je ne sais pas ce que vous utilisez. En ce qui concerne les mises à jour des données du calendrier, lisez la discussion suivante.


La bibliothèque ne fournit que les données disponibles dans l'onglet Calendrier.

Merci beaucoup. C'est maintenant clair pour moi !!!....
 

La seule façon de comprendre le calendrier MT5 est de comparer les valeurs AVANT/après.

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

void OnStart()
{
  CALENDAR Calendar;
  
  if (Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, 0)) // Chargement absolu de tous les événements (historique + futur) du terminal MT5.
  {
    const string FileName = "Calendars\\" + AccountInfoString(ACCOUNT_SERVER) + "\\Calendar_" +
                            AccountInfoString(ACCOUNT_SERVER) + "_" + TimeToString(TimeCurrent(), TIME_DATE) + ".bin";
    
    Calendar.Save(FileName); // Sauvegardé pour une comparaison future lors de la synchronisation USA/Europe.
  }
}

Il est évident que personne ne le fera.

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bibliothèques : Calendrier

fxsaber, 2023.01.07 21:31.

Il semble que nous devrions faire un correcteur automatique dans les dates de calendrier.

Il semble que l'on obtienne un correcteur de calendrier qui corresponde au serveur de trading.

#property script_show_inputs

input ulong inEventID = 840030006; // ID de l'événement
input string inName = ""; // Nom -> ID de l'événement (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(); // Contourner les particularités du calendrier MQL : https://www.mql5.com/ru/forum/444094/page14#comment_46213385
    
    if (inDST)
      Calendar.DST(); // Appel si le serveur commercial est synchronisé avec l'heure européenne.
  
    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 // Obtenir l'identifiant de l'événement par son nom.
  {
    string Currencies[2];
    
    // Obtenir les devises du caractère courant.
    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());
  }
}


Résultat.

+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

Elles correspondent à celles du calendrier Web. Si quelqu'un voit des divergences évidentes, qu'il me le dise.

Il semble que ce soit la bonne façon d'utiliser le calendrier pour les backtests maintenant.

 
fxsaber #:

Il semble que ce soit un correcteur de calendrier qui corresponde au serveur commercial.


Résultat.

Correspond au calendrier Web. Si quelqu'un constate des divergences évidentes, qu'il me le fasse savoir.

Il semble maintenant correct d'utiliser le calendrier pour les backtests.

Mais qu'en est-il s'il s'agit de l'heure d'un autre pays ? Je sais que les dates varient d'un pays à l'autre.