Der Maestro hat sich der Stiftung angenommen. Bravo! Große Veränderungen stehen an :)
Noch ist nichts in Sicht. Bibliotheken.
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/de/code/32430 int OnInit() { return(!EventSetTimer(1)); } void OnTimer() { CALENDAR Calendar; string Currencies[2]; // Ermittelt die Währungen des aktuellen Zeichens. Currencies[0] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE); Currencies[1] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT); // Nimmt anstehende wichtige Ereignisse nach Symbolwährungen auf. Calendar.Set(Currencies); Comment(Calendar.ToString(0, 5, true)); // Sie wurden ausgedruckt. }
Die Wahrscheinlichkeit, dass ich wichtige Nachrichten verpasse, ist deutlich geringer.
Ein solcher Beilaufruf von Null wird innerhalb von 0,6 ms ausgeführt. Natürlich ist es möglich, den Verbrauch auf Null zu reduzieren.
DerTerminkalender wird viel weiter in die Zukunft geschrieben. Daher können Sie auch im MT4 eine Erinnerung verwenden, indem Sie eine Datei aus MT5-Daten speichern (z. B. einen Monat im Voraus).
Dies ist, was ich für MT4 tun.
Stanislav Korotky:
ИМХО, все же не хватает более подробной документации. Понятно, что можно заглянуть в код, но тогда вместо разбирания в чужом коде можно и свой написать ;-).
Drücken Sie innerhalb von mqh ALT+M. Die Namen der Methoden scheinen sinnvoll zu sein.
Insbesondere ist nicht klar, ob Get aufgerufen werden kann, ohne vorher Set zu machen, und ob man den Filter zurücksetzen kann (soweit ich weiß, kann man das nicht).
Set - füllt das Objekt mit Ereignissen. Der Zugriff darauf ist wie der Zugriff auf die Elemente eines Arrays.
Aus den obigen Beispielen geht nicht klar hervor, ob es einen bequemeren Weg gibt, das Auftreten des Ereignisses zu verfolgen - insbesondere, wenn ich es richtig verstanden habe, müssen Sie change_id vergleichen, nicht das Auftreten von TimeCurrent, weil die Datenaktualisierung nicht unbedingt genau mit dem Beginn des Ereignisses zusammenfällt.
Wenn es sich um einen Backtest handelt, gibt es keine change_id und kann es auch nicht geben.
Was die Echtzeit betrifft, so wird diese Funktionalität etwas später in der Bibliothek hinzugefügt.
Der Filter-Rollback ist derselbe wie überall sonst: Erstellen Sie eine Kopie des Objekts vor dem Filter.
Architektonisch ist es so gestaltet, dass es möglich ist, andere Datenquellen in Form von Parsern einzubinden. Zu diesem Zweck gibt es sogar ein EVENT::Source-Feld, das jetzt nur noch einem Wert "MetaTrader5" entspricht.
Es gibt also eine Funktionalität zum Stapeln von Kalendern. Angenommen, es werden Daten aus mehreren Quellen genommen und dann an einem Ort kombiniert.
Wenn es sich um einen Backtest handelt, gibt es dort keine change_id und kann es auch nicht geben.
Dies ist eine fragwürdige Nuance: im wirklichen Leben können sich Ereignisse ändern, und wenn der Tester (über die Bibliothek) nicht die Geschichte der Änderungen reproduziert, fällt die Angemessenheit der Prüfung. Ein ähnliches Thema wurde hier bereits in einigen Threads angesprochen: Online-Indikatoren in einer Veranstaltung sind gleich, und dann werden sie korrigiert. Wenn wir mit den korrigierten Werten testen, werden wir nicht das Bild erhalten, das der Experte "on the fly" analysiert hat. Nun, oder ich habe die Situation mit dem Zugang zu den Updates falsch verstanden.
Dies ist eine fragwürdige Nuance: Im wirklichen Leben können sich Ereignisse ändern, und wenn der Prüfer (über die Bibliothek) die Geschichte der Änderungen nicht reproduzieren kann, sinkt die Angemessenheit der Prüfung. Ein ähnliches Thema wurde hier bereits in einigen Threads angesprochen: Online-Indikatoren in einer Veranstaltung sind gleich, und dann werden sie korrigiert. Wenn wir mit den korrigierten Werten testen, erhalten wir nicht das Bild, das der Experte "on the fly" analysiert hat. Nun, oder ich habe die Situation mit dem Zugang zu den Updates falsch verstanden.
Der Kalender enthält vier Werte für jedes Ereignis:
- Aktuell (Actual) - der erste Wert, der nach der Veröffentlichung der Nachricht eingegangen ist.
- Prognostiziert - welcher Wert wurde (von wem?) vor der Veröffentlichung der Nachricht vorhergesagt.
- Previous - der erste Wert, der nach der Veröffentlichung der gleichen Kalendernachricht beim letzten Mal empfangen wurde. D.h. er ist gleich dem Actual-Wert für das vorherige Mal: Previous[i] = Actual[i - 1].
- Revidiert - der angepasste Wert des vorherigen Actual. Der Zeitpunkt (und die Anzahl der Male) dieser Aktualisierung wird nicht im Kalender gespeichert.
In allen HTML-Kalendern (einschließlich des Standardkalenders und des Terminals) ist das Tripel (Actual, Forecast, Previous) = (Actual, Forecast, Revised). Daher können Sie das Feld Überarbeitet im Verlauf nicht verwenden, bis das nächste relevante Ereignis eintritt. Die anderen Felder können verwendet werden.
Es gibt keine Informationen über den Verzögerungswert des Empfangs von Actual oder, genauer gesagt, über die Disynchronisierung eines bestimmten Handelsservers und der Nachrichtenquelle (und kann es auch nicht sein). Aus diesem Grund wird sie im Backtest nicht berücksichtigt. Diese Nuance ist klar.
In Anbetracht der obigen Ausführungen ist es völlig legitim, TimeTradeServer mit dem Zeitpunkt des Ereignisses im Backtest zu vergleichen. Und zwar mit Werten (Previous, Forecast,Revised) unmittelbar vor dem Ereignis, (Actual, Forecast,Previous) - unmittelbar danach.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.

Kalender:
Kalender - Fundamentalanalyse in Geschichte und Echtzeit.
Author: fxsaber