DataForge Instrument Passport and Bar Exporter
- Utilitys
-
Sayed Javad Razavi Ebrahimi
🔧 Software engineer & data analyst — professional-grade MQL5 EAs and indicators. - Version: 2.0
DataForge exportiert MetaTrader-5-Balken in eine CSV-Datei und schreibt in diese Datei, was die Daten tatsächlich enthalten.
Das Programm führt keine Handelsgeschäfte durch. Es erteilt keine Orders, liest keine Positionen aus und benötigt keine Kontoberechtigungen. Es liest den Verlauf aus und schreibt eine Textdatei.
WAS DER EXPORT SCHREIBT
1. Ein Instrumentenpass, der in den CSV-Header eingefügt wird
Stellenanzahl, Punktwert, Kontraktgröße, Tick-Wert, Tick-Größe sowie das minimale, das Schrittweite- und das maximale Lot werden als Kommentarzeilen am Anfang der Datei geschrieben. Exportieren Sie dasselbe Symbol von zwei Servern und vergleichen Sie die beiden Header Zeile für Zeile.
Dies ist wichtig, da diese Felder nicht immer serverübergreifend identisch sind. Ein Symbol kann auf zwei Servern dieselbe Kontraktgröße und dieselbe Tick-Größe aufweisen, dabei jedoch einen unterschiedlichen Tick-Wert melden, was den Geldwert eines Punktes verändert. Im Terminal gibt es keine Warnung, wenn dies geschieht.
2. Eine jährliche Volumentabelle, die aus den Balken ausgelesen wird
Für jedes im Verlauf enthaltene Jahr gibt das Skript die Anzahl der Balken an, wie viele ein Tick-Volumen ungleich Null aufweisen und wie viele ein reales Volumen ungleich Null aufweisen. Diese Tabelle wird mit CopyRates ausgelesen, nicht aus dem Strategietester.
Beides sind unterschiedliche Dinge. Die „History-Quality“-Balken des Testers beschreiben den von ihm generierten Tick-Stream. Sie sagen nichts über das in den Balken selbst gespeicherte reale Volumen aus. Das Auslesen des einen für das andere führt dazu, dass Merkmale auf einem leeren Feld erstellt werden oder dass ein vorhandenes Feld verworfen wird.
3. Merkmalsspalten, wie sie von MQL5 berechnet werden
Der Export kann auch eine kleine Menge berechneter Eingaben schreiben. Diese dienen nicht zum Training: Sie sind eine Referenz, damit eine in einer anderen Sprache geschriebene Pipeline dieselben Eingaben neu berechnen und Wert für Wert vergleichen kann.
WAS DAS PARITY-SKRIPT TUT
Das zweite Skript liest diese Roh-Eingabewerte aus der Exportdatei zurück und schreibt sie nach Anwendung eines von Ihnen bereitgestellten Skalierers erneut. Es berechnet sie bewusst nicht neu.
Der Grund dafür ist einfach. Wenn eine Prüfung die Eingabewerte neu berechnet, wird letztendlich die Berechnung ein zweites Mal geprüft, anstatt die Normalisierung zu überprüfen, und jede Abweichung in der Tiefe oder im Moment zwischen den beiden Durchläufen wird fälschlicherweise als Fehler mit einem falschen Namen angezeigt. Das Einlesen derselben Zeilen beseitigt diese Mehrdeutigkeit.
Die Scaler-Datei enthält in ihrem Header eigene Stage- und Frame-Kennungen, die vom Skript überprüft werden. Ein Scaler, der nicht übereinstimmt, wird abgelehnt, anstatt stillschweigend verwendet zu werden.
AUCH GEMELDET
- Der tatsächlich gelesene erste und letzte Takt, veröffentlicht statt angenommen.
– Die Anzahl der Warm-up-Balken, die designbedingt als „nan“ ausgegeben werden.
– Die Anzahl der Spalten, die aus dem Skalierer statt aus einer Konstante entnommen wird.
– Zeitstempel in ISO-Reihenfolge, damit ein Parser Tag und Monat nicht verwechseln kann.
HINWEISE UND EINSCHRÄNKUNGEN
– Entwickelt und getestet für den M15-Zeitraum. Andere Zeiträume wurden nicht getestet.
– Die Orderbuchtiefe war bei allen getesteten CFD-Brokern leer. „MarketBookAdd“ wird akzeptiert und gibt nichts zurück.
– Kein Tick wies bei einem der getesteten Broker ein Kauf- oder Verkaufsflag auf, sodass aus diesen Daten kein Order-Flow-Delta messbar ist. Ein aus der Tick-Regel abgeleitetes signiertes Volumen ist eine Schlussfolgerung, keine Messung.
– Stellen Sie vor dem Export in den Terminal-Optionen „Max. Balken im Chart“ auf „unbegrenzt“ ein und scrollen Sie im Chart zurück, damit der Verlauf geladen wird. Ein Skript liest die vom Terminal zwischengespeicherten Daten aus, und die Obergrenze wird ohne Fehlermeldung gekürzt.
BEGLEITSKRIPT, SEPARAT VERÖFFENTLICHT
Ein zweites Skript, ForgeParity, wird zusammen mit diesem als Open Source veröffentlicht. Die Adresse finden Sie im Autorenprofil. Es liest die exportierten Eingaben zurück und schreibt sie nach Anwendung eines von Ihnen bereitgestellten Skalers erneut, sodass eine zwischen zwei Ketten driftende Normalisierung nicht unbemerkt bleiben kann.
Es ist bewusst kein Bestandteil dieses Produkts: Es benötigt eine Skaler-Datei, die Ihr eigener Trainingscode erzeugt, und ohne diese weigert es sich, zu laufen. Ein Tool, das beim ersten Öffnen nichts tut, gehört nicht in eine Produktbeschreibung. Der vollständige Quellcode beider Skripte wird zu Referenzzwecken veröffentlicht.
Das Programm führt keine Handelsgeschäfte durch. Es erteilt keine Orders, liest keine Positionen aus und benötigt keine Kontoberechtigungen. Es liest den Verlauf aus und schreibt eine Textdatei.
WAS DER EXPORT SCHREIBT
1. Ein Instrumentenpass, der in den CSV-Header eingefügt wird
Stellenanzahl, Punktwert, Kontraktgröße, Tick-Wert, Tick-Größe sowie das minimale, das Schrittweite- und das maximale Lot werden als Kommentarzeilen am Anfang der Datei geschrieben. Exportieren Sie dasselbe Symbol von zwei Servern und vergleichen Sie die beiden Header Zeile für Zeile.
Dies ist wichtig, da diese Felder nicht immer serverübergreifend identisch sind. Ein Symbol kann auf zwei Servern dieselbe Kontraktgröße und dieselbe Tick-Größe aufweisen, dabei jedoch einen unterschiedlichen Tick-Wert melden, was den Geldwert eines Punktes verändert. Im Terminal gibt es keine Warnung, wenn dies geschieht.
2. Eine jährliche Volumentabelle, die aus den Balken ausgelesen wird
Für jedes im Verlauf enthaltene Jahr gibt das Skript die Anzahl der Balken an, wie viele ein Tick-Volumen ungleich Null aufweisen und wie viele ein reales Volumen ungleich Null aufweisen. Diese Tabelle wird mit CopyRates ausgelesen, nicht aus dem Strategietester.
Beides sind unterschiedliche Dinge. Die „History-Quality“-Balken des Testers beschreiben den von ihm generierten Tick-Stream. Sie sagen nichts über das in den Balken selbst gespeicherte reale Volumen aus. Das Auslesen des einen für das andere führt dazu, dass Merkmale auf einem leeren Feld erstellt werden oder dass ein vorhandenes Feld verworfen wird.
3. Merkmalsspalten, wie sie von MQL5 berechnet werden
Der Export kann auch eine kleine Menge berechneter Eingaben schreiben. Diese dienen nicht zum Training: Sie sind eine Referenz, damit eine in einer anderen Sprache geschriebene Pipeline dieselben Eingaben neu berechnen und Wert für Wert vergleichen kann.
WAS DAS PARITY-SKRIPT TUT
Das zweite Skript liest diese Roh-Eingabewerte aus der Exportdatei zurück und schreibt sie nach Anwendung eines von Ihnen bereitgestellten Skalierers erneut. Es berechnet sie bewusst nicht neu.
Der Grund dafür ist einfach. Wenn eine Prüfung die Eingabewerte neu berechnet, wird letztendlich die Berechnung ein zweites Mal geprüft, anstatt die Normalisierung zu überprüfen, und jede Abweichung in der Tiefe oder im Moment zwischen den beiden Durchläufen wird fälschlicherweise als Fehler mit einem falschen Namen angezeigt. Das Einlesen derselben Zeilen beseitigt diese Mehrdeutigkeit.
Die Scaler-Datei enthält in ihrem Header eigene Stage- und Frame-Kennungen, die vom Skript überprüft werden. Ein Scaler, der nicht übereinstimmt, wird abgelehnt, anstatt stillschweigend verwendet zu werden.
AUCH GEMELDET
- Der tatsächlich gelesene erste und letzte Takt, veröffentlicht statt angenommen.
– Die Anzahl der Warm-up-Balken, die designbedingt als „nan“ ausgegeben werden.
– Die Anzahl der Spalten, die aus dem Skalierer statt aus einer Konstante entnommen wird.
– Zeitstempel in ISO-Reihenfolge, damit ein Parser Tag und Monat nicht verwechseln kann.
HINWEISE UND EINSCHRÄNKUNGEN
– Entwickelt und getestet für den M15-Zeitraum. Andere Zeiträume wurden nicht getestet.
– Die Orderbuchtiefe war bei allen getesteten CFD-Brokern leer. „MarketBookAdd“ wird akzeptiert und gibt nichts zurück.
– Kein Tick wies bei einem der getesteten Broker ein Kauf- oder Verkaufsflag auf, sodass aus diesen Daten kein Order-Flow-Delta messbar ist. Ein aus der Tick-Regel abgeleitetes signiertes Volumen ist eine Schlussfolgerung, keine Messung.
– Stellen Sie vor dem Export in den Terminal-Optionen „Max. Balken im Chart“ auf „unbegrenzt“ ein und scrollen Sie im Chart zurück, damit der Verlauf geladen wird. Ein Skript liest die vom Terminal zwischengespeicherten Daten aus, und die Obergrenze wird ohne Fehlermeldung gekürzt.
BEGLEITSKRIPT, SEPARAT VERÖFFENTLICHT
Ein zweites Skript, ForgeParity, wird zusammen mit diesem als Open Source veröffentlicht. Die Adresse finden Sie im Autorenprofil. Es liest die exportierten Eingaben zurück und schreibt sie nach Anwendung eines von Ihnen bereitgestellten Skalers erneut, sodass eine zwischen zwei Ketten driftende Normalisierung nicht unbemerkt bleiben kann.
Es ist bewusst kein Bestandteil dieses Produkts: Es benötigt eine Skaler-Datei, die Ihr eigener Trainingscode erzeugt, und ohne diese weigert es sich, zu laufen. Ein Tool, das beim ersten Öffnen nichts tut, gehört nicht in eine Produktbeschreibung. Der vollständige Quellcode beider Skripte wird zu Referenzzwecken veröffentlicht.
