Essere un trader è un pò come essere un cacciatore: deve saper aspettare le occasioni giuste per cacciare
ed avere pazienza durante l'attesa della preda.
Se dovessimo cercare i segnali di trading dovremmo far passare i mercati uno ad uno oppure abbonarci a
qualche servizio di segnali di trading.
Soprattutto per i quanto riguarda i dati giornalieri per i quali abbiamo l'accesso gratuito.
In questa sezione ho riportato alcuni semplicissimi screeners (creati a titolo esemplificativo), per
scansionare il mercato a seconda delle diverse strategie esposte nella sezione trading systems.
Questi screeners sono ovviamente personalizzabili e modificabili in base alle vostre esigenze: timeframe di
riferimento (questi screeners sono giornalieri), money management e mercati.
Sono creati per il mercato azionario, ma possono essere modificati per il forex nascondendo le componenti
e le condizioni superflui per quel mercato, come ad esempio il volume medio, l'OBV o i range di prezzo, le
cui condizioni inserisco per ultime prima del comando SCREENER.
In ogni caso, anche per il mercato azionario le condizioni relative al volume medio sono da impostare a
seconda del tipo di mercato stesso (ad esempio per il mercato USA utilizzo una media di 300.000 contratti
giornalieri che per il mercato italiano sono ovviamente troppi e vanno quindi ridotti almeno a 50.000).
SUGGERIMENTO IMPORTANTE:
Per nascondere le condizioni che non vogliamo utilizzare, invece che cancellarle, basta inserire davanti le
due slash // in modo da farle diventare commenti e poi toglierle solo dal comando finale "screener".
Per quanto riguarda il range di prezzo dei titoli da cercare va cambiato in base alla valuta di riferimento dei
titoli, alla grandezza del proprio conto ed al money management adottato.
Per esempio chi ha un conto da 2.000 €, anche con la leva finanziaria, è difficile che riesca a comprare titoli
che valgono per esempio 300 o 400 $ o £.
Se state cercando titoli del mercato norvegese dovrete adattare il range di prezzo ricercato nella valuta
delle corone norvegesi con il cambio EUR/NOK.
Per facilitare il settaggio ho definito per prima cosa le variabili più importanti facendo un elenco prima delle
istruzioni algoritmiche.
Segnalo con le // i commenti per ogni condizione in modo da capire cosa ho codificato.
Per testare questi screener basta copiare ed incollare nella finestra di programmazione i sottoindicati
algoritmi e nel caso adattarli o modificarli a piacimento.
Questo screener trova strumenti finanziari che sono in una fase di trading range più o meno rilevante (in
base ai parametri settati) ed in cui il prezzo si trova nei pressi della resistenza (per lo screener rialzista) o nei
pressi del supporto (per lo screener ribassista) ed è quindi potenzialmente in procinto di effettuare un
breakout.
I titoli selezionati da questo screener sono da osservare nei giorni a seguire attendendo segnali di un
imminente breakout o breakdown.
a=che determina il periodo della resistenza o supporto del canale di donchian sotto o sopra cui deve stare il
massimo od il minimo del titolo (in questo esempio pari a 120 giorni). Massimo o minimo di lungo periodo.
b= il numero di periodi entro cui il massimo del titolo è rimasto sotto o sopra tale resistenza o supporto (in
questo caso un lasso di tempo di 100 giorni) che sarà costante in 5 punti periodici del grafico (da C1 a C5).
Inoltre ho impostato le seguenti condizioni:
- che il massimo o minimo corrente deve essere sopra o sotto la media mobile esponenziale a 50 periodi
per determinare il trend (C8);
- che il massimo o il minimo di più breve periodo di 20 giorni deve corrispondere con quello a lungo periodo
(C6) e che il massimo o minimo corrente sia sotto od uguale al massimo/minimo di lungo periodo (C7).
_________________________________________________________________________________
TIMEFRAME(daily)
C5= highest[a](high)[round(b*0.20)]=highest[a](high)[1]
CRITERIA=ROC[a](close)
SCREENER [C1 AND C2 AND C3 AND C4 AND C5 AND C6 AND C7 AND C8](CRITERIA AS "ROC%")
_________________________________________________________________________________
TIMEFRAME(daily)
C1= lowest[a](low)[b]=lowest[a](low)[1]
C2= lowest[a](low)[round(b*0.80)]=lowest[a](low)[1]
C3= lowest[a](low)[round(b*0.60)]=lowest[a](low)[1]
C4= lowest[a](low)[round(b*0.40)]=lowest[a](low)[1]
C5= lowest[a](low)[round(b*0.20)]=lowest[a](low)[1]
CRITERIA=ROC[a](close)
SCREENER [C1 AND C2 AND C3 AND C4 AND C5 AND C6 AND C7 AND C8](CRITERIA AS "ROC%")
2 - NUOVI MASSIMI O MINIMI DI PERIODO: BREAKOUT IN NUOVO BOX
A differenza del precedente questo screener trova strumenti finanziari in forte trend con un nuovo
massimo o minimo di periodo e quindi che hanno appena effettuato un breakout importante dopo una
fase di ritracciamento.
In pratica il titolo in questione entra in uno nuovo BOX (vedi strategia di Darvas).
Lo screener impostato trova importanti titoli che fanno nuovi massimi o minimi semestrali (120 giorni) con
una performance annuale (252 giorni), pari o superiore al 100%.
Nel caso i titoli trovati chiudano sopra la resistenza di periodo (long) o sotto il supporto di periodo (short), si
potrebbe entrare in posizione all'apertura della seguente sessione settando lo stop loss sotto il più recente
supporto di periodo (long) o sopra il più recente massimo di resistenza (short).
Invece, nell'esempio sotto, il titolo ha rotto si la resistenza ma come vedete il prezzo ha ritracciato
formando una shooting star di potenziale inversione.
In questo caso si potrebbe impostare un ordine pendente buy stop al di sopra della candela reversal
oppure attendere una chiusura del titolo sopra la linea di resistenza maggiore (resistenza di donchian).
_________________________________________________________________________________
TIMEFRAME(daily)
a=120
b=252
C2 = high[1]<highest[a](high)[1]
C3 =roc[b](close)>100
C7= average[5](Volume)<volume[0]
// presenza di trend
C8=ADX[14]>20
CRITERIA=ROC[b](close)SCREENER [C1 AND C2 AND C3 AND C4 AND C5 AND C6 AND C7 AND C8]
(CRITERIA AS "ROC%")
_________________________________________________________________________________
TIMEFRAME(daily)
a=120
b=252
C2 = low[1]>lowest[a](low)[1]
C3 =roc[b](close)<-100
// prezzo titolo compreso tra 5 e 200 $
C4 = close>=5 AND close<=200
C7= average[5](Volume)<volume[0]
// presenza di trend
C8=ADX[14]>20
CRITERIA=ROC[b](close)
SCREENER [C1 AND C2 AND C3 AND C4 AND C5 AND C6 AND C7 AND C8](CRITERIA AS "ROC%")
Questo screener, è una variante del precedente e trova strumenti finanziari che sono in forte trend ma in
attuale fase di accumulazione o distribuzione, cioè durante la formazione di un BOX e non alla sua rottura
come il precedente.
Questi strumenti finanziari devono essere monitorati in quanto in procinto di potenziale breakout di
continuazione di trend.
In questo caso lo screener trova titoli a ridosso di massimi o minimi semestrali (120 giorni - parametro b) e
superiori a supporti (per screener rialzista) od inferiori a resistenze (per screener ribassista) di periodo pari
a 20 giorni (parametro c).
_________________________________________________________________________________
TIMEFRAME(daily)
a=10
b=120
c=20
d=252
breve=20
media=50
C2 = lowest[a](low)[1]>lowest[c](low)[1]
C4 =roc[d](close)>100
// presenza di trend
C11=ADX[14]>20
CRITERIA=ROC[d](close)
SCREENER [C1 AND C2 AND C3 AND C4 AND C5 AND C6 AND C7 AND C8 AND C9 AND C10 AND C11]
(CRITERIA AS "ROC%")
_________________________________________________________________________________
TIMEFRAME(daily)
a=10
b=120
c=20
d=252
breve=20
media=50
lunga=200
C2 = highest[a](high)[1]<highest[c](high)[1]
C4 =roc[d](close)<-100
// prezzo inferiore a media mobile esponenziale breve
C5 = close<exponentialaverage[breve](close)
// presenza di trend
C11=ADX[14]>20
CRITERIA=ROC[d](close)
SCREENER [C1 AND C2 AND C3 AND C4 AND C5 AND C6 AND C7 AND C8 AND C9 AND C10 AND C11]
(CRITERIA AS "ROC%")
4 - SWING TRADING
Individua strumenti finanziari in trend che sono in fase di ritracciamento tra due medie mobili (breve e
media).
Appena avviene un reversal con un pattern di prezzo tra le due medie mobili si verifica un potenziale trade.
Le medie mobili utilizzate per identificare i ritracciamenti nello screener di esempio sono:
_________________________________________________________________________________
TIMEFRAME(daily)
breve=20
media=50
lunga=200
C1 = high[0]<high[1] OR low[0]<low[1]
C2 = high[1]<high[2] OR low[1]<low[2]
C3 = high[2]<high[3] OR low[2]<low[3]
//definizione di uptrend a breve periodo con media mobile breve superiore a quella media.
C4 = exponentialaverage[breve](close)>exponentialaverage[media](close)
//definizione di uptrend a lungo periodo con media mobile breve superiore a quella lunga.
C5 = exponentialaverage[breve](close)>average[lunga](close)
//definizione di uptrend a medio periodo con media mobile breve superiore a quella lunga.
C6 = exponentialaverage[media](close)>average[lunga](close)
C7 = close[0]>exponentialaverage[media](close)
C8 = close[0]<exponentialaverage[breve](close)
C9 = close[0]>average[lunga](close)
//esistenza di uptrend
C10 = ADX[14]>=20
C12 = average[60](Volume)>=300000
CRITERIA=ROC[lunga](close)
SCREENER [C1 AND C2 AND C3 AND C4 AND C5 AND C6 AND C7 AND C8 AND C9 AND C10 AND C11 AND
C12](CRITERIA AS "ROC%")
_________________________________________________________________________________
TIMEFRAME(daily)
breve=20
media=50
lunga=200
C1 = high[0]>high[1] OR low[0]>low[1]
C2 = high[1]>high[2] OR low[1]>low[2]
C3 = high[2]>high[3] OR low[2]>low[3]
//definizione di downtren a breve periodo con media mobile breve inferiore a quella media.
C4 = exponentialaverage[breve](close)<exponentialaverage[media](close)
//definizione di downtrend a lungo periodo con media mobile breve inferiore a quella lunga.
C5 = exponentialaverage[breve](close)<average[lunga](close)
//definizione di downtrend a medio periodo con media mobile breve inferiore a quella lunga
C6 = exponentialaverage[media](close)<average[lunga](close)
C7 = close[0]<exponentialaverage[media](close)
C8 = close[0]>exponentialaverage[breve](close)
C9 = close[0]<average[lunga](close)
//esistenza di downtrend
C10 = ADX[10]>=20
C12 = average[60](Volume)>=300000
CRITERIA=ROC[lunga](close)
SCREENER [C1 AND C2 AND C3 AND C4 AND C5 AND C6 AND C7 AND C8 AND C9 AND C10 AND C11 AND
C12](CRITERIA AS "ROC%")
5 - TREND CONTINUO - MOMENTUM TRADING
Questo screener individua quei titoli che sono rimasti al di sopra o al di sotto una media mobile per un dato
numero di periodi determinando una chiara stabilità e continuità del trend.
In questo caso il proscreener trova quegli strumenti il cui prezzo è rimasto al di sopra (o al di sotto) della
ema50 per almeno 100 periodi.
I settaggi sono personalizzabili, sia i periodi che il tipo di media mobile, i cui parametri sono evidenziati in
grassetto.
Basta aggiungere le condizioni dei pattern sotto i codici sottostanti ed anche nel comando chiave screener.
UPTREND
TIMEFRAME(daily)
//media mobile
media=exponentialaverage[50](close)
giorni=100
result=1
for i=giorni downto 0 do
if close[i]< media[i] then
result=0
break
endif
next
CRITERIA=ROC[50](close)
SCREENER [result](CRITERIA AS "ROC%")
_________________________________________________________________________________
DOWNTREND
TIMEFRAME(daily)
//media mobile
media=exponentialaverage[50](close)
giorni=100
result=1
for i=giorni downto 0 do
if close[i]> media[i] then
result=0
break
endif
next
CRITERIA=ROC[50](close)
SCREENER [result](CRITERIA AS "ROC%")
6 - DIVERGENZA PREZZO/MOMENTUM
Individua divergenze tra prezzo e momentum, cioè strumenti in cui il trend si sta indebolendo.
E' utile poichè la divergenza può preludere ad un'inversione e quindi gli strumenti individuati sono da
attenzionare bene successivamente in attesa di una qualche conferma di inversione.
In questo caso ho utilizzato nuovi massimi o minimi a 120 giorni, cioè a 6 mesi.
_________________________________________________________________________________
TIMEFRAME(daily)
a=120
//nuovo massimo
C1 = high>=highest[a](high)[1]
//nuovo massimo relativo decrescente RSI: divergenza con nuovo massimo prezzo
C2 = rsi[14](close)<highest[20](rsi[14](close))
C3 = rsi[14](close)>60
C4 = close>exponentialaverage[20](close)
//definizione di uptrend a breve periodo con media mobile breve superiore a quella media.
C5 = exponentialaverage[20](close)>exponentialaverage[50](close)
//definizione di uptrend a lungo periodo con media mobile breve superiore a quella lunga.
C6 = exponentialaverage[20](close)>average[200](close)
C9 = average[20](Volume)>volume[0]
SCREENER [C1 AND C2 AND C3 AND C4 AND C5 AND C6 AND C7 AND C8 AND C9]
_________________________________________________________________________________
TIMEFRAME(daily)
a=120
//nuovo minimo
C1 = low<=lowest[a](low)[1]
//nuovo minimo relativo crescente RSI: divergenza con nuovo minimo prezzo
C2 = rsi[14](close)>lowest[20](rsi[14](close))
C3 = rsi[14](close)<60
C4 = close<exponentialaverage[20](close)
//definizione di downtrend a breve periodo con media mobile breve inferiore a quella media.
C5 = exponentialaverage[20](close)<exponentialaverage[50](close)
//definizione di downtrend a lungo periodo con media mobile breve inferiore a quella lunga.
C6 = exponentialaverage[20](close)<average[200](close)
C9 = average[20](Volume)>volume[0]
SCREENER [C1 AND C2 AND C3 AND C4 AND C5 AND C6 AND C7 AND C8 AND C9]
7 - TRIPLA MEDIA MOBILE
Utilizzo 3 medie mobili, una a breve, una a medio ed una a lungo termine.
Identifico quei titoli in cui la breve ha incrociato sia la media che la lunga media mobile e con il prezzo
all'interno dell'area delimitata da queste due (questa condizione è facoltativa e può essere tolta).
Rimango quindi in attesa o di un pattern di continuazione, della rottura della prossima resistenza/supporto
o dell'ulteriore incrocio della media con la lunga.
_________________________________________________________________________________
TIMEFRAME (DAILY)
breve=20
media=50
lunga=100
C1 = exponentialaverage[breve](close)>exponentialaverage[media](close)
C2 = exponentialaverage[media](close)<exponentialaverage[lunga](close)
C5 = average[60](Volume)>=300000
CRITERIA=ROC[lunga](close)
_________________________________________________________________________________
TIMEFRAME(DAILY)
breve=20
media=50
lunga=100
C1 = exponentialAverage[breve](close)<exponentialAverage[media](close)
C2 = exponentialAverage[media](close)>exponentialAverage[lunga](close)
C5 = average[60](Volume)>=300000
CRITERIA=ROC[lunga](close)