„Derselbe Roboter“ kann denselben Dateinamen und trotzdem einen anderen kompilierten Inhalt bedeuten. Auch Daten, Kontrakt und Ausführungsannahmen können sich ändern, während sichtbare Parameter gleich aussehen. Bewahre zwei unterschiedliche Ergebnisse deshalb zuerst als getrennte Läufe. Eine Beschreibung im Manifest hilft beim Vergleich, ersetzt aber die dahinterliegenden Berichte und Archive nicht.

Vor dem erneuten Test beide Stände sichern

Speichere Berichte, Ausführungslisten, Journale und Parametersätze einschließlich des schlechteren Ergebnisses. Eine Equitykurve zeigt weder ersten Fill noch tatsächlichen Testbeginn oder Anzahl der Teilfills. Du brauchst die Verbindung von Einstellungen über Operationen bis zum Endwert.

Unterscheide Einzeltest, Optimierungssuche und spätere Evaluation. Bewahre Terminalbuild, Programm und verwendete Bibliotheken. Ein Dateiname identifiziert keine Bytes. Wer vor dem Archivieren neu kompiliert oder Historie entfernt, erschwert die Rekonstruktion des ursprünglichen Vorgangs.

Vergleiche angeforderten und tatsächlichen Anfang. MetaQuotes beschreibt, dass fehlende vorbereitende Historie den Beginn verschieben kann. Ein ganzer Monat und ein verkürzter Zeitraum sind verschiedene Untersuchungen. Der Datenlückencheck prüft den Export; hier kommen weitere Laufbedingungen hinzu.

Dreizehn Manifestfelder unverändert benennen

Der vorhandene Vergleicher erwartet zwei JSON-Objekte mit denselben dokumentierten Feldnamen. Übersetze die technischen Schlüssel nicht. version ist die Zahl 1 und bezeichnet das Manifestformat, nicht die EA-Version. Andere Werte sind Zeichenfolgen. inputs, costs und initialState dürfen zusätzlich einfache Objekte mit ihren Einstellungen sein.

  • version, platform, build, codeRevision: Format, Plattform, Build und Code samt Abhängigkeiten.
  • inputs, dataSnapshot: Parameter und gesicherter Datenstand.
  • symbolSpecification, executionModel, costs: Kontrakt, Simulation und Kosten.
  • requestedStart, actualStart, end: angeforderte und tatsächliche Zeitgrenzen.
  • initialState: Anfangssaldo, Positionen und relevante Initialisierung.

dataSnapshot kann ein Archivkennzeichen oder separat berechneter Hash sein. „data-v 1“ bleibt eine Deklaration; das Formular liest keine Datei. Auch ein als Hash bezeichneter Codewert wird nicht überprüft. Verbinde Kennzeichen mit den entsprechenden privaten Archiven. Unbekanntes bleibt offen statt eine erfundene Autorität zu erhalten.

Schreibe Zeit mit ausdrücklicher Zone, möglichst einheitlich in UTC. Europe/Berlin am Arbeitsplatz und die Uhr des Handelsservers können abweichen. Ein angehängtes Z konvertiert Serverzeit nicht nach UTC. Derselbe Moment in verschiedenen Formaten wird vom Werkzeug nicht automatisch normalisiert.

Für maschinenlesbare Spezifikationszahlen verwende Dezimalpunkt-Zeichenfolgen, etwa "1.5"; die deutsche Ergebnisdarstellung darf weiterhin Dezimalkomma verwenden. Leere oder ausgelassene Angaben bedeuten unbekannt. Doppelte Schlüssel und nicht dokumentierte oberste Felder werden zurückgewiesen. Ein Datensatz ist auf 64 KiB, acht Ebenen und 2.000 Werte begrenzt. Verschachtelte Zahlen dürfen höchstens 15 signifikante Ziffern haben; unsichere große Ganzzahlen sind ausgeschlossen.

Was der vorhandene Vergleich tatsächlich prüft

Bearbeite die beiden Beispielobjekte und vergleiche Felder, Unterschiede sowie fehlende Deklarationen. Die Auswertung läuft lokal im Browser, sendet Daten nicht weiter, importiert keine Dateien und speichert Einträge nicht dauerhaft. Du kannst Ergebnis zurücksetzen oder herunterladen. Verwende keine Passwörter, Zugangscodes oder persönlichen Angaben.

Das Werkzeug startet weder MT5 noch liest es ein Konto. Gleiche Objekte bedeuten gleiche eingegebene Werte, nicht identische Marktbedingungen oder vollständig beschriebene Umgebung. Ohne JavaScript bleiben Erklärung und Rechenbeispiel nutzbar, der interaktive Vergleich benötigt dagegen die vorhandene Browserfunktion. Prüfe Ergebnisse mit ihren Berichten, statt eine Übereinstimmung als Zertifikat zu behandeln.

Zwei Backtestprotokolle vergleichen

Die Auswertung läuft lokal im Browser. Das Werkzeug sendet keine Daten und speichert sie nicht dauerhaft. Trage keine Passwörter oder persönlichen Angaben ein.

Verwende das dokumentierte Schema mit version: 1. Schreibe Spezifikationszahlen als Zeichenfolgen mit Dezimalpunkt. Leere oder fehlende Felder bedeuten unbekannt. Je Protokoll gilt ein Limit von 64 KiB.

JSON-Format: Felder und Grenzen

version: 1. Weitere unterstützte Felder: platform, build, codeRevision, inputs, dataSnapshot, symbolSpecification, executionModel, costs, requestedStart, actualStart, end, initialState.

Werte auf oberster Ebene sind Zeichenfolgen. inputs, costs und initialState dürfen auch Objekte sein. Leere oder ausgelassene Felder gelten als unbekannt. Doppelte Schlüssel und nicht dokumentierte oberste Felder werden zurückgewiesen. Grenzen: acht Ebenen und 2.000 Werte; verschachtelte Zahlen bis 15 signifikante Ziffern, ohne unsichere große Ganzzahlen. Schreibe Daten mit ausdrücklicher Zeitzone. Der Vergleich ist wörtlich; unterschiedliche Beschreibungen und Datumsformate werden nicht abgeglichen.

Ein Trade mit zwei Kostenannahmen

Eigenes hypothetisches EUR-Modell: ein linearer Vertrag, ein abgeschlossener Trade mit zwei Fills und 10 EUR Preisresultat. Preise, Menge und Zeitraum stimmen überein; Finanzierung und andere Gebühren fehlen. Lauf A nimmt 1 EUR Kommission je Fill an, Lauf B 2 EUR. Es sind Modelleingaben, keine Anbieterpreise.

Zwei Gebührenannahmen,ein PreisresultatZwei Spalten A/B mitgemeinsamen 10 EURPreisgewinn,zwei Fills undkeinenweiteren Kosten;A 1 EURje Fill,B 2 EUR.RECHEN- UND LERNBEISPIELLauf A10−2×1=8 EURLauf B10−2×2=6 EURDifferenz2 EUR
Zwei Gebührenannahmen,ein Preisresultat. Zwei Spalten A/B mitgemeinsamen 10 EURPreisgewinn,zwei Fills undkeinenweiteren Kosten;A 1 EURje Fill,B 2 EUR.

Kommission erklärt2EURUnterschied;Deklarationen bleibenam Berichtzuprüfen.

Lauf A
10−2×1=8 EUR – 1 EURKommission je Fill
Lauf B
10−2×2=6 EUR – 2 EURKommission je Fill
Differenz
2 EUR – Keine Signaländerung angenommen

A ergibt 10−2×1=8 EUR netto, B 10−2×2=6 EUR. Die 2-EUR-Differenz ist unter diesen Annahmen vollständig durch Kommission erklärt. Sie beweist weder schlechtere Signale noch Datenfehler oder Slippage. Der Vergleicher muss den geänderten Kostenbereich markieren; Bedeutung und Wirklichkeit der Deklaration werden weiterhin am Bericht geprüft.

Bei EUR-Feldern kannst du im freien costs-Unterobjekt ausdrücklich commissionPerFillEUR verwenden, zusammen mit fills, financingEUR und otherEUR. Die obersten dreizehn Schlüssel bleiben gleich. Vermische keine USD- und EUR-Beträge in einer Summe. Zwei gleiche Nettowerte können bei anderen Operationen ebenfalls entstehen; der Endsaldo ersetzt keinen Fillvergleich.

Bei gleichen Deklarationen das erste Ereignis suchen

Vergleiche erste abweichende Signalzeit, Symbol, Kursseite, Menge und Eintritts- oder Ausstiegsgrund. Notiere auch Entscheidungen ohne Trade. Ein ähnlicher Endwert kann einen Fehler schon beim ersten Indikatorinput verdecken. Ändere im kontrollierten Folgetest einen dokumentierten Faktor und behalte den vorigen Bericht.

Prüfe Abhängigkeiten und Initialisierung. Die Testerumgebung mit Agenten, Dateien und globalen Variablen unterscheidet sich vom Terminal. Nutzt Code Zufall, dokumentiere dessen Initialisierung. Schiebe Unterschiede nicht pauschal auf Cache und entferne nicht die einzige Datenkopie als ersten Diagnoseschritt.

Ein Manifest kann eine Abhängigkeit auslassen oder Daten falsch beschreiben. Keine Unterschiede im Formular grenzen die Frage ein, schließen diese Möglichkeiten aber nicht aus. Wähle nicht automatisch das bessere Resultat und nenne das schlechtere nicht ohne Beleg einen Plattformfehler. Der MT4/MT5-Testleitfaden behandelt weitere Einstellungen.

Nach dem Vergleich zur Methode zurückkehren

Bei Startverschiebung identifizierst du den ersten verfügbaren Input, bei Gebührenänderung tatsächliche Fills und Buchungen. Ist die Ursache offen, erweitere die Belege. Historische Nettorendite beweist weder korrekte Annahmen noch künftigen Gewinn.

  1. Bewahre beide Laufpakete und ergänze die zwölf RUN-Felder samt Version, insgesamt dreizehn obersten Schlüsseln. Verbinde jede deklarierte Kennung mit dem tatsächlich erhaltenen Archiv; der lokale Vergleich zeigt Unterschiede der Angaben, nicht eigenständig die Echtheit eines Daten-, Symbol- oder Codehashes.
  2. Wähle einen Unterschied und untersuche ihn in einem kurzen kontrollierten Test bei unveränderten übrigen Bedingungen. Rechne im Gebührenmodell acht und sechs EUR netto sowie zwei EUR Differenz nach; erhalte auch Versuche, die deine vermutete Erklärung nicht bestätigen, statt nur passende Wiederholungen zu speichern.
  3. Prüfe bei einem verschobenen Start den ersten verfügbaren Input und bei anderen Gebühren die tatsächlichen Fills samt Buchungen. Wenn die Ursache offen bleibt, ergänze Belege vor der Strategieevaluation; historische Nettorendite bestätigt weder geklärte Annahmen noch einen Handelsvorteil unter späteren Bedingungen.