In questo articolo andremo ad analizzare uno dei più conosciuti e famosi setup di ingresso che il mondo del trading conosca, ovvero l’opening range breakout (ORB), creato da un trader americano di nome Toby Crabel negli anni 90. Lo andremo ad applicare al più importante future azionario europeo ovvero il DAX.
Ma in cosa consiste sostanzialmente l’ORB? L’idea originale di Crabel parte dal presupposto che le prime fasi di negoziazione sono generalmente le più significative per capire la direzione del mercato nel resto della giornata borsistica. Più in particolare la rottura al rialzo o al ribasso di importanti livelli di prezzo come ad esempio il massimo o il minimo della prima ora determina spesso la prosecuzione di quel trend fino alla chiusura delle contrattazioni.
Andiamo a vedere nel dettaglio la strategia: il test verrà effettuato sulla sessione “classica” del Dax ovvero dalle 8:00 alle 22:00 (orario exchange). Questo perché, anche se negli ultimi anni la sessione del mercato è stata estesa, resta comunque quella storica che permette di fare un backtest più realistico nel passato. Non solo, è pure la sessione più liquida e adatta ad una strategia di breakout come l’ORB che va ad operare su rotture di livelli importanti. Scegliamo poi l’ampiezza delle barre e optiamo per i 15 minuti, così da avere una maggiore “definizione” nel calcolo dei livelli di ingresso.
Regole e codice trading system ORB sul DAX
Alla prima barra disponibile dopo la prima ora di contrattazioni, che è l’intervallo temporale scelto per la definizione dell’Opening Range, verranno calcolati i massimi e minimi della sessione in corso e i livelli di ingresso. Definiremo pertanto questo orario come “checktime” e sarà pari alle 9:15 (la prima ora finisce infatti alle 9:00 e, con barre da 15 minuti, la prima barra successiva avrà timestamp 9:15).
Dopo il calcolo dei livelli, il sistema sarà libero di operare per tutta la giornata, fino ad un quarto d’ora prima del termine della sessione (ore 21:45). Al momento è stata stabilita un’ampia fascia oraria (9:15-21:45) per l’apertura dei trade, valorizzata tramite gli input “MyStartTrade” e “MyEndTrade”.
Per approfondire. Il livello di ingresso LONG verrà calcolato sommando, all’apertura della barra delle 9:15, il range della sessione (massimo – minimo), questo sarà moltiplicato per un fattore che inizialmente verrà impostato ad 1 (MyMultL); pertanto si aprirà una posizione alla rottura al rialzo di questo livello chiamato MYLELevel:
MYLELevel= open + range * MyMultL
Il livello di ingresso SHORT viceversa verrà calcolato sottraendo al prezzo di apertura, il range della sessione (massimo – minimo) e anche questo sarà moltiplicato per un fattore inizialmente impostato ad 1(MYMultS); dunque si aprirà una posizione alla rottura al ribasso di questo livello chiamato MYSELevel:
MYSELevel=open – range * MyMultS
Il codice in formato PowerLanguage per MultiCharts sarà il seguente:
var: IsStartOfSession(true);
var: MyLELevel(0), MySELevel(0);
input: checktime(915);
Input: MyStartTrade(0915),MyEndTrade(2145);
Input: MyMultL(1), MyMultS(1);
Input: MyStop(5000);
if IsStartOfSession then begin
MyLELevel=0;
MySELevel=0;
end;
if time=checktime then begin
MyLELevel = open+(highd(0)-lowd(0))*MyMultL;
MySELevel= open-(highd(0)-lowd(0))*MyMultS;
end;
if time>MyStartTrade and time<MyEndTrade then begin
buy next bar at MyLELevel stop;
sellshort next bar at MySELevel stop;
end;
If MyStop > 0 then setstoploss(MyStop);
setstopcontract;
setexitonclose;
Ogni trade aperto verrà poi chiuso a fine giornata (ore 22.00) salvo raggiungimento dello stop loss.
Vuoi un aiuto per migliorare il tuo approccio al trading? Clicca qui >>>
Figura 1 – Un esempio di calcolo di MYLELevel e MYSELevel
Performance report trading system ORB sul DAX
Nella due figure successive (figure 2-3) si possono vedere i risultati del trading system senza applicazione di ulteriori filtri, con arco temporale dal 01/01/2010 al 31/10/2023.
Figura 2 – Equity Curve Detailed del trading system ORB sul DAX
Figura 3 – Strategy Performance Report del trading system ORB sul DAX
È chiaro che la strategia così applicata non è molto performante, soprattutto sul lato short, mentre sul lato long i presupposti per una sua efficacia sembrano esserci. Ricordiamoci che abbiamo applicato il setup in maniera molto grezza, senza l’applicazione di alcun filtro aggiuntivo per selezionare i migliori trade.
Ottimizzazione trading system ORB sul DAX
Facciamo quindi un passo avanti nello studio: nelle regole iniziali abbiamo stabilito di lasciare libertà al trading system di poter inserire ordini in una fascia oraria molto ampia (9:15-21:45) che abbraccia sostanzialmente gran parte della sessione.
Proviamo invece a verificare e ad approfondire se limitarla solo a certi orari della giornata possa portare dei benefici e rendere i trade più redditizi.
Andiamo quindi ad ottimizzare i nostri input “MyStartTrade” e “MyEndTrade”.
Figura 4 – Ottimizzazione MyStartTrade e MyEndTrade
I risultati mostrano che sicuramente entrare in posizione dopo le 10:00 del mattino e non oltre il pomeriggio, migliora di molto le metriche. I valori ottenuti non sono molto distanti tra loro, sia come net profit che come average trade, pertanto selezioniamo la fascia oraria 10:00-16:00 rispetto alle altre in quanto restituisce un migliore riscontro in termini di drawdown.
In figura 5 e 6 si possono vedere la Equity Curve e lo Strategy Performance Report con un net profit di oltre 218.000 euro, ma ancora con due punti deboli su cui lavorare: un drawdown troppo elevato ed un average trade (66,89 euro), non sufficiente per il trading live in quanto i costi dell’operatività real time (slippage e commissioni) lo assorbirebbero completamente.
Figura 5 – Equity Curve Detailed del trading system ORB sul DAX dopo ottimizzazione fascia oraria
Figura 6 – Strategy Performance Report del trading system ORB sul DAX dopo ottimizzazione fascia oraria
Arrivati a questo punto in quale altre direzioni ci possiamo muovere? Come si potrebbe aumentare l’average trade medio per renderlo accettabile?
Una possibilità potrebbe essere quella di utilizzare i moltiplicatori di cui parlavamo all’inizio (MyMultL e MyMultS) e che avevamo deciso di lasciare impostati ad 1. Proviamo ad effettuare un’ottimizzazione definendo un intervallo tra 0,3 e 2 con step di 0,1 per gli input in questione e vediamo i risultati ottenuti.
Figura 7 – Ottimizzazione MyMultL del trading system ORB sul DAX
Figura 8 – Ottimizzazione MyMultS del trading system ORB sul DAX
Per MyMultL (figura 7) scegliamo il parametro 0,4 in quanto ci permette di migliorare significativamente il net profit (da 218.000 a circa 360.000 euro) e l’average trade (da 66,89 a 85 euro), inoltre si trova in un’area di stabilità tra i valori di 0,3 e 0,5, anch’essi molto simili in termini di risultati.
Per MyMultS (figura 8) scegliamo invece il parametro 0,9 in quanto ci permette di migliorare leggermente il net profit e si trova anch’esso in un’area che potremmo definire stabile tra 0,8 ed 1.
È interessante notare che per gli short sia necessario prediligere valori più elevati dell’input MyMultS rispetto a MyMultL (0,9 contro 0,4), quindi movimenti più decisi del mercato in quella direzione per ottenere guadagni, molto probabilmente per il generale bias rialzista degli indici azionari che tendono a privilegiare il lato long rispetto allo short.
Figura 9 – Equity Curve Detailed del trading system ORB sul DAX dopo ottimizzazione MyMultL e MyMultS
Figura 10 – Strategy Performance report dopo ottimizzazione MyMultL e MyMultS
Conclusioni trading system ORB sul DAX
Siamo giunti al termine di questo articolo e direi che si può sicuramente affermare che l’Opening Range Breakout sul future del Dax ad oggi sembrerebbe ancora un pattern valido e meritevole di essere preso in considerazione.
Rappresenta un punto di arrivo? Sicuramente no. La strategia avrebbe bisogno di un ulteriore sviluppo per permetterle di andare live. Soprattutto, come già sottolineato, un miglioramento dell’average trade che dovrebbe attestarsi perlomeno a 170-180 euro per il Dax, per permetterle di essere redditizia e capace di assorbire i costi dell’operatività reale. Poi andrebbe individuata una soluzione per l’abbassamento del massimo drawdown a livelli più gestibili. Gli strumenti per ottenerlo possono essere svariati, dall’aggiunta di filtri, all’utilizzo delle librerie di pattern che utilizziamo alla Unger Academy®, ed una gestione del rischio più definita. Resta comunque un buon punto di partenza. Adesso tocca a voi lettori rimboccarvi le maniche.
Alla prossima e buon trading!
Andrea Unger
Vuoi un aiuto per migliorare il tuo approccio al trading? Clicca qui >>>