Backtesting & verifica beginner 13 min di lettura

Come fare un backtest su MT5 (e a quale dei due drawdown del report devi credere)

Fare un backtest su MT5 significa aprire lo Strategy Tester, scegliere i dati e le impostazioni che decidono la risposta, premere Start e leggere il report senza illudersi. Qui trovi un'esecuzione reale citata dall'inizio alla fine e il dato che nessuno controlla: su 23 test pubblicati il drawdown di equity è stato più profondo di quello di saldo tutte e 23 le volte.

Pubblicato · Revisionato

Fai un backtest su MT5 aprendo lo Strategy Tester con View > Strategy Tester (oppure Ctrl+R), scegliendo l’Expert Advisor, il simbolo, il timeframe, l’intervallo di date e il modello di tick, e premendo poi Start. Cinque minuti dopo hai un report. La domanda che scotta non è come arrivarci: è quali dei numeri stampati su quel report significano davvero ciò che pensi.

Questa guida copre entrambe le metà: la procedura e la lettura. È dalla lettura che vengono le prove di questa pagina, perché abbiamo 23 test finiti in archivio e i loro report si contraddicono da soli in un modo che quasi nessuno controlla.

Cosa ottieni da un test finito

L’artefatto è un report in due metà: un blocco di risultati (operazioni, profit factor, drawdown, netto) e l’elenco delle operazioni che ci sta dietro. Contano entrambe, e solo la prima viene citata.

Quello che dovresti poter dire alla fine non è «ha guadagnato 3.023 $». È: questo insieme di regole, su questo simbolo e questo timeframe, su questa finestra, con questo modello di tick, su un conto da 10.000 $, ha prodotto questo numero di operazioni, a questo profit factor, essendo arrivato al massimo così sott’acqua. Ogni pezzo di quella frase è un’impostazione che hai scelto tu, e cambiarne una qualsiasi cambia la risposta. È per questo che qui le impostazioni vengono prima della procedura.

Preparazione: i dati e le impostazioni che decidono la risposta

Ecco un’esecuzione reale che abbiamo lanciato e pubblicato, citata in modo che tu possa tenere gli input e l’output uno accanto all’altro. È il registro dietro Stillwater, una strategia solo long su USD/JPY sul grafico a 5 minuti.

ImpostazioneQuesta esecuzionePerché è impostata così
ExpertStillwater (19 input)Ogni input che il report è stato verificato portare — la superficie che dovresti reinserire per riprodurla
SimboloUSDJPY_DUKAUn simbolo dedicato allo storico dei tick, tenuto separato da quello quotato in tempo reale perché l’esecuzione sia ripetibile
PeriodoM5Il grafico su cui le regole vengono valutate; il filtro di tendenza legge M30 da dentro l’EA
Intervallo di date2019-01-01 → 2026-07-017,5 anni, abbastanza da contenere più di un regime
ModellingEvery tick based on real ticks (Model 4)Tutto ciò che opera dentro la giornata ha bisogno che il percorso intra-barra sia misurato, non interpolato
Deposit10.000 USDFisso su ogni esecuzione qui, così le percentuali di drawdown restano confrontabili
LevaRichiesta 1:500 — girata a 1:100Vedi sotto. Questa riga non è ciò che sembra
OptimisationDisattivataUn singolo passaggio. Cercare parametri è un altro lavoro, con altre trappole

Due di quelle righe meritano più di una cella di tabella.

La qualità dei dati è l’impostazione su cui poggia il risultato. Ogni altra cifra del report viene calcolata sopra la serie di prezzi che il tester ha usato, quindi il valore della qualità di modellazione delimita quanto il resto del report parli davvero della tua strategia. Il registro pubblicato dell’esecuzione qui sopra dichiara il 100% di qualità dello storico su 229 milioni di tick reali, letto direttamente dal report del tester. Un test su dati di barre interpolati avrebbe prodotto un insieme di operazioni diverso, non semplicemente esecuzioni diverse: il tester presume un percorso liscio tra i prezzi che conosce, e una strategia con uno stop stretto opera proprio su quella presunzione. Se non hai letto quali dati tick il tuo terminale possiede davvero per quel simbolo, è la prima cosa da controllare, prima ancora della strategia.

Il campo della leva è una richiesta, non un’impostazione. In tutti e 23 i test in archivio al tester è stato chiesto 1:500 e il test è girato a 1:100 — 0 volte su 23 la cifra richiesta ha avuto effetto. Non è una supposizione ricavata rileggendo il campo: è stata inchiodata misurando il margine che una posizione ha davvero consumato dentro il test, 126,39 USD, che corrisponde al calcolo con leva 100 e non a quello con leva 500. La conseguenza pratica è che un progetto sensibile al margine — una griglia, una martingala, qualunque cosa impili posizioni — può superare un backtest a una leva che non vedrà mai, oppure fallirne uno a una leva che non avrebbe usato. Confronta la cifra del margine nel report con la tua aritmetica, invece di fidarti della casella che hai compilato.

Passo dopo passo: lanciare il test in MT5

  1. Apri View > Strategy Tester (Ctrl+R). Il pannello si aggancia in basso nel terminale, con Settings, Inputs, Agents e Journal come schede.
  2. Nella scheda Settings scegli l’Expert Advisor, poi il Symbol e il Period. Scegli il simbolo che opererai davvero: da lì arriva la specifica, non solo il prezzo, e la dimensione del contratto e le regole di margine cambiano tra le varianti che un broker offre della stessa coppia.
  3. Imposta l’intervallo di date. Usa un periodo personalizzato con date From e To esplicite invece di «Last month», così l’esecuzione è riproducibile da chi legge soltanto il tuo report.
  4. Scegli il modello in Modelling. Every tick based on real ticks per qualsiasi cosa intraday; Every tick generato da barre M1 per i sistemi più lenti; i modelli più grossolani servono a scandagliare parametri, mai a produrre una cifra che pubblichi.
  5. Imposta Deposit, valuta e leva, e lascia Optimisation disattivata al primo passaggio. Annota la leva che hai chiesto: la verificherai contro le cifre di margine del report invece di darla per buona.
  6. Apri la scheda Inputs e leggi ogni valore. È la scheda che si porta dietro in silenzio le modifiche dell’esecuzione precedente, ed è il motivo per cui i nostri registri verificano gli input contro il report finito e non contro il file che credevamo di aver caricato. Un’esecuzione di questo insieme ne porta 362.
  7. Premi Start. Lascia Visual mode spento, a meno che tu non stia facendo il debug della logica d’ingresso: è molto più lento e ti spinge a guardare invece che a misurare.
  8. Quando finisce, apri le schede Results, Graph e Backtest, poi fai clic destro dentro il report e salvalo. È il report salvato, non uno screenshot della curva di equity, la cosa che confronterai più avanti.
  9. Annota la build del terminale insieme al risultato. I nostri 23 test coprono le build 6090 e 6140; due esecuzioni della stessa strategia sotto build diverse non sono automaticamente lo stesso esperimento.
  • Controlla quale storico possiede davvero il simbolo
  • Scegli il modello di tick in base alla durata delle posizioni
  • Imposta simbolo, periodo e un intervallo di date esplicito
  • Leggi ogni valore nella scheda Inputs
  • Lancia un solo passaggio con l’ottimizzazione disattivata
  • Salva il report, non uno screenshot
  • Leggi entrambe le righe di drawdown prima della riga del profitto
L'ordine in cui vanno prese le decisioni — i dati prima delle impostazioni, le impostazioni prima dell'esecuzione

Leggere i risultati: cosa significano davvero i numeri del report

Prendi l’output della stessa esecuzione. Ecco cosa è tornato indietro:

RisultatoValoreCosa deve superare prima che tu prosegua
Operazioni totali416Abbastanza perché la media descriva un campione, non un aneddoto
Profit factor1,28Sopra 1,0 con un margine che sopravvive ai costi che non hai modellato
Profitto netto3.023,01 USDSu un deposito da 10.000 — un rendimento, non un voto
Drawdown di saldo5,82% (747,57)Il calo peggiore sulle operazioni chiuse
Drawdown di equity6,11% (787,60)Il calo peggiore incluse le posizioni aperte — quello che avresti guardato
Win rate60,82%Da solo non significa nulla; leggilo insieme allo stop e al target, qui 100 e 200 pip
Condizioni del test
ID esperimentoEXP-BACKTEST-RUNBOOK-001
ID esecuzionestillwater__gate_v2_duka_realticks__2019-01-01_2026-07-01
Build MT56140
Specifiche di contrattoExness-MT5Trial5
Simbolo / timeframeUSDJPY_DUKA M5
Periodo2019-01-01 – 2026-07-01
ModelloEvery tick based on real ticks (Model 4)
Deposito10,000 USD
Leva richiesta1:500
Leva effettiva1:100
Misurato2026-08-23
Ultima verifica2026-08-25

Tre cose di quel report vengono fraintese di continuo.

Le due righe di drawdown rispondono a due domande diverse. Il drawdown di saldo misura la curva dell’equity sulle sole operazioni chiuse; il drawdown di equity include il flottante sulle posizioni ancora aperte. Sui nostri 23 test la riga dell’equity è stata la più profonda ogni volta, e l’ampiezza dello scarto non è prevedibile dalla descrizione della strategia: il più stretto è stato di 0,04 punti (0,67% contro 0,71%) e il più largo di 11,10 punti (14,52% contro 25,62%, un rapporto di 1,76). Una strategia che chiude in fretta ha uno scarto piccolo. Una che resta dentro un movimento avverso ce l’ha grande, ed è esattamente la strategia di cui hai più bisogno di conoscere il drawdown prima di metterci dei soldi.

23 su 23Test pubblicati in cui il drawdown di equity è risultato più profondo di quello di saldo
11,10 puntiScarto più largo tra le due righe di drawdown in una sola esecuzione — 14,52% contro 25,62%
0 su 23Test in cui la leva chiesta al tester è la leva a cui il test è davvero girato

MT5 stampa ogni drawdown due volte, sotto due definizioni. Il drawdown Maximal è misurato nel momento in cui l’importo era più grande; quello Relative nel momento in cui la percentuale era più grande. Sono istanti diversi della stessa esecuzione, quindi le due cifre non sono due viste dello stesso evento. Dei nostri test, 16 sono registrati sotto la definizione Maximal e 5 sotto Relative — e la pipeline che scrive quei registri si rifiuta di accoppiare una cifra di saldo Maximal con una di equity Relative, perché una pagina che le mostrasse entrambe starebbe confrontando due istanti diversi. Quando citi un drawdown, dichiara insieme a esso la definizione.

I totali del report sono arrotondati, e la sua finestra può non essere la finestra che intendi tu. Ricalcolato dall’elenco pubblicato delle operazioni, il profit factor della stessa esecuzione è 1,2843 e non l’1,28 stampato nel report — innocuo qui, tutt’altro che innocuo quando confronti due candidati che distano tre decimali. Più importante ancora, quell’esecuzione da 416 operazioni si divide in 404 operazioni fino alla data di taglio della pubblicazione, il 2026-04-01, e 12 dopo. Le ultime 12 hanno reso un profit factor di 2,3317. Nessuno dei due numeri è sbagliato: rispondono a domande diverse, e la data di taglio è una data scelta da una persona, non qualcosa che il tester ha stampato. Se hai intenzione di dividere un’esecuzione tra «la parte su cui ho adattato» e «la parte su cui non l’ho fatto», scrivi dove passa la linea prima di guardare la seconda metà. Leggere un report di backtest MT5 fa quella divisione su tutte e 23 le esecuzioni e mostra di quanto si sposta la cifra in evidenza.

Trappole che invalidano un test in silenzio

Migliorarlo: cambia una cosa sola, rilancia, confronta

Il ciclo è volutamente noioso. Cambia una variabile, rilancia e scrivi entrambi i risultati. Due variabili insieme e non puoi attribuire la differenza a nessuna delle due.

L’ordine che ti dà più informazione per esecuzione è questo:

  1. Fai variare la finestra prima della strategia. Lancia 2019–2022 e 2022–2026 separatamente. Se le due metà non concordano, i parametri stanno descrivendo un solo periodo, e nessuna quantità di messa a punto lo risolve.
  2. Fai variare il simbolo. Una regola che funziona su una sola coppia è un fatto su quella coppia. Il nostro insieme comprende gli stessi approcci generali su USD/JPY, EUR/GBP, AUD/CAD, NZD/USD, un indice e una coppia crypto esattamente per questo motivo.
  3. Fai variare il modello di tick. Rilancia il candidato sopravvissuto su un modello più grossolano. Se il risultato crolla, il vantaggio viveva dentro la barra, e il percorso intra-barra è la parte meno affidabile di qualunque simulazione.
  4. Solo a quel punto fai variare i parametri — e tratta ogni impostazione che hai dovuto cercare come un’affermazione più debole di una che hai scelto in anticipo.

Smetti di iterare quando un cambiamento smette di spostare il risultato fuori dal rumore delle esecuzioni precedenti, oppure quando ti accorgi che stai scegliendo le impostazioni per via di ciò che diceva l’ultimo report. La seconda è la vera condizione di arresto, e arriva prima di quanto la gente si aspetti. L’analizzatore di backtest è utile qui perché rilegge le cifre principali di un report salvato, il che rende il confronto tra due esecuzioni un fatto di aritmetica invece che di memoria.

Prossimi passi: fai un forward test prima di andare in reale

Un singolo backtest pulito è il primo di quattro passi, non il traguardo.

Ottimizza, se la regola ha parametri che valga la pena cercare. Registra tutto l’intervallo di ricerca, non il passaggio vincente: un risultato che hai dovuto cercare è una prova sulla ricerca, e l’intervallo è ciò che dice a chi legge quanto a fondo hai guardato. L’ottimizzazione dei parametri percorre quel passaggio e legge le nostre otto ricerche registrate: 116 combinazioni, e nemmeno un’impostazione che fossimo disposti ad adottare.

Poi fai walk-forward. Adatta su un segmento, misura sul successivo, e ripeti. È l’unico dei quattro passi che attacca direttamente l’overfitting, ed è per questo che vale più di un backtest più lungo.

Poi fai un forward test su un conto demo. È qui che latenza, requote e vero allargamento dello spread entrano finalmente nell’esperimento. Fallo girare abbastanza a lungo da vedere la strategia perdere e recuperare, perché il numero che ti serve davvero non è il rendimento: è se riesci a restare seduto attraverso il drawdown che hai misurato qui sopra.

Poi decidi. Scrivi in anticipo la perdita che ti farebbe spegnere tutto. Uno stop che imposti prima di versare è una decisione; uno che imposti durante un drawdown è una reazione.

Se prima di lanciare il tuo vuoi un riferimento già lavorato, ogni scheda del catalogo di EA pubblicati porta l’elenco completo delle operazioni chiuse, entrambe le righe di drawdown e il manifesto di esecuzione che ci sta dietro, e come testiamo descrive lo standard a cui quei registri sono tenuti. Il resto delle guide al backtesting entra più a fondo nei passi di ottimizzazione e di walk-forward che questa pagina si limita a indicare. Qui niente promette un risultato: ogni cifra di questa pagina descrive esecuzioni che sono già avvenute.

Domande frequenti

Quanto deve essere lungo il periodo di backtest?
Abbastanza lungo perché la strategia abbia operato attraverso condizioni che incontrerà di nuovo, il che è una domanda sul numero di operazioni più che sulla lunghezza del calendario. Dei 23 test pubblicati qui, 22 partono dal 2019-01-01 e la finestra mediana è di 7,5 anni — ma la frequenza di campionamento dentro quelle finestre va da 14,2 operazioni all'anno a 945,1. Una finestra di sette anni su una strategia lenta può comunque essere un campione da cento operazioni, e cento operazioni sono poche per trarne una conclusione. Leggi prima il numero di operazioni e poi l'intervallo di date.
Perché i risultati del mio backtest cambiano quando rilancio lo stesso test?
Quasi sempre perché è cambiato lo storico dei prezzi, non la strategia. Il tester scarica e mette in cache lo storico simbolo per simbolo, quindi una prima esecuzione su una finestra i cui primi anni non erano ancora archiviati produce una serie di tick diversa da una seconda esecuzione fatta dopo che i buchi sono stati riempiti. Il modello di tick fa la stessa cosa in modo più visibile: passare da Every tick based on real ticks a Every tick generated from M1 bars cambia quali operazioni scattano, non soltanto i loro prezzi di esecuzione. Registra il modello e la build del terminale insieme al risultato, altrimenti due tue esecuzioni diventano inconfrontabili.
Lo Strategy Tester include spread, commissioni e swap?
Applica quello che i dati di prezzo e la specifica del simbolo si portano dietro, che non è la stessa cosa che scegliere tu quei costi. Nei 23 test pubblicati qui la commissione è risultata zero in tutti quanti, e un solo test può dichiarare il proprio spread medio — 19,14 punti, e solo perché un EA registratore girava dentro il test insieme alla strategia. Tutto il resto ha ereditato lo spread portato dallo storico senza registrarlo. Se un costo conta per il tuo risultato, misuralo dentro il test invece di presumere che il tester lo abbia modellato.
Un buon backtest basta per far girare un EA su un conto reale?
No. Un backtest delimita ciò che un insieme di regole avrebbe fatto su prezzi registrati, sotto un modello di esecuzione simulato. Non contiene latenza, non contiene requote e non contiene nessuno degli allargamenti di spread che arrivano esattamente quando scatta un segnale. L'ordine che funziona è: backtest, poi ottimizzazione se la regola ha parametri che valga la pena cercare, poi una verifica walk-forward su dati che la ricerca non ha mai visto, poi un conto demo tenuto abbastanza a lungo da vedere la strategia perdere e recuperare. I risultati passati descrivono il passato, e niente in questa pagina è una previsione.