Backtest Robustness Checker
- Indicatori
-
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 - Versione: 1.1
- Attivazioni: 5
Backtest Robustness Checker è un indicatore per MetaTrader 5 che legge un elenco delle vostre operazioni chiuse e mostra come cambiano le statistiche quando le stesse operazioni arrivano in un ordine diverso, quando mancano alcune operazioni o quando si tolgono i guadagni più grandi. Le operazioni possono provenire dalla cronologia del conto, da un report del Tester delle strategie o del conto salvato in HTML, oppure da un semplice file CSV. I risultati compaiono in un pannello sul grafico e possono essere salvati in CSV.
Mostra solo statistiche di operazioni passate. Non prevede né garantisce risultati futuri, non dice se una strategia o un EA è buono, redditizio o "robusto", e non dà alcun verdetto "promosso / bocciato". Un valore Monte Carlo come "95° percentile del drawdown massimo" descrive copie rimescolate delle vostre operazioni passate; non è la probabilità di un drawdown futuro. Come usare i numeri è una vostra decisione.
Sola lettura: non apre, modifica o chiude mai ordini e non dà segnali di acquisto o vendita. Nel Tester delle strategie (e nel controllo automatico del Market) non ci sono operazioni vostre, quindi mostra DATI DI ESEMPIO integrati (SAMPLE DATA), segnalati in arancione come "not real" (non reali).
Funzionalità
- Tre fonti di dati: cronologia del conto (filtro per magic number, simboli e data di chiusura), un file in MQL5\Files (un report MT5 salvato in HTML, o un CSV) oppure l'esempio integrato di 400 operazioni dimostrative.
- Ordine originale: operazioni, profitto netto, profit factor, percentuale di vincite, risultato medio per operazione, drawdown massimo (importo e %), massimo di perdite consecutive, periodo più lungo sotto il massimo (in operazioni).
- Ordine rimescolato (Monte Carlo): le stesse operazioni in ordine casuale, ripetuto (1.000 volte di default). Minimo, 5%, 25%, 50%, 75%, 95% e massimo di drawdown massimo, drawdown massimo in %, massimo di perdite consecutive e periodo più lungo sotto il massimo; la quota di rimescolamenti con un drawdown almeno pari all'originale; la quota sopra un drawdown in % da voi impostato; un istogramma.
- Rimozione casuale di operazioni: ogni passaggio toglie ogni operazione con la probabilità impostata (10% di default) e mantiene il resto nell'ordine originale. Percentili di profitto netto, profit factor, drawdown massimo e operazioni rimaste, la quota di passaggi con profitto netto <= 0 e un istogramma.
- Rimuovere i guadagni più grandi: profitto netto, profit factor e drawdown massimo senza le K operazioni vincenti più grandi (5 di default).
- Tabella annuale (operazioni, % vincite, netto, PF, DD massimo nell'anno, serie di perdite più lunga, media) e tabella mensile del profitto netto, in base all'orario di chiusura. Le tabelle lunghe sono divise in pagine.
- Esportazione CSV (pulsante): impostazioni, tutte le statistiche, percentili, tabelle annuale e mensile, l'elenco delle operazioni e, come opzione, una riga per simulazione. Salvato in MQL5\Files.
- Seed casuale fisso: gli stessi dati, impostazioni e seed danno sempre lo stesso risultato.
- Pannello in inglese o giapponese (automatico secondo la lingua del terminale), colori chiari o scuri secondo lo sfondo del grafico, qualsiasi angolo, tre dimensioni, comprimibile. Più copie sullo stesso grafico vengono impilate.
Parametri principali
- Trades to analyze: fonte dei dati; conto: magic number, simboli, chiuse dal / al, includere commissioni, oneri e swap; file: nome in MQL5\Files, leggere dalla cartella Files comune; saldo iniziale per il DD in % (0 = automatico).
- Simulation: numero di simulazioni (10-100000, default 1000), seed casuale (default 12345), quota di operazioni rimosse (1-90 %, default 10), numero di guadagni più grandi rimossi (0-1000, default 5), contare le simulazioni con DD massimo sopra questa % (default 20, 0 = disattivato).
- Panel: pagina mostrata per prima, righe per pagina, lingua, angolo, distanze, dimensione, colori, avvio compresso, pulsante CSV, CSV con una riga per simulazione, ricalcolare quando si chiudono nuove operazioni.
- 27 parametri in 4 gruppi.
Come viene calcolato
- Risultato di un'operazione = profitto + commissioni e oneri + swap (per la cronologia del conto i costi possono essere esclusi). Un'operazione è una vincita o una perdita quando si discosta da zero di più della metà della più piccola unità di valuta (file ed esempio: 0,005), altrimenti è in pareggio. Profit factor = profitto lordo / perdita lorda.
- Curva del saldo = saldo iniziale + risultato cumulato delle operazioni in ordine di chiusura. Drawdown massimo = la discesa più grande da un massimo precedente; drawdown massimo in % = quella discesa divisa per il saldo al massimo. Posizioni aperte e risultati fluttuanti non sono inclusi.
- Saldo iniziale (automatico): cronologia del conto = il saldo del conto subito prima della chiusura della prima operazione selezionata; HTML = le righe balance prima della prima operazione; esempio = 10.000. Depositi e prelievi successivi alla prima operazione non vengono aggiunti alla curva, quindi il denominatore del DD in % non li include. Il parametro "Starting balance for DD %" sostituisce il valore automatico.
- Cronologia del conto: un'operazione = una posizione (le chiusure parziali appartengono alla stessa operazione, un Close By di due posizioni è un'operazione, un'inversione in netting viene divisa).
- Report HTML: un'operazione = un deal di chiusura (out, in/out, out by) nella tabella Deals. Ogni chiusura parziale conta come un'operazione separata, quindi il numero di operazioni, la percentuale di vincite e il PF possono differire leggermente dalla cronologia del conto delle stesse operazioni. Un report non contiene ID di posizione, quindi ogni deal di chiusura viene abbinato al volume aperto secondo una regola (stesso simbolo, direzione opposta; il deal di apertura più vecchio con esattamente lo stesso volume residuo, altrimenti first in, first out). Con posizioni in hedging di volumi diversi questo abbinamento è una stima, così come la quota di commissioni e swap di apertura attribuita a ogni operazione. I totali sono esatti.
- CSV: una riga per operazione, "ora,profitto" (virgola, punto e virgola o tabulazione; ora come YYYY.MM.DD HH:MM o YYYY.MM.DD HH:MM:SS, accettati anche "-" o "/"), oppure una sola colonna di profitto (in tal caso niente tabelle annuale e mensile). Solo "." come separatore decimale, nessun separatore delle migliaia. Le righe sono usate nell'ordine del file. Una prima riga illeggibile è trattata come intestazione; le altre righe illeggibili sono contate come righe saltate; le righe che iniziano con # sono ignorate. Un CSV non contiene il saldo: impostate il saldo iniziale nei parametri per vedere il DD in %.
- Se il saldo iniziale è sconosciuto, il pannello mostra "unknown" (sconosciuto) e non vengono calcolati valori di DD in %. Gli importi restano visibili.
- Rimescolamento: ogni volta Fisher-Yates a partire dall'ordine originale. Rimozione: un numero casuale per operazione. Numeri casuali: splitmix64 dal seed (la rimozione usa seed + 1). Percentili: interpolazione lineare.
- Limite di calcolo: simulazioni x operazioni resta al massimo a 100 milioni per tipo di simulazione. Oltre, il numero di simulazioni viene ridotto automaticamente (almeno 10) e il pannello lo indica. Per esempio, 50.000 operazioni vengono calcolate con 2.000 simulazioni. I calcoli grandi procedono a passi con una riga di avanzamento, così il grafico non si blocca.
Note e limiti
- Solo statistiche di operazioni passate. Non sono una previsione, una garanzia, un test "promosso / bocciato" di una strategia, un segnale di trading o un consiglio.
- Il rimescolamento e la rimozione trattano ogni operazione come un importo fisso che non dipende dalle altre operazioni. Per i sistemi in cui le operazioni dipendono l'una dall'altra o dal saldo (per esempio grid, martingala, mediazione o dimensione del lotto che cresce con il saldo), i risultati simulati possono essere molto lontani da ciò che un tale sistema potrebbe davvero fare.
- Un risultato di backtest dipende dalle impostazioni del test (periodo, simbolo, spread, commissioni, modello dei tick). Questo strumento legge solo il risultato che gli fornite e non verifica come è stato fatto il test.
- I report .xlsx (Open XML / Excel) non possono essere letti. Salvate il report in HTML o usate un CSV. I file oltre 64 MB non vengono letti e si usano al massimo 2.000.000 di operazioni.
- Si possono leggere solo i file dentro MQL5\Files (o nella cartella Files comune). Il nome del file non deve contenere ".." né ":".
- I nomi predefiniti dei report MT5 contengono il numero di conto (per esempio ReportTester-12345678.html). Il pannello e il CSV esportato mostrano il nome del file, quindi rinominate il file prima di fare screenshot o di condividere il CSV.
- Le tabelle annuale e mensile usano l'orario di chiusura così come è scritto nei dati (orario del server per i report e la cronologia MT5).
- Nel Tester delle strategie la fonte "Account history" non ha operazioni vostre, quindi vengono mostrati DATI DI ESEMPIO e il pulsante CSV è nascosto. Per i vostri dati usatelo su un grafico normale.
Compatibilità e supporto
- Solo MetaTrader 5. Conti hedging e netting, qualsiasi simbolo e timeframe (il simbolo del grafico non conta).
- Nessuna DLL, nessun accesso a Internet. Scrive un file solo quando premete il pulsante CSV.
- Supporto tramite messaggi MQL5, risposta entro 3 giorni lavorativi: installazione, impostazioni, caricamento dei file e segnalazione di errori. Non possiamo giudicare se la vostra strategia o il vostro EA è buono, interpretare i vostri risultati come consiglio, dare opinioni sul mercato né prendere decisioni di trading al posto vostro.
- Nessun risultato del vostro trading è promesso o sottinteso.
