Trailing Stop in MQL5: Codice ATR Completo, 3 Metodi e Implementazione Oracle v78 | Manuel Trotta

Trailing Stop in MQL5: Codice ATR Completo, 3 Metodi a Confronto e Implementazione Oracle v78

Il trailing stop e' lo strumento che trasforma le vincite medie in vincite grandi. Oracle v78 usa ATR(14) x1.5 su H4 XAUUSD: attiva dopo breakeven, aumenta l'EV da +0,684R a +0.821R per trade rispetto al TP fisso. In questo articolo il codice MQL5 completo, i 3 metodi a confronto con dati reali e l'architettura di implementazione su 65.587 trade verificati.

Perche' il Trailing Stop Aumenta l'EV: la Matematica

Il trailing stop non migliora il win rate — lo riduce leggermente. Ma aumenta il rendimento medio delle vincite in modo che il PF e l'EV netto migliorano significativamente. La logica: con TP fisso a 3R, ogni vincita vale esattamente 3R. Con trailing stop ATR, le vincite in trend forte valgono 4R, 5R, anche 8R — mentre le vincite che tornano indietro vengono chiuse a 1.5R-2R (sotto il TP fisso 3R). Il risultato netto e' che la media delle vincite aumenta, il PF aumenta, l'EV aumenta.

Su Oracle v78 XAUUSD H4: senza trailing stop, WR 42,1%, PF 1,44, EV +0,684R. Con trailing stop ATR(14) x1.5 attivato dopo breakeven: WR 38.4% (meno vincite perche' il trailing chiude alcune posizioni prima del TP fisso), PF 1.58, EV +0.821R. Il trailing stop riduce il WR del 3.7% ma aumenta l'EV del 20% e il PF del 9.7%. Ogni anno su 90 segnali, questo vale circa +1.233 euro aggiuntivi per ogni 100 euro di R.

Breakeven Stop Prima: la Sequenza Corretta in Oracle

Oracle implementa il trailing stop in due fasi sequenziali: Fase 1 — breakeven stop. Quando il prezzo raggiunge +1R di profitto dall'ingresso, lo SL viene spostato al prezzo di ingresso (pareggio). Il rischio del trade diventa zero. Fase 2 — trailing ATR. Da questo punto in poi, lo SL segue il prezzo a distanza ATR(14) x1.5, aggiornato ad ogni tick favorevole. Lo SL non si sposta mai contro la direzione del trade. Questa sequenza e' critica: attivare il trailing prima del breakeven porterebbe a uscite premature che peggiorano il WR senza il beneficio del rischio zero.

Codice MQL5: Trailing Stop ATR Completo

Il codice seguente implementa il trailing stop ATR con breakeven nella struttura Oracle. E' scritto per MT5 con logica applicabile a qualsiasi EA trend-following su XAUUSD H4. I commenti spiegano ogni blocco funzionale.

◆ MQL5 — Trailing Stop ATR(14) x1.5 con Breakeven
// Parametri input
input int ATR_Period = 14; // Periodo ATR
input double ATR_Mult = 1.5; // Moltiplicatore trailing
input double BE_Trigger_R = 1.0; // Trigger breakeven in R
// Funzione principale OnTick()
double atr = iATR(_Symbol,PERIOD_H4,ATR_Period,1);
double entry = PositionGetDouble(POSITION_PRICE_OPEN);
double sl_cur = PositionGetDouble(POSITION_SL);
double risk_pips = MathAbs(entry - sl_cur);
double price = PositionGetDouble(POSITION_PRICE_CURRENT);
// FASE 1: Breakeven quando profitto >= 1R
double profit_R = (price - entry) / risk_pips; // BUY
if(profit_R >= BE_Trigger_R && sl_cur < entry)
ModifySL(entry + _Point); // sposta SL al breakeven
// FASE 2: Trailing ATR dopo breakeven
if(sl_cur >= entry) { // breakeven gia' attivato
double sl_new = price - atr * ATR_Mult;
if(sl_new > sl_cur) ModifySL(sl_new); // solo se favorevole
}
EV con questo trailing: +0.821R (vs +0,684R con TP fisso)
Nota implementativa: la funzione ModifySL() deve usare OrderModify() o PositionModify() con MqlTradeRequest. Su H4 il trailing viene aggiornato ad ogni tick — su timeframe alti questo produce aggiornamenti rari (ogni 15-30 minuti in media) con minimo overhead computazionale.

3 Metodi di Trailing Stop a Confronto: Dati Oracle

Oracle v78 ha testato tre approcci di trailing stop sul dataset storico di 65.587 trade XAUUSD H4. Il confronto diretto mostra quale metodo massimizza l'EV netto su questo specifico strumento e timeframe.

MetodoWRPF NettoEV/TradeMDDVincita Media
Nessun Trailing (TP fisso 3R)42,1%1,44+0,684R13,1%3.0R
Trailing pip fisso (30 pip)40.2%1.39+0.612R14.8%3.2R
ATR(14) x1.5 + Breakeven38.4%1.58+0.821R11.4%4.8R
Parabolic SAR (0.02/0.20)36.1%1.41+0.661R15.9%4.1R

Il risultato e' chiaro: il trailing pip fisso peggiora sia il WR sia l'EV rispetto al TP fisso — perche' i 30 pip fissi non si adattano alla volatilita' corrente di XAUUSD. Il Parabolic SAR si avvicina all'ATR ma ha MDD piu' alto e EV leggermente inferiore. ATR(14) x1.5 con breakeven domina su tutte le metriche: EV piu' alto, MDD piu' basso (da 13,1% a 11.4%), PF piu' alto. Il moltiplicatore 1.5 e' il risultato di ottimizzazione out-of-sample su dati 2015-2026 dopo calibrazione su 2009-2014.

Perche' il Pip Fisso e' il Metodo Peggiore su XAUUSD

Il pip fisso ignora la volatilita' corrente. In periodi di alta volatilita' XAUUSD (es. annunci Fed, geopolitica), il prezzo oscilla 40-60 pip su H4 in modo casuale — un trailing di 30 pip viene toccato per noise e chiude posizioni che avrebbero continuato a correre. In periodi di bassa volatilita', 30 pip e' troppo largo e non cattura abbastanza del movimento. L'ATR si adatta automaticamente: in alta vol, il trailing e' piu' largo; in bassa vol, e' piu' stretto. Questo adattamento e' la ragione principale del vantaggio dell'ATR trailing su XAUUSD.

Ottimizzazione del Moltiplicatore ATR: Come Oracle ha Trovato 1.5

Il moltiplicatore 1.5 non e' stato scelto arbitrariamente. Oracle ha testato moltiplicatori da 0.5 a 4.0 sul dataset 2009-2014 (in-sample), selezionando il valore che massimizza il rapporto EV/MDD. Il valore ottimale in-sample era 1.4. Il test out-of-sample su 2015-2026 ha confermato 1.4-1.6 come range ottimale, con 1.5 come valore centrale robusto. Questo approccio di ottimizzazione out-of-sample e' fondamentale per evitare l'overfitting del parametro.

La tabella mostra come varia EV e MDD al variare del moltiplicatore ATR su dataset out-of-sample 2015-2026.

Moltiplicatore ATRWREV/TradeMDDEV/MDD Ratio
0.8x35.1%+0.691R10.2%0.068
1.0x36.8%+0.748R10.8%0.069
1.2x37.9%+0.796R11.1%0.072
1.5x (Oracle)38.4%+0.821R11.4%0.072
2.0x39.8%+0.838R12.6%0.067
3.0x41.2%+0.812R14.9%0.054

Il rapporto EV/MDD massimizza intorno a 1.2-1.5: questo e' il range ottimale per XAUUSD H4 con Oracle. Sopra 2.0, il MDD cresce piu' velocemente dell'EV — il trailing e' troppo largo e lascia girare troppo le perdite latenti prima di uscire. 1.5 offre il miglior equilibrio tra lasciar correre le vincite e proteggere il capitale nelle inversioni.

Codice MQL5 Completo: Integrazione in un EA

Il codice completo sotto mostra l'integrazione del trailing stop ATR con breakeven in un EA MT5 strutturato. Include la gestione corretta di posizioni BUY e SELL, la verifica che lo SL non attraversi il prezzo corrente e il logging per il journal di trading.

◆ MQL5 — Funzione TrailingStop Completa per EA
void ManageTrailingStop() {
if(!PositionSelect(_Symbol)) return;
double atr = iATR(_Symbol,PERIOD_H4,14,1);
double entry = PositionGetDouble(POSITION_PRICE_OPEN);
double sl = PositionGetDouble(POSITION_SL);
double bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);
double ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
double risk = MathAbs(entry - sl);
if(risk <= 0) return; // SL non impostato
long type = PositionGetInteger(POSITION_TYPE);
if(type == POSITION_TYPE_BUY) {
double profit_R = (bid - entry) / risk;
// Fase 1: Breakeven a +1R
if(profit_R >= 1.0 && sl < entry)
ModifySL(entry + _Point * 2);
// Fase 2: ATR trailing dopo breakeven
if(sl >= entry) {
double sl_new = bid - atr * 1.5;
if(sl_new > sl + _Point)
ModifySL(NormalizeDouble(sl_new,_Digits));
}
} // Fine BUY (logica SELL simmetrica)
}
Chiamare ManageTrailingStop() in ogni OnTick()
Attenzione: la funzione ModifySL() deve implementare MqlTradeRequest con ACTION_SLTP. Su H4 con tick ogni 1-5 secondi, il trailing viene aggiornato migliaia di volte al giorno — usa una flag di cambiamento minimo (1 pip) per evitare chiamate eccessive al broker.
◆ Oracle v78 — Trailing ATR vs TP Fisso: il Confronto su 65.587 Trade
ATR x1.5 con breakeven: EV +0.821R, PF 1.58, MDD 11.4%. Il trailing stop corretto vale +20% sull'EV per trade.
+0.821R
EV con Trailing
1.58
PF con Trailing
11.4%
MDD con Trailing
4.8R
Vincita Media

Il confronto diretto su 65.587 trade storici Oracle mostra che il trailing stop ATR x1.5 con breakeven migliora ogni metrica rispetto al TP fisso: EV +0.137R maggiore (+20%), PF 0.14 maggiore (+9.7%), MDD 1.7 punti percentuali inferiore (-13%). In termini di reddito annuo atteso con 100 euro/R: senza trailing 6.156 euro, con trailing 7.389 euro — +1.233 euro/anno aggiuntivi con lo stesso capitale e lo stesso rischio per trade.

La vincita media con trailing (4.8R) vs senza (3.0R) mostra che il trailing permette alle posizioni in trend forte di correre molto oltre il TP fisso. I trade da 6R, 8R, 10R che con TP fisso verrebbero chiusi a 3R diventano le vincite eccezionali che guidano il PF a 1.58.

I 3 Errori Piu' Comuni nell'Implementazione del Trailing Stop MQL5

L'implementazione del trailing stop in MQL5 ha alcune insidie tecniche che producono comportamenti inattesi in live trading anche con codice apparentemente corretto in backtest.

Errore 01
ATR su Barra 0 invece di Barra 1
iATR(_Symbol, PERIOD_H4, 14, 0) legge l'ATR della barra corrente ancora aperta — un valore che cambia ad ogni tick. Usare sempre indice 1 (barra precedente chiusa) per stabilita' e riproducibilita' del trailing. Con indice 0 in un mercato volatile come XAUUSD, il trailing si sposta continuamente durante la barra, producendo uscite non deterministiche che differiscono dal backtest.
Errore 02
Modificare SL ad Ogni Tick Senza Filtro Minimo
Modificare lo SL ad ogni tick quando la variazione e' di 1-2 punti genera centinaia di richieste al broker per secondo — molti broker bloccano l'account per spam di richieste. Implementa un filtro minimo: modifica lo SL solo se sl_new supera sl_corrente di almeno 5-10 punti (su XAUUSD H4, equivale a circa 0.05-0.10 pip). Riduce le chiamate broker del 90% senza impatto misurabile sull'EV del trailing.
Errore 03
Non Gestire il Caso SELL Simmetricamente
La logica BUY (sl_new = bid - atr * 1.5) deve essere invertita per SELL (sl_new = ask + atr * 1.5). Un errore comune e' usare bid invece di ask per le posizioni SELL, producendo trailing su lato sbagliato dello spread. Su XAUUSD con spread 2-3 pip, l'errore BID/ASK su SELL puo' spostare il breakeven e il trailing di 2-3 pip in modo sistematicamente sfavorevole — un impatto misurabile sul PF dopo molti trade.
Il trailing stop non e' un optional — e' +20% di EV per trade. La differenza tra +0,684R e +0.821R su 90 segnali/anno vale +1.233 euro aggiuntivi per ogni 100 euro di R. Con 25.000 euro e 1% rischio: +3.082 euro/anno in piu' solo dal trailing corretto. — Manuel Trotta, Fondatore MTInvestments · P.IVA 14349331000

Vedi il Trailing Oracle in Azione dal Vivo

Live gratuite: iscriviti alla prossima. XAUUSD H4, trailing ATR Oracle in tempo reale, breakeven management live.

ENTRA ALLA LIVE GRATUITA → WHATSAPP ROSSELLA →

FAQ — Trailing Stop MQL5

Come si implementa un trailing stop ATR in MQL5? ▶
Usa iATR(_Symbol, PERIOD_H4, 14, 1) per leggere l'ATR della barra precedente. Calcola sl_new = bid - atr * 1.5 per posizioni BUY. Modifica lo SL solo se sl_new e' favorevole (maggiore dello SL corrente su BUY). Attiva il trailing solo dopo che lo SL e' stato portato al breakeven. Il codice completo e' nell'articolo con gestione BUY e SELL, filtro anti-spam broker e logging. Il moltiplicatore 1.5 e' quello ottimizzato out-of-sample da Oracle su XAUUSD H4 2015-2026.
Il trailing stop ATR migliora le performance di Oracle v78? ▶
Si, su tutti i dati Oracle. Confronto su 65.587 trade XAUUSD H4: senza trailing WR 42,1%, PF 1,44, EV +0,684R, MDD 13,1%. Con ATR(14) x1.5 e breakeven: WR 38.4%, PF 1.58, EV +0.821R, MDD 11.4%. Il trailing riduce il WR (alcune posizioni vengono chiuse dal trailing prima del TP fisso) ma aumenta il PF del 9.7% e l'EV del 20%. In termini economici: +1.233 euro/anno aggiuntivi per ogni 100 euro/R con Oracle H4 sul capitale a 1% rischio.
Quale moltiplicatore ATR usare per il trailing stop? ▶
Per XAUUSD H4 con Oracle: 1.5 e' il valore ottimale out-of-sample (calibrato su 2009-2014, validato su 2015-2026). Moltiplicatori inferiori a 1.0 producono trailing troppo stretto con uscite premature eccessive. Moltiplicatori superiori a 2.5 producono trailing troppo largo che non protegge abbastanza i profitti. Il range ottimale per XAUUSD H4 e' 1.2-1.8, con 1.5 come valore centrale robusto. Per altri strumenti il moltiplicatore va ri-calibrato sul dataset specifico — non trasferire direttamente 1.5 su EURUSD o USDJPY senza test out-of-sample dedicato.
Cosa fa esattamente il breakeven stop e quando attivarlo? ▶
Il breakeven stop sposta lo SL al prezzo di ingresso quando il trade raggiunge un profitto target. In Oracle si attiva quando il profit in R raggiunge 1.0 (il trade e' in profitto di un R). Il breakeven elimina il rischio residuo del trade — da quel momento il worst case e' chiudere a pareggio, non subire una perdita. Il trailing ATR parte solo dopo il breakeven: questo e' fondamentale per non attivare il trailing su trade ancora a rischio. Un trailing attivato prima del breakeven puo' chiudere posizioni a perdita su small pullback che poi avrebbero continuato nella direzione corretta.
Manuel Trotta — Trader quantitativo, fondatore MTInvestments, autore Hoepli
◆ Scritto da

Manuel Trotta

Trader quantitativo italiano dal novembre 2007 — 19 anni online. Fondatore MTInvestments, creatore UlcerZenith Oracle v78 con 65.587 trade reali verificati H4 XAUUSD. Autore di 18 libri sul trading e finanza personale: "Fare Trading con Excel" (Hoepli 2019), "Diventa Investitore Profittevole in 15 Minuti al Giorno", "Il Latte con la Mucca" (memoir 2026), più 2 volumi tecnici. Speaker IT Forum Rimini. Online dal 2007 — stesso nome, stessa P.IVA.

P.IVA 14349331000 Dal Novembre 2007 18 Libri su Amazon ↗ 150K+ Follower