Backtest Robustness Checker
- Indikatoren
-
Kazuma Uezono
MQL5 / MQL4 / Pine Script v6 developer and active trader.
Seller on the MQL5 Market (indicators for MT4/MT5).
Services:
- TradingView Pine Script to MT5/MT4 conversion (bar-by-bar matching, with tester report)
- MT4 to MT5 migration - Version: 1.1
- Aktivierungen: 5
Backtest Robustness Checker ist ein Indikator für MetaTrader 5, der eine Liste Ihrer geschlossenen Trades liest und zeigt, wie sich die Statistik ändert, wenn dieselben Trades in anderer Reihenfolge kommen, wenn einige Trades fehlen oder wenn die größten Gewinne herausgenommen werden. Die Trades können aus Ihrer Kontohistorie, aus einem als HTML gespeicherten Bericht des Strategietesters oder des Kontos oder aus einer einfachen CSV-Datei stammen. Die Ergebnisse erscheinen in einem Panel auf dem Chart und können als CSV gespeichert werden.
Er zeigt nur Statistiken vergangener Trades. Er sagt keine zukünftigen Ergebnisse voraus und garantiert keine, er sagt Ihnen nicht, ob eine Strategie oder ein EA gut, profitabel oder „robust“ ist, und er gibt kein Urteil „bestanden / nicht bestanden“. Ein Monte-Carlo-Wert wie „95. Perzentil des maximalen Drawdowns“ beschreibt gemischte Kopien Ihrer vergangenen Trades; er ist nicht die Wahrscheinlichkeit eines künftigen Drawdowns. Wie Sie die Zahlen nutzen, entscheiden Sie selbst.
Nur Lesen: Er eröffnet, ändert oder schließt niemals Orders und gibt keine Kauf- oder Verkaufssignale. Im Strategietester (und bei der automatischen Prüfung des Markets) gibt es keine eigenen Trades, daher zeigt er eingebaute BEISPIELDATEN (SAMPLE DATA), orange als „not real“ (nicht echt) gekennzeichnet.
Funktionen
- Drei Datenquellen: Kontohistorie (Filter nach Magic Numbers, Symbolen und Schließungsdatum), eine Datei in MQL5\Files (ein als HTML gespeicherter MT5-Bericht oder eine CSV) oder das eingebaute Beispiel mit 400 Demo-Trades.
- Ursprüngliche Reihenfolge: Trades, Nettogewinn, Profitfaktor, Trefferquote, durchschnittliches Ergebnis pro Trade, maximaler Drawdown (Betrag und %), maximale Verluste in Folge, längste Phase unter dem Hoch (in Trades).
- Gemischte Reihenfolge (Monte Carlo): dieselben Trades in zufälliger Reihenfolge, wiederholt (Standard 1.000-mal). Minimum, 5 %, 25 %, 50 %, 75 %, 95 % und Maximum von maximalem Drawdown, maximalem Drawdown in %, maximalen Verlusten in Folge und längster Phase unter dem Hoch; Anteil der Durchläufe mit einem Drawdown mindestens so groß wie der ursprüngliche; Anteil über einem von Ihnen gesetzten Drawdown in %; ein Histogramm.
- Zufälliges Entfernen von Trades: Jeder Durchlauf entfernt jeden Trade mit der eingestellten Wahrscheinlichkeit (Standard 10 %) und behält den Rest in der ursprünglichen Reihenfolge. Perzentile von Nettogewinn, Profitfaktor, maximalem Drawdown und verbliebenen Trades, Anteil der Durchläufe mit Nettogewinn <= 0 und ein Histogramm.
- Größte Gewinne entfernen: Nettogewinn, Profitfaktor und maximaler Drawdown ohne die K größten Gewinntrades (Standard 5).
- Jahrestabelle (Trades, Trefferquote, Netto, PF, max. DD innerhalb des Jahres, längste Verlustserie, Durchschnitt) und Monatstabelle des Nettogewinns, nach Schließungszeit. Lange Tabellen werden auf Seiten verteilt.
- CSV-Export (Schaltfläche): Einstellungen, alle Statistiken, Perzentile, Jahres- und Monatstabellen, die Tradeliste und optional eine Zeile pro Simulation. Gespeichert in MQL5\Files.
- Fester Zufalls-Seed: dieselben Daten, Einstellungen und derselbe Seed ergeben immer dasselbe Ergebnis.
- Panel auf Englisch oder Japanisch (automatisch nach Terminalsprache), helle oder dunkle Farben nach dem Charthintergrund, beliebige Ecke, drei Größen, einklappbar. Mehrere Kopien auf einem Chart werden untereinander angeordnet.
Wichtige Eingaben
- Trades to analyze: Datenquelle; Konto: Magic Numbers, Symbole, geschlossen ab / bis, Kommission, Gebühren und Swap einbeziehen; Datei: Name in MQL5\Files, aus dem gemeinsamen Files-Ordner lesen; Startguthaben für DD in % (0 = automatisch).
- Simulation: Anzahl der Simulationen (10-100000, Standard 1000), Zufalls-Seed (Standard 12345), Anteil entfernter Trades (1-90 %, Standard 10), Anzahl entfernter größter Gewinne (0-1000, Standard 5), Simulationen mit max. DD über diesem % zählen (Standard 20, 0 = aus).
- Panel: zuerst gezeigte Seite, Zeilen pro Seite, Sprache, Ecke, Abstände, Größe, Farben, eingeklappt starten, CSV-Schaltfläche, CSV mit einer Zeile pro Simulation, neu berechnen, wenn neue Trades schließen.
- 27 Eingaben in 4 Gruppen.
Berechnung
- Ergebnis eines Trades = Gewinn + Kommission und Gebühren + Swap (bei der Kontohistorie können Kosten ausgeschlossen werden). Ein Trade ist ein Gewinn oder Verlust, wenn er um mehr als die Hälfte der kleinsten Währungseinheit von null abweicht (Dateien und Beispiel: 0,005), sonst ist er ausgeglichen. Profitfaktor = Bruttogewinn / Bruttoverlust.
- Saldokurve = Startguthaben + kumuliertes Ergebnis der Trades in Schließungsreihenfolge. Maximaler Drawdown = größter Rückgang von einem vorherigen Hoch; maximaler Drawdown in % = dieser Rückgang geteilt durch den Saldo am Hoch. Offene Positionen und schwebende Gewinne/Verluste sind nicht enthalten.
- Startguthaben (automatisch): Kontohistorie = Kontosaldo direkt vor dem Schließen des ersten ausgewählten Trades; HTML = die balance-Zeilen vor dem ersten Trade; Beispiel = 10.000. Ein- und Auszahlungen nach dem ersten Trade werden der Kurve nicht hinzugefügt, daher enthält der Nenner des DD in % sie nicht. Die Eingabe „Starting balance for DD %“ ersetzt den automatischen Wert.
- Kontohistorie: ein Trade = eine Position (Teilschließungen gehören zum selben Trade, ein Close By zweier Positionen ist ein Trade, eine Umkehr bei Netting wird geteilt).
- HTML-Bericht: ein Trade = ein schließender Deal (out, in/out, out by) in der Tabelle Deals. Jede Teilschließung zählt als eigener Trade, daher können Anzahl der Trades, Trefferquote und PF leicht von der Kontohistorie derselben Trades abweichen. Ein Bericht enthält keine Positions-IDs, daher wird jeder schließende Deal nach einer Regel offenem Volumen zugeordnet (gleiches Symbol, Gegenrichtung; der älteste Eröffnungsdeal mit genau demselben Restvolumen, sonst First In, First Out). Bei Hedge-Positionen mit unterschiedlichem Volumen ist diese Zuordnung eine Schätzung, ebenso der jedem Trade zugeteilte Anteil von Eröffnungskommission und Swap. Die Summen sind exakt.
- CSV: eine Zeile pro Trade, „Zeit,Gewinn“ (Komma, Semikolon oder Tabulator; Zeit als YYYY.MM.DD HH:MM oder YYYY.MM.DD HH:MM:SS, „-“ oder „/“ ebenfalls möglich) oder eine einzelne Gewinnspalte (dann keine Jahres- oder Monatstabellen). Nur „.“ als Dezimalzeichen, keine Tausendertrennzeichen. Die Zeilen werden in der Reihenfolge der Datei verwendet. Eine erste nicht lesbare Zeile gilt als Überschrift; andere nicht lesbare Zeilen werden als übersprungene Zeilen gezählt; Zeilen, die mit # beginnen, werden ignoriert. Eine CSV enthält keinen Saldo: Setzen Sie das Startguthaben in den Eingaben, um DD in % zu sehen.
- Ist das Startguthaben unbekannt, zeigt das Panel „unknown“ (unbekannt), und es werden keine DD-%-Werte berechnet. Beträge werden weiterhin angezeigt.
- Mischen: jedes Mal Fisher-Yates von der ursprünglichen Reihenfolge aus. Entfernen: eine Zufallszahl pro Trade. Zufallszahlen: splitmix64 aus dem Seed (Entfernen nutzt Seed + 1). Perzentile: lineare Interpolation.
- Rechengrenze: Simulationen x Trades bleibt pro Simulationsart bei höchstens 100 Millionen. Darüber wird die Anzahl der Simulationen automatisch verringert (mindestens 10), und das Panel weist darauf hin. Zum Beispiel werden 50.000 Trades mit 2.000 Simulationen gerechnet. Große Läufe werden schrittweise mit Fortschrittszeile berechnet, sodass der Chart nicht einfriert.
Hinweise und Grenzen
- Nur Statistiken vergangener Trades. Sie sind keine Prognose, keine Garantie, kein Test „bestanden / nicht bestanden“ einer Strategie, kein Handelssignal und keine Beratung.
- Mischen und Entfernen behandeln jeden Trade als festen Betrag, der nicht von den anderen Trades abhängt. Bei Systemen, in denen Trades voneinander oder vom Saldo abhängen (zum Beispiel Grid, Martingale, Nachkaufen oder eine mit dem Saldo wachsende Lotgröße), können die simulierten Ergebnisse weit von dem entfernt sein, was ein solches System tatsächlich tun könnte.
- Ein Backtest-Ergebnis hängt von den Testeinstellungen ab (Zeitraum, Symbol, Spread, Kommission, Tickmodell). Dieses Werkzeug liest nur das Ergebnis, das Sie ihm geben, und prüft nicht, wie der Test erstellt wurde.
- Berichte im Format .xlsx (Open XML / Excel) können nicht gelesen werden. Speichern Sie den Bericht als HTML oder nutzen Sie CSV. Dateien über 64 MB werden nicht gelesen, und es werden höchstens 2.000.000 Trades verwendet.
- Es können nur Dateien in MQL5\Files (oder im gemeinsamen Files-Ordner) gelesen werden. Der Dateiname darf weder „..“ noch „:“ enthalten.
- Die Standardnamen von MT5-Berichten enthalten die Kontonummer (zum Beispiel ReportTester-12345678.html). Das Panel und die exportierte CSV zeigen den Dateinamen, benennen Sie die Datei daher um, bevor Sie Screenshots machen oder die CSV weitergeben.
- Jahres- und Monatstabellen verwenden die Schließungszeit so, wie sie in den Daten steht (Serverzeit bei MT5-Berichten und Historie).
- Im Strategietester hat die Quelle „Account history“ keine eigenen Trades, daher werden BEISPIELDATEN gezeigt, und die CSV-Schaltfläche ist ausgeblendet. Für Ihre eigenen Daten nutzen Sie ihn auf einem normalen Chart.
Kompatibilität und Support
- Nur MetaTrader 5. Hedging- und Netting-Konten, jedes Symbol und jeder Zeitrahmen (das Chartsymbol spielt keine Rolle).
- Keine DLLs, kein Internetzugriff. Eine Datei wird nur geschrieben, wenn Sie die CSV-Schaltfläche drücken.
- Support über MQL5-Nachrichten, Antwort innerhalb von 3 Werktagen: Installation, Einstellungen, Laden von Dateien und Fehlermeldungen. Wir können nicht beurteilen, ob Ihre Strategie oder Ihr EA gut ist, Ihre Ergebnisse als Beratung auslegen, Markteinschätzungen geben oder Handelsentscheidungen für Sie treffen.
- Es werden keinerlei Ergebnisse Ihres Handels versprochen oder angedeutet.
