L’andamento dei mercati finanziari è caratterizzato dall’alternarsi di fasi cicliche di alta e bassa volatilità. Le fasi di bassa volatilità si manifestano soprattutto nelle congestioni, ossia in quelle fasi di mercato in cui manca una direzione precisa, e che quindi precedono l’instaurarsi di una tendenza.

L’obiettivo del trader dovrebbe essere quello di limitare l’operatività nelle fasi laterali e individuare il prima possibile l’instaurasi del trend in modo da massimizzare i guadagni. A tal fine è importante riconoscere quei pattern che tipicamente precedono esplosioni di volatilità e grandi movimenti direzionali o nella direzione rialzista o in quella ribassista.

Un noto pattern che identifica le fasi di indecisioni del mercato che precedono movimenti di grande ampiezza è la barra inside, ossia una barra il cui massimo è inferiore al massimo precedente ed il cui minimo è superiore al minimo precedente. Si tratta di una barra che identifica una fase di mercato in cui gli operatori non hanno ancora deciso da quale parte schierarsi e i prezzi scambiano in un range di prezzo contenuto. La barra inside è un pattern abbastanza frequente ma di per se’ scarsamente efficace e andrebbe filtrato da ulteriori condizioni in grado di fornirci informazioni aggiuntive.

Connors ha reso celebri le barre inside IDNR4 ossia barre inside il cui range è il minore delle ultime 4 barre. La sigla NR sta infatti per narrow range (ossia contenuta ampiezza della barra). Questa ulteriore condizione pone l’accento sulla contrazione di volatilità espresso da un range molto piccolo che può essere assimilato al principio di una molla che viene schiacciata. Tanto più essa viene compressa , tanto maggiore sarà la forza liberata nel momento in cui essa verrà rilasciata.

La strategia più nota illustrata in vari libri di analisi tecnica prevede di assumere una posizione rialzista al superamento del massimo della barra inside, oppure assumere una posizione ribassista sull’eventuale cedimento del minimo dell’inside. Ipotizziamo di trovarci nella prima ipotesi in cui il mercato sale violando il massimo della barra inside, in questo caso lo stop loss iniziale viene posizionato all’estremo opposto della barra (quindi sul minimo meno un tick). Il fatto di avere una barra di set up molto stretta consente di effettuare dei trades caratterizzati da un basso rapporto rischio/rendimento; nell’eventualità il mercato si muova in direzione contraria alla nostra posizione, quest’ultima verrà chiusa con una piccolissima perdita, mentre nel caso contrario riusciremo ad anticipare l’acquisto prima di una lunga e duratura fase toro.

Connors consiglia di uscire dalla posizione solo in caso di accentuati rintracciamenti (con un trailing stop dinamico) e di uscire a mercato se nel giro di un paio di giorni non si è verificato l’effetto “decompresione della molla” spiegato in precedenza (lo illustrai una delle prime volte in “Guida al trading di borsa”, Il Sole 24 Ore, 2005, oramai esaurito).

IDNR4

IDNR4

Nell’immagine possiamo osservare una barra IDNR4 (l’ultima a destra all’interno del rettangolo) che segue ad alcune barre con andamento laterale: in quell’istante l’andamento delle quotazioni subisce una pausa nel trend, si verifica una fase di stallo nell’equilibrio tra domanda ed offerta finché i rialzisti prendono di nuovo il sopravvento ed il trend riprende nella stessa direzione indicata dalla barra inside narrow range.

Proviamo a sviluppare il concetto. Abbiamo utilizzato una candela NR4, ossia la più piccola degli ultimi 4 periodi. L’individuazione di questo pattern avviene su candele a 60 minuti ma i trades avvengono sul 15 minuti. Il codice utilizza quindi due time frame: data1 (a 15 minuti) e data2 ( a 60 minuti). L’ingresso al rialzo avviene quando si supera di un tick il massimo della candela precedente, viceversa si vende in stop per aprire una posizione corta quando i prezzi scendono sotto al minimo del giorno prima meno un tick. Gli ingressi sono filtrati dalle Bande di Bollinger. Lo stop iniziale è dell’1.5%. La strategia compra un minimo di due contratti di cui uno viene chiuso a target su un livello calcolato sommando il prezzo di ingresso e l’average true range a 14 periodi. Il caso short è uguale e contrario. In ogni caso si esce dalla posizione dopo 3 barre dall’apertura del trade. Con questa logica otteniamo risultati economici non particolarmente elevati, oltre 150.000 € dal 1996 ad oggi con due contratti sono pochi, ma l’average trade (poco più di 100 €) è basso, si tratta di un sistema che si accontenta di pochi tick e che quindi inevitabilmente risentirà di più di commissioni e slippage. Tutto sommato anche il drawdown massimo è contenuto rimanendo inferiore ai 12.000 €. Il fattore di profitto è 1.36. Il rovescio della medaglia è che la strategia non è stata ottimizzata.

equityidnr7b

Curva dei profitti

{IDNR4 Codifica Easy Language di Enrico Malverti, copyright 2012}
Vars:startime(0),  first_L(0), first_H(0), first_range(0), NUM(0), EP(0), MP(0), NR10(false);
Inputs: len(9), dev(1.7);

EP = EntryPrice;
MP = MarketPosition;

NR10 = H data2 < H[1] data2 and L data2 > L[1] data2 and (range data2 <= Lowest(range data2, 4)[1]);

If (NR10)  Then Begin
 If bollingerband(C data2, len, dev)- bollingerband(C data2, len, -dev) <= lowest((bollingerband(C data2, len, dev)-bollingerband(C data2, len, -dev)), 40) then Buy 2 Shares next bar at H +5 Stop;
 if bollingerband(C data2, len, dev)- bollingerband(C data2, len, -dev) <= lowest((bollingerband(C data2, len, dev)-bollingerband(C data2, len, -dev)), 40) then Sell 2 Shares next bar at L – 5 Stop;
End;

If D <1030616 Then startime= 950 else startime = 920;

If T = startime Then Begin
 first_L = L;
 first_H = H;
 first_range = range;
End;

If T = (Startime + 10) Then If range > avgtruerange(14) Then begin
 If MP = 1 Then ExitLong at EP*0.985 Stop;
 If MP = -1 Then ExitShort at EP*1.015 Stop;
End
Else Begin
 If MP = 1 Then ExitLong at FIRST_L – 1 Point Stop;
 If MP = -1 Then ExitShort at FIRST_H +1 Point Stop;
End;

exitshort(“Tgt-1-S”) currentcontracts/2 shares next bar at EP – 1.1*avgtruerange(14) limit;
exitlong(“Tgt-1-L”) currentcontracts/2 shares next bar at EP+1.1*avgtruerange(14) limit;
if barssinceentry > 3 then begin
 exitlong next bar at open;
 exitshort next bar at open;
 end