Per fare il backtest di un Expert Advisor in MT4, carica lo storico dei prezzi nell'History Center (F2), apri lo Strategy Tester (Ctrl+R), scegli EA, simbolo, periodo, modello e spread, premi Start e leggi la scheda Report. Un buon report da solo dimostra poco: il tester di MT4 ignora spread variabile, velocità di esecuzione e slippage, e se hai provato molte impostazioni, la migliore può essere semplicemente la più fortunata.
Qui sotto vediamo il test passo dopo passo, poi le domande che contano dopo: perché un backtest può sembrare troppo bello, come verificarlo su dati che l'ottimizzatore non ha mai visto e perché un conto live conta di più. Non ci sono numeri magici. Ogni cifra viene da una fonte citata o da un calcolo che mostriamo e segnaliamo come nostro. I nomi di menu e campi sono quelli dell'interfaccia inglese di MT4, come negli screenshot.
Passo 1: carica lo storico dei prezzi
Un backtest vale quanto lo storico su cui si basa. In MT4 vai su Tools → History Center o premi F2, seleziona un simbolo e premi Download. Il terminale carica i dati M1 e da questi costruisce gli altri timeframe.

Tre cose da sapere su questi dati:
- Potrebbero non essere i dati del tuo broker. Il pulsante Download usa il server di dati storici di MetaTrader, e l'Help di MT4 avverte che questi dati possono differire dallo storico sul server di trading del broker.
- Puoi importare i tuoi. Il pulsante Import dell'History Center accetta file CSV, PRN, TXT, HTM e HST, per esempio lo storico del tuo broker.
- Controlla che i dati ci siano. Se il tester non trova storico per un simbolo e un periodo, scarica solo le ultime 512 barre. Guarda le date del test e il numero di barre prima di fidarti del risultato.
Passo 2: configura lo Strategy Tester
L'EA deve essere compilato e trovarsi nella cartella Experts del terminale. Se non compare nell'elenco, vedi Come installare ed eseguire un EA su MT4. Poi apri il tester con View → Strategy Tester o Ctrl+R e nella scheda Settings compila questi campi:

- Expert Advisor: l'EA da testare.
- Symbol: la coppia. Usane una per cui l'EA è stato creato. Il tester opera solo sul simbolo testato, quindi un EA che opera su più coppie non può essere testato qui nel suo insieme.
- Model: il modo in cui il tester ricostruisce il movimento del prezzo (vedi la tabella qui sotto).
- Period: il timeframe su cui gira l'EA.
- Spread: vedi la nota sotto la tabella.
- Use date: spunta la casella per impostare le date From e To. Scegli un periodo che copra diverse condizioni di mercato e annota quale parte terrai per il test out-of-sample descritto più avanti.
- Expert properties: nella scheda Testing imposta il deposito iniziale e i tipi di posizione (Long, Short o entrambi). Nella scheda Inputs imposta i parametri dell'EA. Nella colonna Value indichi ciò che usa un singolo test, mentre Start, Step and Stop servono solo per l'ottimizzazione.

Disattiva il money management dell'EA e usa un lotto fisso. Se il lotto cresce con il saldo, le operazioni successive pesano più delle prime e due test diventano difficili da confrontare. Con 0,10 lotti su EUR/USD un pip vale 1 $, il che semplifica i conti (vedi Cos'è un pip nel Forex?).
Premi Start. Con Visual mode attivo il test scorre su un grafico: è un buon modo per vedere come opera davvero l'EA. Le schede Results, Graph e Report compaiono dopo il test.
Quale modello scegliere
| Modello | Come funziona | Quando usarlo |
|---|---|---|
| Every tick | Usa tutti i timeframe inferiori disponibili e riempie i vuoti per interpolazione | Test finali di EA che operano all'interno della barra |
| Control points | Usa il timeframe inferiore più vicino | Stime approssimative e ottimizzazione |
| Open prices only | Lavora solo sulle barre completate | EA che agiscono solo all'apertura di una nuova barra |
Il nome "Every tick" è fuorviante. Con lo storico standard questi tick sono generati dalle barre al minuto, non registrati. MetaQuotes sconsiglia questo modello quando i timeframe inferiori non coprono l'intero periodo del test, perché il risultato non sarà accurato.
Il campo Spread
Lo storico di MT4 contiene solo i prezzi bid, quindi lo spread lo aggiunge il tester, e un solo valore vale per tutto il test. "Current" prende lo spread del momento in cui premi Start. Esegui lo stesso test in un martedì tranquillo e a tarda sessione di venerdì e potresti ottenere due risultati diversi. Inserisci invece un numero, in punti: su una quotazione a 5 cifre, 19 punti = 1,9 pip. Usa un valore tipico del tuo broker. Se non conosci ancora le basi, leggi Spread nel Forex: cosa significa e come calcolarlo.
Passo 3: leggi il report
Ecco il report di un vecchio test su EUR/USD e il significato delle sue righe principali secondo l'Help di MT4:

| Riga | In questo report | Cosa significa |
|---|---|---|
| Modelling quality | 90,00% | Quanto bene i tick sono stati modellati dai timeframe inferiori |
| Spread | Current (19) | Un solo spread per tutto il test, 1,9 pip |
| Total trades | 34 | La dimensione del campione |
| Profit factor | 1,51 | Profitto lordo ÷ perdita lorda: 746,77 ÷ 493,14. Il valore 1 significa che i due sono uguali |
| Expected payoff | 7,46 | Risultato medio per operazione: 253,63 ÷ 34 |
| Absolute drawdown | 48,82 | La perdita massima sotto il deposito iniziale |
| Maximal drawdown | 256,58 (2,51%) | La caduta massima da un picco di equity al minimo successivo |
La Modelling quality indica come sono stati costruiti i tick, non quanto è buono l'EA. Secondo la formula pubblicata da MetaQuotes, le barre modellate da dati al minuto hanno un peso di 0,9, ed è per questo che lo storico M1 si ferma al 90%. Con "Open prices only" il campo mostra n/a, ed è normale. I trader che caricano dati tick con strumenti di terze parti riportano valori fino al 99%. Questo può migliorare il percorso del prezzo dentro la barra, ma non cambia nulla per esecuzione e overfitting. L'Help di MT4 non definisce i Mismatched charts errors, ma di solito i trader considerano un valore diverso da zero un segno di storico incoerente e riscaricano i dati.
Non esiste un profit factor o un drawdown "buono" in assoluto, e non ne inventeremo uno. Il profit factor è misurato su questo campione, ai costi del tester, e un ottimizzatore può alzarlo per caso. Il maximal drawdown è la caduta peggiore avvenuta in questo test, non la peggiore possibile. Per capire cosa fa un drawdown a un conto, vedi Money management nel Forex.
La dimensione del campione cambia quanto può dirti un numero. In questo report 27 operazioni su 34 sono vincenti, cioè il 79%. Con 34 operazioni, un intervallo di confidenza al 95% per la percentuale di vincita va da circa il 63% al 90%. Con 340 operazioni e lo stesso 79% andrebbe da circa il 75% all'83% (nostro calcolo, intervallo di Wilson). Non esiste un numero fisso di operazioni che renda valido un test, ma meno sono, più ampio è il ventaglio di ciò che i numeri possono significare.
Cosa lascia fuori il tester di MT4
Il tester modella swap, requisiti di margine e ordini pendenti, ma non tutto ciò che incontra un conto reale:
- Spread variabile. Un solo spread per tutto il test. Durante le notizie e al rollover giornaliero gli spread reali si allargano.
- Velocità di esecuzione. MetaQuotes descrive il tester come privo di ritardi nelle operazioni di trading, e la sua scheda Settings non ha un campo per il ritardo.
- Slippage. Le operazioni vengono elaborate senza slippage, quindi ogni esecuzione è più pulita di quanto un conto live possa aspettarsi.
Quanto questo pesi dipende da quanto guadagna un EA per operazione. Una semplice illustrazione (nostra aritmetica, non dati di un EA reale): supponiamo che il trading reale costi da 0,5 a 2 pip in più per operazione.
| Costo extra per operazione | EA con media di 5 pip | EA con media di 50 pip |
|---|---|---|
| 0,5 pip | −10% | −1% |
| 1 pip | −20% | −2% |
| 2 pip | −40% | −4% |
Quindi il backtest di uno scalper dice molto meno di quello di un EA di lungo periodo. Uno stress test economico è alzare il campo Spread e ripetere il test: se il risultato crolla, l'EA ha poco margine per i costi reali.
MT5 ci va più vicino. Il suo tester può usare "Every tick based on real ticks" e ha impostazioni di ritardo di esecuzione fisso e casuale (vedi MT4 vs MT5). Resta comunque un test, non un conto live.
Perché il backtest migliore può essere il più fortunato
La maggior parte degli EA ha dei parametri: periodi, livelli, filtri. L'opzione Optimization del tester esegue l'EA più e più volte sui valori Start, Step e Stop che imposti e ordina i risultati. È uno strumento utile con una trappola incorporata. Un ottimizzatore restituisce il miglior risultato trovato. Non sa distinguere la bravura dalla fortuna.
Questa trappola si chiama overfitting, o curve fitting: impostazioni adattate al rumore del passato anziché a uno schema che si ripete. Il test sembra eccellente perché le impostazioni sono state scelte per adattarsi proprio a quel tratto di storico.
I matematici Bailey, Borwein, López de Prado e Zhu lo hanno quantificato in Pseudo-Mathematics and Financial Charlatanism (Notices of the AMS, 2014). Prendono strategie senza alcun vantaggio reale e si chiedono quante prove indipendenti servono perché la migliore raggiunga uno Sharpe ratio di 1 nel test, mentre lo Sharpe ratio atteso in seguito è 0. Lo Sharpe ratio misura il rendimento in rapporto alla sua volatilità. Il report di MT4 non lo mostra, ma il ragionamento resta valido.
| Dati disponibili | Prove prima che la fortuna sembri bravura |
|---|---|
| 2 anni | 7 |
| 5 anni | 45 |
Non sono molte. Sette opzioni on/off danno già 27 = 128 combinazioni. Tre parametri con dieci valori ciascuno danno 1.000 passaggi. Se questi passaggi fossero indipendenti, la formula dell'articolo dice che servirebbero circa 6,8 anni di dati per 128 prove e circa 10,6 anni per 1.000 solo per tenere a 1 il migliore Sharpe fortunato (nostro calcolo con l'equazione 3.2, che dà anche 1,9 anni per 7 prove e 5,0 anni per 45).
Leggi queste cifre come un avvertimento, non come un limite. Le impostazioni vicine non sono indipendenti, quindi il numero reale di prove di un ottimizzatore è inferiore al numero di passaggi, e l'articolo definisce l'ipotesi di indipendenza piuttosto conservativa. D'altra parte, dice anche che un test più lungo di questo minimo può comunque essere in overfitting.
La conclusione principale degli autori è semplice: un backtest che non riporta il numero di prove rende impossibile valutare il rischio di overfitting. Quindi, quando qualcuno ti mostra un bel report, chiedi quante impostazioni sono state provate per ottenerlo.
Tre controlli contro l'overfitting
- Funzionano anche le impostazioni vicine. Sposta ogni parametro un po' in su e in giù. Se il risultato regge in tutto l'intorno, è meno probabile che l'EA dipenda da un singolo valore fortunato. Se funziona un solo valore esatto, diffida.
- Regge su dati non visti. Testa le impostazioni fissate su un periodo che non ha avuto alcun ruolo nella loro scelta. È il test out-of-sample descritto qui sotto.
- Pochi parametri, molte operazioni. Più parametri ha un EA, più modi ha di adattarsi al rumore. Più operazioni ha un test, più è difficile che la sola fortuna spieghi il risultato.
Test out-of-sample in MT4
MT4 non ha una modalità apposita, ma Use date basta:
- Dividi lo storico in due. La parte più vecchia è in-sample, quella più recente è out-of-sample. Decidi la divisione prima di guardare qualsiasi risultato.
- Esegui l'ottimizzazione con Use date impostato solo sulla parte più vecchia e scegli le impostazioni.
- Togli la spunta a Optimization, inserisci i valori scelti nella colonna Value ed esegui un solo test sulla parte più recente.
- Confronta i due report: risultato medio per operazione, drawdown, numero di operazioni. Un forte calo nel secondo periodo è il classico segno di overfitting.
Il tester di MT5 fa questa divisione per te: la modalità Forward prende 1/2, 1/3, 1/4 o una parte personalizzata del periodo e usa sempre la parte più recente per il test forward.
Un periodo out-of-sample funziona una volta sola. Se torni indietro, cambi le impostazioni e lo testi di nuovo, non è più inedito e hai aggiunto un'altra prova. L'articolo dice lo stesso dei test hold-out: non tengono conto di quanti tentativi li hanno preceduti.
Se hai comprato l'EA, l'ottimizzazione l'ha fatta qualcun altro. Di solito non puoi sapere quante prove ci sono dietro le impostazioni predefinite, quindi chiedilo. Poi testa quelle impostazioni sui dati del tuo broker e presta la massima attenzione al periodo successivo alla pubblicazione delle impostazioni. Per il venditore quel periodo non può aver fatto parte dell'adattamento.
Perché i risultati live contano di più
Un backtest è il modo più rapido per scartare un EA, ma un modo debole per confermarlo. Un conto live colma in un colpo le due lacune maggiori. Lavora con spread, ritardi e slippage reali, e ogni giorno successivo al blocco delle impostazioni è out-of-sample per natura.
Un ordine sensato è backtest, test out-of-sample, demo, poi un piccolo conto live oppure un track record live verificato del venditore. Quando leggi un track record live vale la stessa logica:
- È verificato da terzi, ed è un conto con denaro reale e non una demo?
- Da quanto tempo gira, e quante operazioni ha? Pochi mesi buoni dimostrano poco.
- Quando sono state fissate le impostazioni? Anche i risultati precedenti a quella data possono essere adattati.
- È l'unico conto? Mostrare il migliore di dieci conti è la stessa trappola che mostrare il migliore di dieci backtest.
Per questo su ForexStore la pagina di ogni robot rimanda al suo conto live, e la nostra classifica dei robot Forex si basa sui risultati di trading live e non sui backtest. Un track record live è la prova più forte, ma non è una promessa: i risultati passati non garantiscono quelli futuri.
FAQ
Quale modelling quality serve in un backtest su MT4?
Non esiste un minimo universale. Con lo storico M1 il massimo è il 90%, e "Open prices only" mostra n/a, il che è normale per un EA che opera sulle barre completate. La modelling quality descrive come sono stati costruiti i tick. Non dice nulla su overfitting o esecuzione, quindi un valore alto da solo non rende affidabile un test.
Qual è un buon profit factor in un backtest?
Non esiste un valore universale. Il profit factor è il profitto lordo diviso la perdita lorda, e un valore sopra 1 significa che il test ha guadagnato sulla carta. Quanto questo conti dipende dal numero di operazioni, dai costi usati nel test e da quante impostazioni sono state provate per ottenerlo.
Cos'è l'overfitting in un backtest?
Overfitting significa che le impostazioni sono adattate al rumore del passato anziché a uno schema che si ripete. Bailey e coautori (Notices of the AMS, 2014) mostrano che con 2 anni di dati bastano circa 7 prove indipendenti perché la migliore raggiunga uno Sharpe ratio di 1 nel test, mentre il risultato atteso in seguito è 0. Con 5 anni, circa 45.
Perché i risultati live differiscono da un backtest?
Il tester di MT4 usa un solo spread per tutto il test e non ha ritardi di esecuzione né slippage, mentre un conto live li incontra tutti e tre. Se le impostazioni erano in overfitting, anche lo schema che seguivano in passato può non esistere nei nuovi dati.
In sintesi
- Un backtest richiede lo storico (F2), il tester (Ctrl+R), il modello giusto e uno spread impostato da te.
- La modelling quality descrive i tick, non l'EA. Non usarla, né il profit factor, come soglia di promozione.
- Il tester di MT4 ignora spread variabile, velocità di esecuzione e slippage, quindi gli EA con un piccolo profitto per operazione soffrono di più nel trading live.
- La migliore di molte impostazioni può essere la più fortunata: circa 7 prove indipendenti con 2 anni di dati, circa 45 con 5.
- Controlla le impostazioni vicine, testa su dati non visti, preferisci pochi parametri e molte operazioni e chiedi quante prove sono state fatte.
- Poi una demo, e poi un track record live verificato.
Sei alle prime armi? Inizia dalla nostra guida passo passo per iniziare a fare trading.
Fonti: MetaTrader 4 Help, Strategy Testing e History Center; MetaTrader 5 Help, Testing; articoli MetaQuotes What the Numbers in the Expert Testing Report Mean e Testing Features and Limits in MetaTrader 4; MQL4 Reference, Testing; Bailey, Borwein, López de Prado e Zhu, Pseudo-Mathematics and Financial Charlatanism, Notices of the AMS, 2014.
Questo articolo ha scopo educativo e non costituisce consulenza d'investimento. Il trading di prodotti con leva comporta il rischio di perdite.