Bibliothèque: Calendrier - page 10

 

Sur la pertinence des données du calendrier.


Pour comparaison, le travail d'une autre source.

 
La bibliothèque a été mise à jour pour permettre la modification des événements.
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/fr/code/32430

void OnStart()
{
  CALENDAR Calendar;
  
  const string Currencies[] = {SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE),
                               SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT)};
  
  // Accroche les événements importants à venir par symbole devises.
  Calendar.Set(Currencies);
  
  Print(Calendar.ToString()); // Les a imprimées.
  
  EVENT Events[];
  
  if (Calendar.GetEvents(Events) > 0) // Tous les événements ont été récupérés dans le format interne.
  {    
    Events[0].Importance = (ENUM_CALENDAR_EVENT_IMPORTANCE)27; // A changé l'importance de l'événement.

    Calendar = Events; // Placer des événements dans le calendrier.
    
    Print(Calendar.ToString()); // Les a imprimées.
  }
}


Résultat.

2024.03.06 16:45 CAD 3 BoC Interest Rate Decision (boc-interest-rate-decision), Canada (CA) |  |  | 5.0% | 
2024.03.06 17:00 CAD 3 Ivey PMI (ivey-pmi), Canada (CA) |  | 56.4 | 56.5 | 
2024.03.08 15:30 CAD 3 Employment Change (employment-change), Canada (CA) |  | 33.3 K | 37.3 K | 

2024.03.06 16:45 CAD 27 BoC Interest Rate Decision (boc-interest-rate-decision), Canada (CA) |  |  | 5.0% | 
2024.03.06 17:00 CAD 3 Ivey PMI (ivey-pmi), Canada (CA) |  | 56.4 | 56.5 | 
2024.03.08 15:30 CAD 3 Employment Change (employment-change), Canada (CA) |  | 33.3 K | 37.3 K | 
 

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

Bibliothèques : Calendrier

fxsaber, 2023.04.13 00:07 pm.

On dirait que j'ai un correcteur de calendrier qui correspond 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

Correspond au calendrier Web. Si quelqu'un voit des incohérences évidentes, qu'il me le fasse savoir.

Maintenant, il semble correct d'utiliser le calendrier pour les backtests.

J'ai obtenu ce résultat :

OnStart > DST: false
+840030006: 2024.03.12 14:30 == 2024.03.12 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.4% | 0.3% | 0.4% | 
-840030006: 2024.02.13 15:30 != 2024.02.13 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.4% | 0.2% | 0.3% | 
-840030006: 2024.01.11 15:30 != 2024.01.11 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.3% | 0.3% | 0.3% | 
-840030006: 2023.12.12 15:30 != 2023.12.12 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.3% | 0.3% | 0.2% | 
-840030006: 2023.11.14 15:30 != 2023.11.14 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.2% | 0.3% | 0.3% | 
-840030006: 2023.10.12 15:30 != 2023.10.12 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.3% | 0.4% | 0.3% | 
-840030006: 2023.09.13 15:30 != 2023.09.13 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.3% | 0.4% | 0.2% | 
-840030006: 2023.08.10 15:30 != 2023.08.10 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.2% | 0.4% | 0.2% | 
-840030006: 2023.07.12 15:30 != 2023.07.12 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.2% | 0.4% | 0.4% | 
-840030006: 2023.06.13 15:30 != 2023.06.13 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.4% | 0.4% | 0.4% | 
-840030006: 2023.05.10 15:30 != 2023.05.10 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.4% | 0.5% | 0.4% | 
-840030006: 2023.04.12 15:30 != 2023.04.12 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.4% | 0.5% | 0.5% | 
+840030006: 2023.03.14 14:30 == 2023.03.14 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.5% | 0.5% | 0.4% | 
-840030006: 2023.02.14 15:30 != 2023.02.14 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.4% | 0.5% | 0.3% | 0.4%
-840030006: 2023.01.12 15:30 != 2023.01.12 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.3% | 0.5% | 0.2% | 

OnStart > DST: true
-840030006: 2024.03.12 14:30 != 2024.03.12 13:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.4% | 0.3% | 0.4% | 
-840030006: 2024.02.13 15:30 != 2024.02.13 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.4% | 0.2% | 0.3% | 
-840030006: 2024.01.11 15:30 != 2024.01.11 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.3% | 0.3% | 0.3% | 
-840030006: 2023.12.12 15:30 != 2023.12.12 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.3% | 0.3% | 0.2% | 
-840030006: 2023.11.14 15:30 != 2023.11.14 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.2% | 0.3% | 0.3% | 
-840030006: 2023.10.12 15:30 != 2023.10.12 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.3% | 0.4% | 0.3% | 
-840030006: 2023.09.13 15:30 != 2023.09.13 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.3% | 0.4% | 0.2% | 
-840030006: 2023.08.10 15:30 != 2023.08.10 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.2% | 0.4% | 0.2% | 
-840030006: 2023.07.12 15:30 != 2023.07.12 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.2% | 0.4% | 0.4% | 
-840030006: 2023.06.13 15:30 != 2023.06.13 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.4% | 0.4% | 0.4% | 
-840030006: 2023.05.10 15:30 != 2023.05.10 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.4% | 0.5% | 0.4% | 
-840030006: 2023.04.12 15:30 != 2023.04.12 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.4% | 0.5% | 0.5% | 
-840030006: 2023.03.14 14:30 != 2023.03.14 13:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.5% | 0.5% | 0.4% | 
-840030006: 2023.02.14 15:30 != 2023.02.14 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.4% | 0.5% | 0.3% | 0.4%
-840030006: 2023.01.12 15:30 != 2023.01.12 14:30 USD 2 Core CPI m/m (consumer-price-index-ex-food-energy-mm), United States (US) | 0.3% | 0.5% | 0.2% | 
 
fxsaber #:

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

Résultat.

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

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

Desincohérences sont observées un peu partout :

OnStart > DST: false
-840200001: 2024.03.06 15:30 != 2024.03.06 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 1.367 M | 4.491 M | 4.199 M | 
-840200001: 2024.02.28 15:30 != 2024.02.28 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 4.199 M | 3.930 M | 3.514 M | 
+840200001: 2024.02.22 17:00 == 2024.02.22 17:00 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 3.514 M | 6.807 M | 12.018 M | 
+840200001: 2024.02.14 16:30 == 2024.02.14 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 12.018 M | 3.392 M | 5.520 M | 
-840200001: 2024.02.07 17:30 != 2024.02.07 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 5.520 M | -3.716 M | 1.234 M | 
-840200001: 2024.01.31 15:30 != 2024.01.31 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 1.234 M | -6.860 M | -9.233 M | 
+840200001: 2024.01.24 16:30 == 2024.01.24 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | -9.233 M | -0.744 M | -2.492 M | 
+840200001: 2024.01.18 17:00 == 2024.01.18 17:00 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | -2.492 M | 4.112 M | 1.338 M | 
-840200001: 2024.01.10 17:30 != 2024.01.10 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 1.338 M | -2.280 M | -5.503 M | 
+840200001: 2024.01.04 17:00 == 2024.01.04 17:00 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | -5.503 M | -2.499 M | -7.114 M | 

OnStart > DST: true
-840200001: 2024.03.06 15:30 != 2024.03.06 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 1.367 M | 4.491 M | 4.199 M | 
-840200001: 2024.02.28 15:30 != 2024.02.28 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 4.199 M | 3.930 M | 3.514 M | 
+840200001: 2024.02.22 17:00 == 2024.02.22 17:00 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 3.514 M | 6.807 M | 12.018 M | 
+840200001: 2024.02.14 16:30 == 2024.02.14 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 12.018 M | 3.392 M | 5.520 M | 
-840200001: 2024.02.07 17:30 != 2024.02.07 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 5.520 M | -3.716 M | 1.234 M | 
-840200001: 2024.01.31 15:30 != 2024.01.31 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 1.234 M | -6.860 M | -9.233 M | 
+840200001: 2024.01.24 16:30 == 2024.01.24 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | -9.233 M | -0.744 M | -2.492 M | 
+840200001: 2024.01.18 17:00 == 2024.01.18 17:00 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | -2.492 M | 4.112 M | 1.338 M | 
-840200001: 2024.01.10 17:30 != 2024.01.10 16:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | 1.338 M | -2.280 M | -5.503 M | 
+840200001: 2024.01.04 17:00 == 2024.01.04 17:00 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) | -5.503 M | -2.499 M | -7.114 M | 

//---

Veuillez également vérifier par vous-même.

 
Anatoli Kazharski #:

Desincohérences sont observées dans tous les domaines

Impossible de comparer par 840200001-event, car il n'a qu'une faible influence sur les prix - le temps de la colonne de gauche peut être calculé de manière incorrecte.
 
fxsaber #:
Vous ne pouvez pas comparer par 840200001-event, parce qu'il a une faible influence sur les cotations - le temps de la colonne de gauche peut être calculé de manière incorrecte.

Merci, j'ai regardé de plus près et je comprends la méthode proposée.

Je pense que dans certains cas, il serait plus intéressant d'examiner une certaine plage de temps (avant et après l'événement) pour voir dans quelle mesure le prix a changé.

 
Anatoli Kazharski #:

Desincohérences sont observées

Après la mise à jour de la bibliothèque, le calendrier devrait être synchronisé avec l'historique des cotations sur n'importe quel courtier.


Vérification (exécution sur EURUSD).

#property script_show_inputs

input ulong inEventID = 840030016; // ID d'événement (840030016 - Nonfarm Payrolls)
input datetime inFrom = D'2020.01.01';

// Taille de la barre de temps.
double GetBarSize( const datetime Time )
{
  MqlRates Rates[];
  
  return(CopyRates(_Symbol, PERIOD_M1, iBarShift(_Symbol, PERIOD_M1, Time), 1, Rates) != 1 ? 0 : Rates[0].high - Rates[0].low);
}

// Heure de la plus grande barre par taille (par heure du tableau).
datetime GetMaxBarSizeTime( const datetime &Times[] )
{
  double Values[];
  
  for (int i = ArrayResize(Values, ArraySize(Times)) - 1; i >= 0; i--)
    Values[i] = GetBarSize(Times[i]);
  
  return(Times[ArrayMaximum(Values)]);
}

// Moment le plus propice à la publication de nouvelles sur les données relatives aux prix (forte réaction).
datetime ChartNewsTime( const datetime &Time )
{
  datetime Times[3];
      
  Times[0] = Time;
  Times[1] = Times[0] - 3600;
  Times[2] = Times[0] + 3600;
  
  return(GetMaxBarSizeTime(Times));
}

#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/fr/code/32430
#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{ 
  PRINT(AccountInfoString(ACCOUNT_SERVER));
  PRINT(TimeTradeServer());
  PRINT(DST::IsEurope());            // Règlement européen sur la DST.
  PRINT(DST::GetRollover());         // Temps de retournement.
  PRINT(DST::TimeServerGMTOffset()); // Offset du serveur GMT.
  
  CALENDAR Calendar;
    
  Calendar.Set(inEventID);
  Calendar.FilterByTime(inFrom, TimeCurrent());
  
  Calendar.AutoDST();

  for (int i = Calendar.GetAmount() - 1; i >= 0; i--)
  {
    const EVENT Event = Calendar[i];    
    const datetime ChartNews = ChartNewsTime(Event.time);
    
    if (Event.time != ChartNews)    
      Print("-" + (string)Event.EventID + ": " + TimeToString(ChartNews) + " != " + Event.ToString());
    else
      Print("+" + (string)Event.EventID + ": " + TimeToString(ChartNews) + " == " + Event.ToString());
  }
}


Résultat.

AccountInfoString(ACCOUNT_SERVER) = RannForex-Server
TimeTradeServer() = 2024.03.14 09:26:54
DST::IsEurope() = 1
DST::GetRollover() = 2024.03.13 23:00:00
DST::TimeServerGMTOffset() = -7200
+840030016: 2024.03.08 15:30 == 2024.03.08 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 275 K | 220 K | 353 K | 229 K
+840030016: 2024.02.02 15:30 == 2024.02.02 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 353 K | 186 K | 216 K | 333 K
+840030016: 2024.01.05 15:30 == 2024.01.05 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 216 K | 1 K | 199 K | 173 K
+840030016: 2023.12.08 15:30 == 2023.12.08 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 199 K | -3 K | 150 K | 
+840030016: 2023.11.03 14:30 == 2023.11.03 14:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 150 K | -8 K | 336 K | 297 K
+840030016: 2023.10.06 15:30 == 2023.10.06 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 336 K | 1 K | 187 K | 227 K
+840030016: 2023.09.01 15:30 == 2023.09.01 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 187 K | 12 K | 187 K | 157 K
+840030016: 2023.08.04 15:30 == 2023.08.04 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 187 K | -1 K | 209 K | 185 K
+840030016: 2023.07.07 15:30 == 2023.07.07 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 209 K | -19 K | 339 K | 306 K
+840030016: 2023.06.02 15:30 == 2023.06.02 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 339 K | 1 K | 253 K | 294 K
+840030016: 2023.05.05 15:30 == 2023.05.05 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 253 K | 23 K | 236 K | 165 K
+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
+840030016: 2022.08.05 15:30 == 2022.08.05 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 528 K | -19 K | 372 K | 398 K
+840030016: 2022.07.08 15:30 == 2022.07.08 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 372 K | -229 K | 390 K | 384 K
+840030016: 2022.06.03 15:30 == 2022.06.03 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 390 K | -19 K | 428 K | 436 K
+840030016: 2022.05.06 15:30 == 2022.05.06 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 428 K | 317 K | 431 K | 428 K
+840030016: 2022.04.01 15:30 == 2022.04.01 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 431 K | 80 K | 678 K | 750 K
+840030016: 2022.03.04 15:30 == 2022.03.04 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 678 K | -413 K | 467 K | 481 K
+840030016: 2022.02.04 15:30 == 2022.02.04 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 467 K | -192 K | 199 K | 510 K
+840030016: 2022.01.07 15:30 == 2022.01.07 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 199 K | 379 K | 210 K | 249 K
+840030016: 2021.12.03 15:30 == 2021.12.03 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 210 K | 330 K | 531 K | 546 K
+840030016: 2021.11.05 14:30 == 2021.11.05 14:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 531 K | -54 K | 194 K | 312 K
+840030016: 2021.10.08 15:30 == 2021.10.08 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 194 K | -302 K | 235 K | 366 K
+840030016: 2021.09.03 15:30 == 2021.09.03 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 235 K | 23 K | 943 K | 1053 K
+840030016: 2021.08.06 15:30 == 2021.08.06 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 943 K | 381 K | 850 K | 938 K
+840030016: 2021.07.02 15:30 == 2021.07.02 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 850 K | 3 K | 559 K | 583 K
+840030016: 2021.06.04 15:30 == 2021.06.04 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 559 K | -396 K | 266 K | 278 K
+840030016: 2021.05.07 15:30 == 2021.05.07 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 266 K | -1 K | 916 K | 770 K
+840030016: 2021.04.02 15:30 == 2021.04.02 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 916 K | 409 K | 379 K | 468 K
+840030016: 2021.03.05 15:30 == 2021.03.05 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 379 K | -137 K | 49 K | 166 K
+840030016: 2021.02.05 15:30 == 2021.02.05 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 49 K | -497 K | -140 K | -227 K
+840030016: 2021.01.08 15:30 == 2021.01.08 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | -140 K | 207 K | 245 K | 336 K
+840030016: 2020.12.04 15:30 == 2020.12.04 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 245 K | 528 K | 638 K | 610 K
+840030016: 2020.11.06 15:30 == 2020.11.06 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 638 K | -76324 K | 661 K | 672 K
-840030016: 2020.10.02 16:30 != 2020.10.02 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 661 K | 78356 K | 1371 K | 1489 K
+840030016: 2020.09.04 15:30 == 2020.09.04 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 1371 K | -74433 K | 1763 K | 1734 K
+840030016: 2020.08.07 15:30 == 2020.08.07 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 1763 K | 4511 K | 4800 K | 4791 K
+840030016: 2020.07.02 15:30 == 2020.07.02 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 4800 K | -12034 K | 2509 K | 2699 K
+840030016: 2020.06.05 15:30 == 2020.06.05 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 2509 K | -10000 K | -20500 K | -20687 K
+840030016: 2020.05.08 15:30 == 2020.05.08 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | -20500 K | 139 K | -701 K | -870 K
+840030016: 2020.04.03 15:30 == 2020.04.03 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | -701 K | 163 K | 273 K | 275 K
+840030016: 2020.03.06 15:30 == 2020.03.06 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 273 K | 161 K | 225 K | 273 K
+840030016: 2020.02.07 15:30 == 2020.02.07 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 225 K | 161 K | 145 K | 147 K
+840030016: 2020.01.10 15:30 == 2020.01.10 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 145 K | 168 K | 266 K | 256 K


Il sera nécessaire de vérifier l'exactitude lors de la désynchronisation Europe/USA de l'automne.

Vous pouvez maintenant utiliser le calendrier dans les backtests (l'exemple d'EA dans la livraison a été mis à jour).


ZY Je vous recommande de consulter les travaux de cet auteur.

amrali
amrali
  • www.mql5.com
Trader's profile
 
  static int TimeServerGMTOffset( void )
  {
    MqlCalendarValue Value[1];

    ::CalendarValueHistoryByEvent(840030016, Value, D'2023.09.01', D'2023.09.02');

    // EVENT::CorrectTime(Value[0].time) ;

    return((-3 + (24 - DST::GetHour(Value[0].time - 31 * HOUR / 2)) % 24) * HOUR);
  }

J'ai un mauvais pressentiment quant à l'exactitude de cette fonction.

En utilisant les limites du calcul : la plage de sortie de (x % 24) est de 0 à 23, donc la plage de sortie de la fonction est de -3 à 20. Par conséquent, un serveur de -5 ne peut pas être représenté.

 
amrali #:

J'ai un mauvais pressentiment quant à l'exactitude de cette fonction.

En utilisant les limites du calcul : la plage de sortie de (x % 24) est de 0 à 23, donc la plage de sortie de la fonction est de -3 à 20. Par conséquent, un serveur de -5 ne peut pas être représenté.

Vous avez raison, merci.

 

soustraire directement de 12:30 (au lieu de -3 + 31*/2) :

int TimeServerGMTOffset(void)
  {
   MqlCalendarValue Value[1];

   ::CalendarValueHistoryByEvent(840030016, Value, D'2023.09.01', D'2023.09.02');

   return((int)(D'2023.09.01 12:30' - Value[0].time));
  }