Bibliotheken: Kalender - Seite 8

 
AdrianR007 #:
Ich verwende den Code aus Ihrem Beispiel, aber der aktuelle Wert wird nicht aktualisiert, wenn das Ereignis eintritt. Haben Sie dazu einen Vorschlag?

Dieses Beispiel wurde erstellt, um zu zeigen, wie der Kalender in Tester funktioniert. Es wird mit dieser Anleitung geliefert.

Führen Sie es einmal im MT5-Terminal aus, um alle historischen Daten zu speichern (~60 Mb). Danach sind sie im Tester verfügbar.

Leider machen Sie immer wieder unartikulierte Aussagen, die mir die Zeit rauben, um zu rätseln, "was hat er gemeint?

 
fxsaber #:

Dieses Beispiel wurde erstellt, um zu zeigen, wie der Kalender in Tester funktioniert. Es wird mit den folgenden Anweisungen geliefert.

Leider äußern Sie sich immer wieder undeutlich, so dass ich Zeit brauche, um zu rätseln, was er damit gemeint hat.

In dem Moment, in dem die Nachricht auftritt, wird der aktuelle Wert nicht in Bezug auf den erwarteten Wert aktualisiert, daher wird die Operation nicht ausgeführt. Ich spreche über den Vorgang in einer Nachricht in Echtzeit und nicht in einem Test. Im Testmodus funktioniert sie sehr gut.
 
AdrianR007 #:
In dem Moment, in dem die Nachricht auftritt, wird der aktuelle Wert nicht in Bezug auf den erwarteten Wert aktualisiert, daher wird der Vorgang nicht ausgeführt. Ich spreche über den Vorgang in einer Nachricht in Echtzeit und nicht in einem Test. Im Testmodus funktioniert sie sehr gut.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien.

Bibliotheken: Kalender

BillionerClub, 2023.02.23 19:35

es ist nicht selbst aktualisierende Bibliothek, verwenden Sie id, von Kalender, für den Erhalt von frischen Daten aus mql5.


 
Enrique Dangeroux #:

Danke, Enrique. Vielleicht haben Sie ein Beispiel, um dies zu tun?
 
AdrianR007 #:
Danke, Enrique. Vielleicht haben Sie ein Beispiel, um dies zu tun?

Ich habe keine Zeit, um grundlegende Codierungslektionen zu geben. Entweder lesen Sie die Dokumentation oder fragen Sie im Forum.

Nebenbei bemerkt. Wenn Sie die Nachrichten handeln wollen, ist der MQL-Kalender nutzlos. Es gibt Verzögerungen von Sekunden, Minuten sogar Stunden.

 
AdrianR007 #:
In dem Moment, in dem die Nachricht auftritt, wird der aktuelle Wert nicht in Bezug auf den erwarteten Wert aktualisiert, daher wird der Vorgang nicht ausgeführt. Ich spreche über den Vorgang in einer Nachricht in Echtzeit und nicht in einem Test. Im Testmodus funktioniert sie sehr gut.

Ich weiß nicht, was Sie ausführen. Bezüglich der Aktualisierung von Kalenderdaten lesen Sie bitte die folgende Diskussion.


Die Bibliothek stellt nur die Daten zur Verfügung, die auf der Registerkarte Kalender verfügbar sind.

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

Ich weiß nicht, was Sie verwenden. Bezüglich der Aktualisierung von Kalenderdaten lesen Sie bitte die folgende Diskussion.


Die Bibliothek stellt nur die Daten bereit, die auf der Registerkarte "Kalender" verfügbar sind.

Ich danke Ihnen vielmals. Jetzt ist es für mich klar!!!....
 

Die einzige Möglichkeit, den MT5-Kalender zu verstehen, besteht darin, die Vorher/Nachher-Werte zu vergleichen.

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

void OnStart()
{
  CALENDAR Calendar;
  
  if (Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, 0)) // Lädt absolut alle Ereignisse (Historie + Zukunft) vom MT5-Terminal.
  {
    const string FileName = "Calendars\\" + AccountInfoString(ACCOUNT_SERVER) + "\\Calendar_" +
                            AccountInfoString(ACCOUNT_SERVER) + "_" + TimeToString(TimeCurrent(), TIME_DATE) + ".bin";
    
    Calendar.Save(FileName); // Wird für einen späteren Vergleich bei der Synchronisierung USA/Europa gespeichert.
  }
}

Offensichtlich wird das niemand tun.

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Bibliotheken: Kalender

fxsaber, 2023.01.07 21:31.

Sieht so aus, als sollten wir einen automatischen Korrektor in Kalenderdaten machen.

Es scheint einen Kalender-Korrektor zu bekommen, der mit dem Handelsserver übereinstimmt.

#property script_show_inputs

input ulong inEventID = 840030006; // EreignisID
input string inName = ""; // Name -> EreignisID (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(); // Umgehen Sie die Besonderheiten des MQL-Kalenders: https://www.mql5.com/ru/forum/444094/page14#comment_46213385
    
    if (inDST)
      Calendar.DST(); // Aufruf, wenn der Handelsserver mit der europäischen Zeit synchronisiert ist.
  
    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 // EreignisID nach Name abrufen.
  {
    string Currencies[2];
    
    // Ermittelt die Währungen des aktuellen Zeichens.
    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());
  }
}


Ergebnis.

+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

Er stimmt mit dem Web-Kalender überein. Wenn jemand offensichtliche Diskrepanzen sieht, lasst es mich wissen.

Das scheint jetzt der richtige Weg zu sein, um den Kalender für Backtests zu verwenden.

 
fxsaber #:

Es scheint sich um einen Kalenderkorrektor zu handeln, der mit dem Handelsserver übereinstimmt.


Ergebnis.

Stimmt mit dem Web-Kalender überein. Wenn jemand offensichtliche Unstimmigkeiten sieht, lassen Sie es mich wissen.

Jetzt scheint es korrekt zu sein, den Kalender für Backtests zu verwenden.

Aber was ist, wenn es die Zeit eines anderen Landes ist? Ich weiß, dass verschiedene Länder unterschiedliche Daten für verschiedene Zeiten haben.