L’Adx è uno degli indicatori di analisi tecnica più noti ed utilizzati. Non stiamo a ripetere la storia dell’Adx perché sono cose che si trovano già su numerosi libri e siti e anche io ne ho scritto in passato. Guardiamo invece all’Adx sotto una sfumatura diversa dal solito, così come abbiamo fatto qualche mese fa QUI.
Sappiamo che l’Adx è un indicatore di forza del trend, non ci indica la direzione ma quanto è forte la tendenza. Nei classici libri americani viene usato come set up di ingresso tipicamente quando è maggiore di 25, a volte qualcuno consiglia di usarlo > 35. I lettori più attenti sanno che nei miei libri ho smontato questo utilizzo e anche in questa occasione sono partito da un articolo altrui, che spiega una tecnica ma senza documentarla, per verificare, dati alla mano, se quanto afferma sia realmente efficace o no.
Il mio riferimento è un articolo di Technical Analysis of Stocks and Commodities (Bonus Issue 2006) a firma di Charles B. Schaap.
Schaap scrive due regole: “DMI Equilibrium rule: When +DMI and -DMI are below 25 and moving sideways, the trend has no dominant direction“.
“ADX indicator rule: When ADX is Greater than 25, use trend indicarors. When ADX is less than 25, use oscillator indicators“:
In pratica quando l’ADX è superiore a 25 il mercato è in trend e quindi l’autore consiglia di usare indicatori trend follower come il MACD.

Segnali del modello sul titolo JP Morgan
Se l’ADX è inferiore a 25 il mercato è laterale e il consiglio è di usare oscillatori come lo stocastico.
Il ragionamento non fa una piega… Ma funziona? Io come San Tommaso fin da quando ho iniziato ad occuparmi di trading ho sempre basato tutto sulla verifica attraverso la codifica in forma di trading system. I numeri non mentono mai e spesso si imparano cose sorprendenti, ed è così anche in questo caso…

Risultati del modello che usa l’ADX per separare l’operatività con logica trend dollower in mercatoi in trend da operatività con oscillatore nelle fasi laterali.
Ho testato il codice seguente (che usa un channel breakout se l’adx è > 25 e un RSI se l’adx è < 25) su un paniere di 50 titoli azionari del NASDAQ e del NYSE su base daily ed ecco cosa ne esce:
la curva dei profitti scende costantemente verso il basso. Mi ricorda una pista da sci nera, una di quelle dalle pendenze micidiali… Le performance sono talmente deludenti che ho provato a rovesciare le condizioni usando il channel breakout con adx < 25 e l’Rsi con Adx > 25 e… Sorpresa!!! Le performance migliorano. Non esce una equity line tradabile, il profit factor è 1,03… Ma di certo viene sconfessata la teoria di partenza. Il succo è quindi che non dovete fidarvi del sentito dire, qualunque tecnica, qualunque articolo, qualunque teoria illustrata in corsi o webinar, se non è supportata da

Equity line sull’azionario USA rovesciando le condizioni sull’ADX
dati statistici di performance vale zero.
PS: sul Ftsemib i risultati sono simili a quelli ottenuti sui mercati americani.
//ADX DAM
//Enrico Malverti Copyright 2017
// www.enricomalverti.com
// Power Language by Multicharts
Input: HH(20), LL(20);
inputs: Price( Close ), Length( 14 ), OverSold( 30 ), OverBought( 70 ) ;
variables: var0( 0 ) ;
MP = MarketPosition;
Value1 = Highest(H, HH) + 1 point;
Value2 = Lowest(L, LL) -1 point;
Buy (“Buy”) next bar at Value1 Stop;
{Plotto livello d’acquisto}
Value80 = TL_New(D[1], T[1], value1, D, T, value1);
TL_SetColor(Value80, Tool_Green); TL_SetStyle(Value80, Tool_Solid); TL_SetSize(Value80, 1);
TL_SetExtLeft(Value80, False); TL_SetExtRight(Value80, False);
Sellshort (“Sell”) next bar Value2 Stop;
{Plotto livello di vendita}
Value81 = TL_New(D[1], T[1], value2, D, T, value2);
TL_SetColor(Value81, Tool_Red); TL_SetStyle(Value81, Tool_Solid); TL_SetSize(Value81, 1);
TL_SetExtLeft(Value81, False); TL_SetExtRight(Value81, False);
{End;}
If MP = -1 then buytocover (“Cover”) next bar at Highest(H, 10) +1 point stop;}
setpercenttrailing(500, 33);
else if adx(14) < 25 then begin
if condition1 then
Buy ( “RsiLE” ) next bar at market ;
if condition2 then
Sell Short ( “RsiSE” ) next bar at market ;
end;
setprofittarget(500);
setstoploss(300);