Le strategie di breakout del range notturno sono molto conosciute. L'idea sembra quasi fin troppo semplice: osservi il massimo e il minimo formati durante una determinata fascia oraria, poi entri quando il prezzo rompe uno dei due estremi.
Sulla carta il ragionamento e' lineare. Tradurlo in un Expert Advisor, pero', obbliga a rispondere a una serie di domande che nel trading manuale possono restare implicite. Quando inizia e finisce il range? A quale prezzo vengono piazzati gli ordini pendenti? Cosa succede all'ordine opposto dopo l'ingresso? Come si calcola il rischio se l'ampiezza del range cambia ogni giorno? Quando vengono chiuse le posizioni?
Nel video da cui nasce questa guida sono partito proprio da queste domande per creare una strategia sul GOLD con l'AI. Ho usato il Prompt Creator per organizzare la specifica, ho fatto generare un Expert Advisor in MQL5, l'ho compilato e verificato in modalita' visiva. Solo dopo sono passato al backtest e alle prime modifiche.
Il risultato non e' una strategia pronta da mettere su un conto reale. E' qualcosa di piu' utile dal punto di vista didattico: un esempio completo di come trasformare un'idea conosciuta in un sistema testabile, senza confondere la velocita' con cui l'AI produce codice con la qualita' della strategia finale.
L'idea: rompere il range della sessione notturna
La logica di base e' una variante del classico overnight range breakout.
Durante una fascia oraria prestabilita, l'Expert Advisor registra il massimo e il minimo raggiunti dal GOLD. Alla fine del periodo piazza:
- un ordine buy stop poco sopra il massimo;
- un ordine sell stop poco sotto il minimo.
Se il prezzo rompe il range verso l'alto, viene attivato il buy stop. Se rompe verso il basso, entra il sell stop. Quando uno dei due ordini diventa una posizione a mercato, l'ordine opposto viene cancellato.
Questa ultima regola e' fondamentale. Senza una gestione OCO, cioe' "one cancels the other", il prezzo potrebbe rompere prima un lato e poi tornare indietro, attivando anche l'ordine contrario. Ci ritroveremmo cosi' con due posizioni che non rappresentano piu' l'idea originale.
Anche l'uscita va definita. Nel test ho scelto una chiusura a un orario fisso: l'obiettivo era lasciare alla posizione il tempo di intercettare un eventuale movimento giornaliero, senza mantenerla aperta indefinitamente. All'orario stabilito l'EA deve chiudere le posizioni e cancellare gli ordini pendenti rimasti.
Gia' da questo elenco si capisce perche' "creami una strategia breakout" non sarebbe stato un prompt sufficiente. Quel testo descrive una categoria, non un sistema operativo.
Prima del codice viene la specifica
Per costruire il prompt ho scelto MetaTrader 5 e MQL5, il mercato delle materie prime e il simbolo GOLD. Il timeframe non era il cuore della strategia, perche' il range viene ricostruito usando orari precisi, ma andava comunque indicato per dare all'AI un contesto coerente.
La parte piu' importante era descrivere le regole senza lasciare buchi:
- orario di inizio e fine del range;
- calcolo del massimo e del minimo;
- buffer per posizionare i pendenti oltre gli estremi;
- cancellazione dell'ordine opposto dopo l'ingresso;
- orario di chiusura giornaliera;
- stop loss opzionale sul lato opposto del range;
- assenza di take profit fisso;
- modalita' debug per disegnare il rettangolo sul grafico.
La modalita' debug merita attenzione. Ho chiesto all'AI di aggiungere una variabile che, quando attiva, disegna il range sul grafico. Non serve a migliorare i risultati, ma a controllare il comportamento dell'EA. Durante il test visivo puoi vedere se il rettangolo parte e finisce alle ore corrette, se massimo e minimo coincidono con il prezzo e se gli ordini vengono collocati dove previsto.
Quando la modalita' debug viene disattivata, l'EA evita di creare quegli oggetti grafici e il backtest puo' procedere piu' velocemente.
Questo e' un buon esempio di requisito che spesso manca nei prompt. Non riguarda direttamente l'ingresso, ma rende il sistema verificabile. Nel trading automatico non basta che il codice compili: devi riuscire a controllare cosa sta facendo.
Parti da una specifica piu' ordinata
Il Prompt Creator ti guida nella definizione di piattaforma, logica, ingressi, uscite, gestione del rischio e filtri prima di chiedere all'AI di scrivere il codice.
Apri il Prompt CreatorIl rischio non puo' ignorare l'ampiezza del range
Durante la compilazione della specifica ero partito pensando a un lotto fisso. Poi mi sono fermato, perche' in questa strategia lo stop loss dipende dall'ampiezza del range.
Un giorno il range notturno puo' essere stretto, un altro molto piu' ampio. Se usassi sempre lo stesso lotto, la perdita potenziale cambierebbe in continuazione. Con uno stop di 20 punti rischieresti una somma; con uno stop di 100 punti ne rischieresti una molto diversa.
Per questo ho scelto una gestione basata su un importo monetario configurabile. L'EA deve misurare la distanza tra il punto di ingresso e il lato opposto del range, poi calcolare il volume necessario per mantenere il rischio vicino alla cifra impostata.
Non significa che questa sia l'unica soluzione possibile. Avrei potuto usare una percentuale del capitale oppure una logica diversa. Il punto e' che la gestione del rischio deve essere coerente con la struttura dello stop.
Se il range cambia, un volume fisso non rappresenta un rischio fisso.
Questo passaggio mostra anche un vantaggio del form strutturato: mentre compili le regole, sei costretto a vedere le contraddizioni. Non stai solo preparando un testo per l'AI. Stai chiarendo la strategia a te stesso.
Generare l'Expert Advisor non significa aver finito
Una volta generato il prompt, l'ho inviato al modello usato per la programmazione. L'AI ha prima preparato un piano dell'implementazione, compreso un flusso logico di OnTick(): gestione del nuovo giorno, costruzione del range, controllo degli orari, piazzamento dei pendenti, verifica dell'ingresso e chiusura.
Rivedere il piano prima del codice e' utile. Ti permette di accorgerti di un errore concettuale quando e' ancora economico correggerlo, invece di scoprirlo dopo centinaia di righe.
Il codice MQL5 prodotto al primo tentativo presentava due errori di compilazione. Non e' un evento eccezionale e non e' nemmeno un fallimento del processo. Ho copiato gli errori nella conversazione, l'AI ha individuato il problema e ha corretto il file.
La seconda compilazione e' andata a buon fine.
Questa sequenza e' molto piu' realistica della narrazione "scrivo un prompt e ottengo subito l'EA perfetto". L'AI riduce enormemente il tempo necessario per arrivare a una prima versione, ma il ciclo resta:
- definizione;
- generazione;
- compilazione;
- correzione;
- verifica;
- test.
Saltare uno di questi passaggi significa affidarsi al codice senza sapere se rappresenta davvero la logica richiesta.
Il test visivo viene prima delle statistiche
Prima di lanciare un backtest completo ho aperto lo Strategy Tester in modalita' visiva.
Ho impostato il range dalle 03:00 alle 06:00 e una chiusura intorno alle 18:00. Ho attivato il rettangolo di debug, configurato un piccolo buffer oltre i limiti e osservato il comportamento dell'EA su M1.
Il controllo visivo ha confermato alcuni punti essenziali:
- il rettangolo copriva la fascia oraria prevista;
- massimo e minimo erano calcolati sul periodo corretto;
- i pendenti venivano collocati oltre il range;
- il buffer corrispondeva al valore richiesto;
- dopo l'attivazione di un ordine, quello opposto veniva gestito correttamente.
Solo a quel punto aveva senso guardare l'equity.
Questo ordine e' importante. Se l'EA interpreta male il range, una bella curva non salva il test. Potresti ottimizzare per ore una strategia diversa da quella che pensavi di aver descritto.
La verifica visiva non garantisce che ogni riga di codice sia perfetta, ma elimina molti errori grossolani prima che finiscano nascosti dentro un report.
Il primo backtest: interessante, non convincente
Il primo test dal 2010 al 2020 non mostrava una curva eccezionale, ma nemmeno un sistema completamente privo di interesse. Il profit factor era appena sopra la parita' e il numero di operazioni era elevato.
Proprio il numero di trade lasciava spazio per fare ricerca. Con migliaia di operazioni puoi iniziare a chiederti se esistano condizioni ricorrenti che distinguono i breakout piu' sensati da quelli peggiori.
Guardando i trade in modalita' visiva, una debolezza era evidente: alcuni range erano troppo piccoli. Bastava una rottura minima per attivare l'ordine e il prezzo poteva raggiungere rapidamente il lato opposto. Anche range troppo ampi potevano essere problematici, perche' il movimento notturno poteva aver gia' consumato una parte significativa della volatilita' disponibile.
La tentazione sarebbe stata inserire un numero fisso di punti: accetta il range solo se e' compreso tra X e Y.
Il problema e' che il GOLD del 2012 non ha la stessa volatilita' del GOLD del 2026. Una distanza fissa puo' essere enorme in un periodo e irrilevante in un altro.
Serviva un filtro capace di adattarsi.
Filtrare il range usando la volatilita'
Ho chiesto all'AI di aggiungere un filtro basato sull'ATR. L'ampiezza del range non viene piu' giudicata con una soglia immutabile, ma confrontata con una misura della volatilita' corrente.
L'idea e' semplice:
- se il range e' troppo piccolo rispetto all'ATR, non piazzare gli ordini;
- se e' troppo grande rispetto all'ATR, non piazzare gli ordini;
- accettare solo range compresi tra un moltiplicatore minimo e uno massimo.
Questo rende il filtro relativo al contesto. Non stai dicendo che 50 punti sono sempre pochi o sempre tanti. Stai dicendo che il range deve avere una dimensione ragionevole rispetto a come si sta muovendo il mercato in quel periodo.
La prima configurazione del filtro era troppo permissiva e rimuoveva poche operazioni. Stringendo le soglie, il comportamento del test e' migliorato in modo piu' evidente.
Qui bisogna fare attenzione a una trappola: vedere un miglioramento non significa aver dimostrato che il filtro sia robusto. Abbiamo usato il periodo in sample per osservare il problema e modificare la strategia. E' sviluppo, non validazione.
Il filtro ha senso logico perche' corregge una debolezza osservabile. Ma deve comunque essere verificato su dati che non hanno partecipato alla scelta.
Perche' lasciare dati fuori campione
Nel test ho separato lo storico in blocchi. Il periodo 2010-2020 e' stato usato per costruire e modificare la strategia. Gli anni successivi sono rimasti fuori campione, quindi non hanno guidato le decisioni iniziali.
Questo serve a ridurre il rischio di overfitting.
Se guardi tutto lo storico mentre cambi continuamente regole e parametri, anche gli anni che chiami "test" finiscono per influenzarti. Magari non li ottimizzi formalmente, ma li osservi, modifichi il sistema e li guardi di nuovo. A quel punto non sono piu' davvero sconosciuti.
La strategia ha continuato a mostrare un comportamento positivo anche oltre il 2020, pur senza diventare una curva perfetta. Questo e' piu' interessante di un risultato spettacolare ottenuto soltanto nel periodo su cui hai lavorato.
Ho lasciato fuori anche un blocco molto piu' vecchio, precedente al 2010. Non perche' quei dati non contino, ma perche' il GOLD ha attraversato regimi profondamente diversi. Pretendere che ogni sistema funzioni in modo identico per oltre vent'anni puo' essere irrealistico.
Quel periodo puo' diventare un ulteriore stress test, ma non va usato come scusa per continuare a modificare il sistema finche' l'intera curva non appare gradevole. Altrimenti il test finale diventa un'altra fase di ottimizzazione.
Togliere lo stop loss non e' una conclusione
Durante gli esperimenti ho provato anche a disabilitare lo stop loss, lasciando come protezione operativa la chiusura a orario fisso. Nel backtest il risultato migliorava.
Questo dato, da solo, non significa che operare senza stop sia una scelta migliore.
Un test storico puo' non contenere tutte le situazioni estreme che potrebbero verificarsi in futuro. Senza stop loss, il rischio dipende maggiormente dalla possibilita' di chiudere realmente all'orario previsto, dalla liquidita', da eventuali gap, da problemi tecnici e dalla distanza che il prezzo puo' percorrere durante la giornata.
Inoltre, senza una distanza di stop definita, non puoi calcolare il volume usando lo stesso importo monetario fisso. Devi cambiare la gestione della size, e questo rende meno diretto il confronto tra le due versioni.
La prova e' utile per capire il comportamento della strategia, non per dichiarare vincente la variante senza stop.
Questo e' il modo corretto di interpretare molte modifiche: come domande rivolte al sistema, non come risposte definitive.
Il risultato finale va letto senza innamorarsi
Dopo il filtro sulla volatilita' e le diverse prove, la strategia mostrava un risultato migliore rispetto alla prima versione. Il periodo fuori campione non distruggeva completamente l'equity e il sistema sembrava avere una logica su cui continuare a lavorare.
Ma non era una strategia pronta.
Il profit factor restava moderato. Erano presenti fasi di stagnazione e drawdown abbastanza lunghi. La curva poteva essere ulteriormente studiata per capire se esistessero filtri sensati, stagionalita', differenze tra giorni della settimana o condizioni di volatilita' in cui il breakout fosse piu' credibile.
La conclusione onesta non e' "l'AI ha trovato una strategia vincente sul GOLD".
La conclusione e' che, partendo da un'idea semplice e da una specifica ragionata, l'AI ha permesso di arrivare rapidamente a un Expert Advisor compilabile e testabile. Il primo backtest ha mostrato una debolezza concreta. Quella debolezza ha suggerito un filtro coerente. Il filtro e' stato implementato e poi osservato su un periodo non usato nella prima fase.
Questo e' un processo di ricerca. Ed e' gia' molto.
Cosa portare a casa da questo esperimento
La parte piu' importante del video non e' il numero finale nel report. E' la sequenza di decisioni.
Prima abbiamo trasformato una frase generica, "breakout del range notturno", in regole programmabili. Poi abbiamo scelto una gestione del rischio coerente con uno stop variabile. Abbiamo chiesto una modalita' debug per controllare il range sul grafico. Abbiamo corretto gli errori di compilazione. Abbiamo verificato il comportamento prima di guardare le statistiche.
Infine, invece di ottimizzare parametri a caso, abbiamo osservato dove la strategia sembrava soffrire e aggiunto un filtro legato alla volatilita'.
Questo non elimina il rischio di overfitting, ma e' molto diverso dal cercare la combinazione di numeri che produce l'equity piu' bella.
L'AI e il Prompt Creator velocizzano la parte tecnica. Il lavoro del trader resta definire le regole, controllare l'esecuzione e decidere se le modifiche hanno una logica oppure stanno semplicemente adattando il sistema al passato.
Gold Range Hour Breakout
I file MQ5 ed EX5 dell'Expert Advisor breakout sul range orario creato con l'AI nel video.
Play
- Formato
- ZIP (MQ5 + EX5)
Conclusione
Creare un Expert Advisor con l'AI oggi e' molto piu' accessibile. In pochi passaggi puoi passare da un'idea a una prima versione compilabile, correggere gli errori e iniziare a testare.
Ma proprio perche' il codice arriva piu' velocemente, diventa ancora piu' importante rallentare sulle decisioni.
La strategia breakout sul GOLD vista in questo esperimento non va letta come un prodotto finito. Va letta come una base di ricerca: logica chiara, gestione degli ordini definita, rischio coerente, controllo visivo, primo test, filtro adattivo e verifica fuori campione.
Se vuoi usare l'AI per il trading automatico, questo e' l'approccio che ha piu' senso: non chiederle di trovarti una scorciatoia, ma usala per rendere piu' rapido un processo che resta sotto il tuo controllo.