In diesem Artikel
Nach diesem Artikel kannst du …
- Dokumentiertes Grafikverhalten von einer konkreten EA-Diagnose trennen.
- Fehlende Eingaben von echten Nullwerten und falschen Bedingungen unterscheiden.
- Modusflags mit einem eigenständigen Logger erfassen.
- Die erste Abweichung eines kontrollierten Laufpaars zuordnen.
Begriffe direkt erklärt
Backtesting Expert Advisor (EA)Ein sichtbarer Chart kann eine Eingabeabhängigkeit verdecken: Das Programm liest einen Linienpreis oder Schaltflächenzustand, statt einen ausdrücklich berechneten Wert zu verwenden. Vor einer Strategieänderung brauchst du einen Vergleich beider Umgebungen und die erste dokumentierte Abweichung. Ein besserer Endgewinn identifiziert diese Stelle nicht.
Was sich im visuellen Modus unterscheiden kann
Die MQL5-Tester-Dokumentation erklärt, dass grafische Objekte außerhalb visueller Tests nicht gezeichnet werden; Abfragen entsprechender Eigenschaften liefern Nullwerte. Für visuelle Tests gilt diese Einschränkung nicht. Das ist dokumentiertes Plattformverhalten und kein hier durchgeführtes Experiment mit deinem EA. Andere Ursachen für abweichende Tests bleiben möglich.
Wenn eine Linie als Eingang für die Entscheidung dient, protokolliere diesen Schritt getrennt von Kurs- oder Indikatorabfragen. Prüfe zuerst, ob der erwartete Wert in diesem Modus überhaupt verfügbar ist. Ein eigener Status „nicht verfügbar“ kann die Auswertung stoppen, bevor eine technische 0 als echter Preis in eine Formel gelangt. Ein sichtbarer Chart bestätigt umgekehrt nicht die Bereitschaft sämtlicher Eingaben.
Zahlenwert und Chartobjekt trennen
Unser selbst entworfenes Modell setzt einen positiven Signalwert 1,1050 und eine Grenze 1,1040. Die Regel lautet: Signalwert größer als Grenze. Das sind symbolische Werte, keine MT5-Notierungen oder Ausführungsprotokolle. Der ausdrückliche Zahlenpfad ergibt wahr. Der nicht verfügbare Objektpfad wird als null gekennzeichnet und nicht verglichen. Eine getrennte fehlerhafte Variante setzt 0 ein und erhält 0 > 1,1040: falsch.
Der gültige Vergleich kann falsch sein; bei fehlender Eingabe findet er gar nicht statt.
- Ausdrücklicher Zahlenwert
- 1,1050 > 1,1040: wahr – Gültige Modellzahlen
- Objekt nicht verfügbar
- null → nicht auswertbar – Eigener Fehlstatus, kein MT5-Rückgabewert
- Fehlerhafter Ersatz
- 0 > 1,1040: falsch – Verdeckt die fehlende Eingabe
„Falsch“ und „nicht auswertbar“ sind unterschiedliche Informationen. Beim umgekehrten Vergleich „kleiner als Grenze“ würde die eingesetzte 0 sogar eine scheinbar wahre Bedingung erzeugen. Ein willkürlicher Ersatzwert repariert die Eingabe deshalb nicht.
Daten und Chartobjekt trennen
Das Lehrbeispiel läuft lokal im Browser. Es verbindet sich mit keinem Konto und keiner API, versendet keine Eingaben und speichert sie nicht dauerhaft. Gib keine Passwörter oder personenbezogenen Angaben ein.
Du kannst zwei positive Werte und den Modellmodus ändern. Im angenommenen visuellen Modus enthält das Objekt den Signalwert, im nicht visuellen Modus ist es ausdrücklich nicht verfügbar. Die Seite liest keinen Chart, führt keinen Plattformtest aus und erteilt keine Order. Die technischen Eingaben verlangen einen Dezimalpunkt, Werte zwischen 10⁻⁸ und 10⁸ und bis zu 15 Ziffern; Fließtext verwendet das deutsche Dezimalkomma.
Prüfe auch gleiche Werte: 1,1040 > 1,1040 ist falsch, während ein fehlendes Objekt weiterhin unbekannt bleibt. Du kannst das lokale Ergebnis als TXT herunterladen. Die Simulation stellt einen selbst definierten Datenfluss dar; sie behauptet nicht, dass MT5-Objektfunktionen tatsächlich null zurückgeben. Deren dokumentierten Nullwert trennt sie gerade von unserem eigenen Status für fehlende Daten.
Programmmodus ohne Handelsoperationen erfassen
MQL_TESTER, MQL_VISUAL_MODE und MQL_OPTIMIZATION beschreiben die Programmausführung; TERMINAL_BUILD bezeichnet die Terminalversion. Zeichne tatsächliche Lesewerte auf, statt sie aus der Fensteransicht zu erraten. Die Flags allein belegen noch keine identischen Daten oder Parameter.
Dieser kleine eigenständige Diagnose-EA schreibt in OnInit die Konfiguration. OnTick bleibt leer; der Code sendet und ändert keine Orders. Speichere ihn separat als MQ5-Datei, kompiliere ihn in deinem MetaEditor und bewahre das tatsächliche Compilerergebnis sowie die Protokolle auf. Hier wurde kein Terminaltest auf deinem Rechner ausgeführt.
#property strict
int OnInit()
{
PrintFormat("tester=%d visual=%d optimization=%d build=%d symbol=%s period=%d",
(int)MQLInfoInteger(MQL_TESTER),
(int)MQLInfoInteger(MQL_VISUAL_MODE),
(int)MQLInfoInteger(MQL_OPTIMIZATION),
(int)TerminalInfoInteger(TERMINAL_BUILD),
_Symbol, (int)_Period);
return INIT_SUCCEEDED;
}
void OnTick() {}
Füge nicht einen zweiten OnInit-Handler in einen bestehenden EA ein und ersetze dessen Initialisierung nicht unbesehen. Zusätzliche Protokollierung muss den vorhandenen Ablauf erhalten. Für PrintFormat nennt die Tester-Dokumentation eine OnInit-Ausnahme während der Optimierung. Fehlende Ausgabe anderer Stufen beweist deshalb nicht automatisch, dass diese Stufen nie ausgeführt wurden.
Den ersten unterschiedlichen Verarbeitungsschritt finden
Erstelle einen Nachweis für beide Läufe: visueller oder nicht visueller Modus, Terminal- und Codeversion, Eingaben, Symbol, Zeitrahmen, Tickmodell, gewünschter und tatsächlicher Start, Datensnapshot, Kosten und Anfangszustand. Bewahre Einstellungsdateien und Versionsidentifikatoren auf. Unbestätigte Angaben bleiben markiert. Der Vergleich zweier Backtests organisiert diese Prüfung.
Suche dann die früheste Stufe mit unterschiedlichem Wert oder Status: Abruf erfolgreich, Datenzeit, Indikator bereit, Signalwert, Bedingung, Entscheidung. „Gewinn 120 statt 80“ ist kein Beleg für die Fehlerstelle. Erhalte ursprüngliche Logs und ergänze daneben eine kleine Vergleichstabelle. Werte, die das Programm damals nicht erfasste, dürfen nicht rückblickend erfunden werden.
Ein Beobachtungsidentifikator mit angefragter Eingabe und Zeitstempel oder Sequenzposition hilft, dieselben Verarbeitungsschritte zuzuordnen. Ähnliche Preise sind kein sicherer Ereignisschlüssel. Protokolliere auch, ob das Programm die Eingabe akzeptierte. Ungeordnetes Vollprotokollieren kann den ersten Unterschied schwerer sichtbar machen; ein kleines stabiles Schema unterstützt die Untersuchung, garantiert aber keine automatische Aufdeckung jeder Abhängigkeit.
Den Signalentwurf kontrolliert ändern
Die Berechnung sollte einen ausdrücklichen Wert samt Verfügbarkeitsstatus zurückgeben. Die grafische Ebene kann diesen Wert anschließend anzeigen. Das Abschalten einer Zeichnung muss dann nicht absichtlich die Eingabequelle wechseln. Prüfe dasselbe Modul mit gültigen, fehlenden und genau grenzgleichen Eingaben.
Damit bearbeitest du eine mögliche Ursache. Daten, Kosten, Versionen und andere Codeabhängigkeiten können ganze Testergebnisse weiter unterscheiden. Ändere jeweils einen nachvollziehbaren Bestandteil und vergleiche die erste Abweichung erneut. Ohne Quellcode gibst du dem Autor den Nachweis beider Läufe und die erste belegte Differenz, nicht eine Folge versuchsweiser Live-Orders. Die MT4-/MT5-Testvorbereitung erklärt den größeren Prüfrahmen.
Eine kleine Diagnose abschließen
Bewahre zunächst ein kontrolliertes Laufpaar auf. Untersuche in der lokalen Simulation Signal 1,1050 und Grenze 1,1040 sowie Gleichheit, ohne Handelskonto. Erfasse danach in einer getrennten Demo- oder Testerumgebung die nötigen nicht handelnden Diagnoseeinträge und ordne ihre Sequenzen zu. Erst wenn Eingabe, Verfügbarkeit und Bedingung getrennt erklärt sind, lässt sich die vermutete Abhängigkeit bewerten. Auch eine gelöste Diagnose beweist weder Sicherheit des gesamten EA noch künftige Profitabilität.
- Bewahre ein kontrolliertes Laufpaar mit gleichen Regeln, Daten und Zeiten auf und untersuche lokal das Signal 1,1050 gegen die Grenze 1,1040. Dokumentiere verfügbare Eingabe und Booleschergebnis getrennt; dieser erste Vergleich benötigt kein Handelskonto und erklärt noch nicht jeden Unterschied eines vollständigen EA.
- Prüfe den Gleichheitsfall 1,1040 und einen ausdrücklich fehlenden Wert gesondert. Halte fest, dass Gleichheit ein striktes Größer-als nicht erfüllt und eine Nullersetzung eine andere Rechnung erzeugt; das Ergebnis soll Verfügbarkeit und Bedingung unterscheiden, statt einen Fehlerwert zum echten Signal zu machen.
- Erfasse in einer getrennten Demo- oder Testerumgebung nur die nötigen nicht handelnden Diagnoseeinträge und ordne ihre Sequenzen zu. Vergleiche Eingabe, Verfügbarkeit und Bedingung zuerst einzeln; eine geklärte visuelle Abhängigkeit bestätigt weder Sicherheit des ganzen EA noch realistische Ausführung oder künftige Profitabilität.
Prüfe dein Verständnis
Etwa 3 Minuten Übung.
Antwort und Erklärung anzeigen
Gleichheit erfüllt > nicht. Ein fehlender Wert liefert keine Vergleichsentscheidung.
Weitere Fragen
Liefern MT5-Objektfunktionen tatsächlich null wie die Simulation?
Nein. Die Plattformdokumentation beschreibt Nullwerte bei entsprechenden Eigenschaftsabfragen außerhalb visueller Tests. null ist die eigene Darstellung nicht verfügbarer Eingabe in unserem Lehrmodell. Für einen echten EA musst du Funktion, Erfolg, Modus und erwartete Daten prüfen. Die Simulation erklärt eine Abhängigkeit und bildet nicht das gesamte Verhalten der MQL5-Funktionen ab.
Bedeutet eine wahre Modellbedingung, dass ein EA handelt?
Nein. Die Seite vergleicht zwei deklarierte positive Zahlen und verbindet sich mit keinem Terminal oder Konto. Eine wahre Bedingung belegt weder weitere Kriterien, Datenbereitschaft, Erlaubnisse noch Orderausführung. Diese Stufen sind auch in einem echten EA getrennt zu kontrollieren. Das Lehrmodell erzeugt kein Handelssignal und beweist keine Wirksamkeit eines Programms.
Garantiert das Entfernen grafischer Objekte gleiche Testergebnisse?
Nein. Es kann eine vermutete Zeichnungsabhängigkeit beseitigen, während Versionen, Parameter, Datensnapshots, Tickmodelle, Kosten und Anfangszustände weiter relevant bleiben. Bewahre beide Läufe auf und suche die erste unterschiedliche Eingabe oder Berechnung. Ein höherer Endgewinn erklärt die Ursache nicht. Ohne aufgezeichnete Belege lässt sich eine Differenz nicht zuverlässig einem einzelnen Bestandteil zuweisen.
Ist der kleine Logger ein einsatzfertiger Handelsroboter?
Er ist ein eigenständiges Diagnosebeispiel: Konfiguration in OnInit, leeres OnTick, keine Orderanforderung und kein Positionsmanagement. Kompiliere eine eigene Datei und erhalte das tatsächliche Ergebnis. Ersetze keine vorhandene Initialisierung und füge keinen zweiten OnInit-Handler hinzu. Der Logger erfasst Modusflags; er bestätigt weder die Sicherheit noch die Profitabilität eines anderen EA.
Quellen und Nachvollziehbarkeit
- MQL5 — Testen von Handelsstrategien
Testerumgebung,Dateien,globaleVariablen undchronologischesTestverhalten.
- MetaQuotes: MQL5-Programmeigenschaften
MQL_TESTER, MQL_VISUAL_MODE und MQL_OPTIMIZATION für tatsächlich gelesene Modusflags.
- MetaQuotes: OnInit
Signatur und INIT_SUCCEEDED des eigenständigen Diagnoseloggers.
- MetaTrader5 — Besonderheiten des Strategietesters
Agenten,Initialisierung undTestumgebung vomlokalenTerminal unterscheiden.
Rechenfälle sind ausdrücklich angenommene Beispiele. Sie ersetzen weder aktuelle Marktdaten noch die Spezifikation deines Anbieters.
