1. Perché il Backtest Ottimizzato Mente
Ottimizzare un EA su MetaTrader 5 è la cosa più semplice e più pericolosa del trading sistematico. Il Strategy Tester di MT5 ha un ottimizzatore integrato che testa automaticamente migliaia di combinazioni di parametri in pochi minuti. Il problema: se usi tutti i dati storici per l’ottimizzazione e selezioni la combinazione con il miglior backtest, hai quasi certamente trovato un pattern casuale nei dati, non un edge reale. Questo fenomeno si chiama data-snooping bias o curve fitting.
Un sistema con PF 3.5 in backtest ottimizzato su 5 anni di dati che poi perde denaro nel primo mese di live trading non è una storia insolita — è la norma nel trading retail. Questo articolo spiega come ottimizzare correttamente, come testare la robustezza dei risultati e come Oracle v78 ha gestito il processo di ottimizzazione sui 65.587 trade reali.
2. Il Strategy Tester di MT5: le Impostazioni Fondamentali
Apri lo Strategy Tester con Ctrl+R in MT5. Le impostazioni più importanti:
| Parametro | Opzione consigliata | Note |
|---|---|---|
| Modalità | Open prices only | Velocissimo per EA su candele chiuse |
| Modalità validazione finale | Every tick based on real ticks | Più accurato per test finale |
| Spread | Current spread (XAUUSD: ~0,35pt) | Mai usare spread zero |
| Deposito | $10.000+ | Per position sizing realistico 1% |
| Periodo | Training set soltanto | Mai tutto lo storico in ottimizzazione |
3. La Divisione Train/Test: il Principio Fondamentale
Prima di ottimizzare qualsiasi parametro, dividi il campione storico in due parti separate. La regola di base: 70% per il training (ottimizzazione dei parametri), 30% per il test (validazione out-of-sample). Per Oracle v78 su dati 2007–2024: training 2007–2018, test 2019–2024.
Regola d’oro: il test set va usato una sola volta, dopo aver già scelto i parametri ottimali sul training set. Se dopo il primo test su dati out-of-sample regoli i parametri e riesegui, il test set diventa implicitamente training set e la validazione perde significato.
⛔ Il pericolo invisibile: il Data Leakage
Il data leakage avviene quando informazioni dal test set influenzano il processo di ottimizzazione. Può essere esplicito (usi i dati futuri nell’ottimizzazione) o implicito (regoli i parametri più volte in base ai risultati sul test set). Entrambi i casi invalidano completamente la validazione. L’unica protezione è la disciplina: ottimizzi una volta, testi una volta, poi decidi.
4. Walk-Forward Analysis: la Verifica più Robusta
La walk-forward analysis (WFA) è l’approccio di validazione più usato nei sistemi di trading sistematici professionali. Invece di un singolo split train/test, la WFA ottimizza su una finestra mobile di dati e verifica immediatamente sui dati successivi, poi avanza la finestra e ripete. Il risultato è decine di mini-test train/test sovrapposti, che danno una stima molto più robusta della performance futura.
WFE 50–70%: accettabile ma con degradazione.
WFE < 50%: sistema in overfitting. Non usare in produzione.
Il Strategy Tester di MT5 ha la WFA integrata nella tab “Ottimizzazione”: imposta la finestra di ottimizzazione (es. 12 mesi), la finestra forward (es. 3 mesi) e il passo di avanzamento (es. 3 mesi). MT5 esegue automaticamente tutti i cicli e mostra i risultati complessivi.
5. Quanti Parametri Ottimizzare: il Problema della Dimensionalità
Ogni parametro aggiuntivo aumenta esponenzialmente il rischio di overfitting. La regola pratica: il numero di trade in sample dovrebbe essere almeno 100 volte il numero totale di combinazioni testate. Con 10.000 trade nel training set, puoi testare circa 100 combinazioni con affidabilità accettabile. Non ottimizzare mai più di 2–3 parametri contemporaneamente.
| Parametri | Valori per param | Combinazioni totali | Trade minimi in sample |
|---|---|---|---|
| 1 | 20 | 20 | 2.000 |
| 2 | 20 | 400 | 40.000 |
| 3 | 20 | 8.000 | 800.000 |
| 4 | 20 | 160.000 | Impraticabile |
6. Ottimizzare il Periodo Ulcer Index su XAUUSD H4
// Parametri da ottimizzare (2 parametri = 55 combinazioni totali) ULCER_PERIOD: Start=8, Step=2, Stop=28 // 11 valori PERCENTILE: Start=70, Step=5, Stop=90 // 5 valori // Totale: 11 x 5 = 55 combinazioni // Con "Open prices only" su 12 anni XAUUSD H4: // Tempo: ~3-5 minuti in modalita' multi-thread // Trade per combinazione: ~2.000-3.000 (ottimale per affidabilita') // Dopo ottimizzazione: scegli la combinazione con // - PF piu' stabile nell'intero range (non il picco isolato) // - WFE > 70% // - Trade >500 nel periodo di validazione
7. Metriche di Valutazione: Oltre il Profit Factor
Il Profit Factor da solo non è sufficiente. Le metriche di robustezza più utili per la validazione di un EA ottimizzato:
- PF in-sample vs out-of-sample: la differenza non deve superare il 30–40%.
- Recovery Factor = Profitto netto / Max DD: misura quanto il sistema guadagna rispetto al suo peggior drawdown. Oracle v78: 14,3%/13,1% = 1,09.
- Sharpe Ratio mensile: rendimento aggiustato per la volatilità dei rendimenti mensili. Sopra 1 è buono per trading retail.
- Stabilità dei parametri: testa la “curva dei parametri” — il PF in funzione del valore di ogni parametro. Una curva piatta è più robusta di un picco isolato.
- Performance su sottocampioni: dividi il training set in 3 parti e testa se il sistema è profittevole in tutte e tre.
8. I 5 Errori Classici nell’Ottimizzazione di EA
Errore 1: Ottimizzare sul campione completo. Il più comune e il più pericoloso. Selezioni i parametri migliori sull’intero storico disponibile. Il test diventa inutile perché i parametri sono già stati scelti per massimizzare quella stessa equity curve.
Errore 2: Scegliere il PF massimo. Spesso i parametri con il PF più alto in-sample sono i meno robusti out-of-sample. Preferisci i parametri con PF stabile in un ampio range intorno al valore ottimale.
Errore 3: Non includere lo spread nel backtest. Su XAUUSD, lo spread è tipicamente 0,30–0,50 punti. Imposta sempre lo spread reale del broker nelle impostazioni del Tester.
Errore 4: Testare su pochi trade. Con meno di 500 trade nel periodo di test, qualsiasi differenza di performance può essere dovuta alla fortuna. Cerca campioni con almeno 500–1.000 trade per il test out-of-sample.
Errore 5: Ottimizzare lo stesso EA più volte su periodi diversi. Ogni volta che regoli parametri in base a risultati su nuovi dati, quei dati diventano implicitamente parte del training. Il vero test out-of-sample esiste solo se non lo hai mai visto prima.
9. Come Oracle v78 Ha Gestito l’Ottimizzazione
Oracle v78 ha due parametri principali: il periodo dell’Ulcer Index (default 14) e la soglia percentile del gate (default 80° percentile). Il processo di selezione: (1) analisi statistica esplorativa in Python per identificare i range con edge, (2) ottimizzazione sul training set 2007–2019 con Walk-Forward Analysis (WFE risultante > 70%), (3) validazione finale sul test set 2020–2024 senza modifiche ulteriori. Il fatto che PF e WR siano rimasti coerenti nel periodo di test è la prova principale che il sistema non è in overfitting.
Il principio chiave: in 19 anni di sviluppo, Oracle v78 ha attraversato decine di iterazioni. Ma ogni nuova versione è stata rivalidata su dati out-of-sample prima di essere considerata “ufficiale”. I 65.587 trade attuali includono operazioni eseguite sia durante le fasi di sviluppo che nel deployment in produzione — tutti con gli stessi parametri documentati.
10. Backtest vs Live: Come Interpretare le Discrepanze
Una degradazione moderata dal backtest al live trading è normale e attesa. Il modello di simulazione non può catturare perfettamente: lo slippage su ordini al mercato, il requoting nei momenti di alta volatilità, le interruzioni di connessione, i cali di liquidità durante i gap settimanali. Una regola pratica: un sistema con PF 1,44 in backtest e PF 1,35–1,40 in live è un risultato eccellente. Una caduta da PF 1,44 a PF 0,90 in live suggerisce overfitting o problemi di esecuzione sistemici.