Diskussion zum Artikel "MetaTrader 5 Machine Learning Blueprint (Teil 1): Datenlecks und Zeitstempelfehler"

 

Neuer Artikel MetaTrader 5 Machine Learning Blueprint (Teil 1): Datenlecks und Zeitstempelfehler :

Bevor wir überhaupt damit beginnen können, ML für unseren Handel auf dem MetaTrader 5 zu nutzen, müssen wir uns mit einem der am meisten übersehenen Fallstricke befassen - dem Datenleck. In diesem Artikel wird erläutert, wie Datenlecks, insbesondere die Falle von MetaTrader 5-Zeitstempel, die Leistung unseres Modells verzerren und zu unzuverlässigen Handelssignalen führen können. Indem wir uns mit den Mechanismen dieses Problems befassen und Strategien zu seiner Vermeidung vorstellen, ebnen wir den Weg für den Aufbau robuster Modelle für maschinelles Lernen, die zuverlässige Vorhersagen in Live-Handelsumgebungen liefern.

Das Ausspähen von Daten oder Datenlecks mag unauffällig erscheinen, aber die Auswirkungen auf maschinelle Lernmodelle können gewaltig sein - und verheerend. Stellen Sie sich vor, Sie lernen für einen Test und schauen sich unwissentlich die Antworten vorher an. Ihr perfektes Ergebnis fühlt sich verdient an, ist aber eigentlich Betrug. Genau das passiert, wenn wir die Standard-Zeitstempel von MetaTrader 5 für das maschinelle Lernen verwenden - ein Datenleck untergräbt unerwartet die Integrität Ihres Modells.

Wie die Zeitstempel des MetaTrader 5 Sie austricksen

EURUSD M5 - MetaTrader5

MetaTrader 5 kennzeichnet den 5-Minuten-Balken ab 18:55 Uhr, d.h. den vorletzten Balken oben, als:
Time Open High Low Close

2 Apr 18:55

  1.08718

  1.08724

  1.08668

  1.08670

Durch den Zeitstempel am Anfang impliziert MetaTrader 5, dass die Daten dieses Balkens um 18:55:00 Uhr zur Verfügung standen - ganze 5 Minuten vor seinem tatsächlichen Ende! Wenn Ihr Modell dies beim Training verwendet, ist es so, als würde man einem Schüler 5 Minuten vor Beginn der Prüfung die Antworten geben. Um dem entgegenzuwirken, sollten wir es vermeiden, die vorkompilierten Zeitbalken von MetaTrader 5 zu verwenden, sondern stattdessen Tick-Daten nutzen, um die Balken zu erstellen, die wir in unseren Modellen verwenden.

Autor: Patrick Murimi Njoroge

 

Die tätigkeitsbezogenen Balken lösen nicht alle Probleme, die Sie für Zeitbalken genannt haben. Sie haben zum Beispiel geschrieben:

The Subtle Intra-Bar Leakage: However, a more subtle form of data leakage can still occur within the very formation of that time bar. If a significant event transpires midway through a 1-minute bar (e.g., at 09:00:35), any features derived from that bar (such as its high price or a flag for the event) will inevitably incorporate this information by the bar's end.

Wenn Sie Balken mit gleichem Volumen, gleichem Bereich oder andere Tick-basierte benutzerdefinierte Balken erstellen, werden Sie einen solchen Balken ohnehin mit einem einzigen Label markieren, und es werden Informationen über den Höchstpreis über den gesamten Balken hinweg durchsickern (oder genauer gesagt, verschwimmen).

Die einzige Möglichkeit, dieses Problem zu lösen, besteht darin, "Balken" mit den spezifischen Funktionen (die Sie verwenden werden) im Hinterkopf zu erstellen. Wenn z.B. Hochs oder Tiefs die Hauptmerkmale sind, sollten Sie versuchen, einen Zickzack-Balken" mit zeitlich exakt markierten Extermums zu erstellen.

Der Ansatz mit konstanten Zeitrahmen und insbesondere die Beschränkung auf M1 ist im Zusammenhang mit dem Datenleck im MT5 problematisch. Die Kennzeichnung von M1-Balken mit der Endzeit ist imho nicht viel besser als mit der Anfangszeit.


Für diejenigen, die daran interessiert sind, benutzerdefinierte Balken (Charts) nativ in MT5 zu erstellen, gibt es den Artikel mit der MQL5-Implementierung von Equal-Volume-, Equal-Range- und Renko-Balken. Natürlich können Sie die Balken mit Endzeit im Open Source Code markieren.

Custom symbols: Practical basics
Custom symbols: Practical basics
  • www.mql5.com
The article is devoted to the programmatic generation of custom symbols which are used to demonstrate some popular methods for displaying quotes. It describes a suggested variant of minimally invasive adaptation of Expert Advisors for trading a real symbol from a derived custom symbol chart. MQL source codes are attached to this article.
 
Stanislav Korotky #:

Die tätigkeitsbezogenen Balken lösen nicht alle Probleme, die Sie für Zeitbalken genannt haben. Sie haben zum Beispiel geschrieben:

Wenn Sie Balken mit gleichem Volumen, gleichem Bereich oder andere Tick-basierte benutzerdefinierte Balken erstellen, werden Sie einen solchen Balken ohnehin mit einem einzigen Etikett markieren, und es werden Informationen über den Höchstpreis über den gesamten Balken hinweg durchsickern (oder genauer gesagt, verschwimmen).

Die einzige Möglichkeit, dieses Problem zu lösen, besteht darin, "Balken" mit den spezifischen Funktionen (die Sie verwenden werden) im Hinterkopf zu erstellen. Wenn z.B. Hochs oder Tiefs die Hauptmerkmale sind, sollten Sie versuchen, einen Zickzack-Balken" mit zeitlich genau markierten Extermums zu erstellen.

Der Ansatz mit konstanten Zeitrahmen und insbesondere die Beschränkung auf M1 ist im Zusammenhang mit dem Datenleck im MT5 problematisch. Die Kennzeichnung von M1-Balken mit der Endzeit ist nicht viel besser als die mit der Anfangszeit, imho.


Für diejenigen, die daran interessiert sind, benutzerdefinierte Balken (Charts) nativ in MT5 zu erstellen, gibt es den Artikel mit der MQL5-Implementierung von Equal-Volume-, Equal-Range- und Renko-Balken. Natürlich können Sie die Balken mit Endzeit im Open Source Code markieren.

Die aktivitätsgesteuerten Balken zielen darauf ab, die in den Balken enthaltenen Informationen über statistische Eigenschaften zu verbessern, z. B. weniger Heteroskedastizität und verbesserte Normalität. Die von mir vorgeschlagene Lösung für das subtile Intra-Bar-Leakage besteht darin, die Balken mit ihren Endzeiten zu kennzeichnen, so dass alle Ereignisse, die innerhalb des Balkens auftreten, im Zeitstempel erfasst werden. Ein nützliches Beispiel ist die Verwendung von aus dem Zeitstempel abgeleiteten Merkmalen, wie z. B. Fourier-Transformationen, beim Training Ihres Modells. Wenn Sie die MetaTrader5-Konvention verwenden, bei der die Balken mit dem Beginn der Periode gekennzeichnet sind, dann geben Sie Ihrem Modell falsche Informationen. Diese Unterscheidung mag für einige Modelle keine große Rolle spielen, aber sie hat einen großen Einfluss auf Modelle, die die zyklische Natur der Märkte ausnutzen wollen. Ich hoffe, ich habe meine Absicht deutlich gemacht.


 
Stanislav Korotky #:

The activity-based bars don't solve all the problems you mentioned for time bars. For example, you wrote:

If you create bars of the same volume, range, or other tick-based custom bars, you'll be marking such a bar with a single label anyway, and information about the maximum price will leak (or more accurately, blur) across the entire bar.

The only way to solve this problem is to create "bars" with the specific features (you'll be using) in mind. For example, if highs or lows are the main characteristics, you should try to create a "zigzag bar" with extermums marked exactly in time.

The constant timeframe approach, and in particular the limitation to M1, is problematic in the context of the MT5 data leak. Marking M1 bars with the end time is imho not much better than with the start time.


For those interested in creating custom bars (charts) natively in MT5, there is the article with the MQL5 implementation of Equal Volume, Equal Range and Renko bars. Of course, you can mark the bars with end time in the open source code.

What do you mean when you state "If you create bars of the same volume, range, or other tick-based custom bars, you'll be marking such a bar with a single label anyway, and information about the maximum price will leak (or more accurately, blur) across the entire bar"?

 
Patrick Murimi Njoroge #:

Was meinen Sie, wenn Sie sagen: "Wenn Sie Balken mit dem gleichen Volumen, Bereich oder andere Tick-basierte benutzerdefinierte Balken erstellen, werden Sie einen solchen Balken sowieso mit einem einzigen Etikett markieren, und die Informationen über den Höchstpreis werden über den gesamten Balken auslaufen (oder genauer gesagt, verschwimmen)"?

Ich verstehe nicht, was daran unklar ist. Mein Satz war eine direkte Antwort auf Ihren Satz, den ich in meinem vorherigen Beitrag zitiert habe - Sie können also den Zusammenhang erkennen. Unabhängig davon, wie man die Balken formt, wird jede Eigenschaft des Balkens durch einen einzigen Zeitstempel zugeordnet, und das tatsächliche "Ereignis" für die Eigenschaft entspricht nicht diesem Zeitpunkt.
 
Stanislav Korotky # :
Ich verstehe nicht, was unklar ist. Mein Satz ist eine direkte Antwort auf Ihren Satz, den ich im vorherigen Beitrag zitiert habe. Unabhängig davon, wie Sie den Balken formen, werden alle Eigenschaften des Balkens durch einen einzigen Zeitstempel zugeordnet, und die tatsächlichen "Ereignisse" der Eigenschaften stimmen nicht mit dieser Zeit überein. Zeit.

Jetzt verstehe ich die Bedeutung der Unschärfe.