Pro Screener
Pro Screener
Pro Screener
Presentazione di Proscreener_____________________________________
Capitolo I : Le nozioni fondamentali________________________________
Accedere a Proscreener................................................................................................2
La finestra Migliori e Peggiori........................................................................................7
Esempi pi elaborati....................................................................................................18
1) RSI e inversione a rialzo..........................................................................................18
2) RSI ed inversione a ribasso.....................................................................................19
3) Trend a rialzo...........................................................................................................20
4) Trend a ribasso........................................................................................................21
5) Triplo rialzo..............................................................................................................22
6) Triplo schermo a ribasso..........................................................................................23
Glossario______________________________________________________
Presentazione di Proscreener
Presentazione di Proscreener
ProScreener uno strumento di scan estremamente performante che permette di creare dei filtri :
per ricercare i valori che rispettano una o pi condizioni definite in modo totalmente personalizzato
in una o pi unit di tempo (es : 1 minuto e 1 ora)
in tempo reale o a chiusura barra, con una precisione tick by tick.
I risultati di una ricerca ProScreener sono illustrati in una lista dei 30 migliori valori (scelta tra i risultati
possibili) sulla base del criterio di filtro definito.
Questo manuale dunque la continuazione del Manuale ProBuilder, ma puo' essere letto in modo
indipendente. Grazie ad un approccio teorico guidato e ad esempi concreti, potrete comprendere le basi
della programmazione di filtri che vi permetteranno, a partire da comandi ad hoc, di ottenere ottimi risultati
sui mercati.
Alla fine del presente manuale, troverete un Glossario, che riassume i codici utilizzabili.
Augurandovi il miglior successo,
Buona lettura !
1 / 32
Apparir allora la finestra ProScreener, dove possibile selezionare un codice gi creato, a partire dal men
a tendina, oppure procedere alla creazione di un nuovo codice. In tal caso, cliccate su "Gestione
ProScreener" per arrivare alla finestra di programmazione, dove avrete la scelta tra :
la "Programmazione assistita", che permette di definire le condizioni ricercate senza programmare
una sola linea di codice (per saperne di pi su questa funzionalit, consigliamo la visione del video
"Scan automatico del mercato (esempio a 3 condizioni) ").
la "Creazione per programmazione", che permette di creare dei codici pi complessi manualmente.
2 / 32
3 / 32
4 / 32
Ricerchiamo per esempio tutti i valori del mercato azionario italiano la cui apertura della barra in corso
(periodo) superiore alla chiusura della barra precedente. Scriviamo dunque:
c1 = (Open > Close[1])
SCREENER[c1]
Una volta definito il codice, scegliamo nella seconda sezione la lista predefinita Azioni Italia, sulla quale
applicheremo la ricerca.
Attenzione : la ricerca puo' essere effettuata anche su liste personalizzate. In tal caso bisogner stare attenti
a che siano composte da valori di uno stesso mercato, e che non contengano Futures o indici.
La terza sezione permette di definire il periodo utilizzato nella ricerca del ProScreener. In effetti, determinate
condizioni possono verificarsi in un timeframe e non in un altro.
La quarta sezione concerne il filtro dei risultati (Vedi sezione : "Instruzioni di ricerca e di filtro"). Infatti, nel
momento in cui un ProScreener presenta delle condizioni poco restrittive, i risultati possono essere molto
numerosi (diverse migliaia per il NASDAQ ad esempio). In tal caso, necessario filtrare i risultati ,secondo il
criterio proposto :
i 30 valori pi elevati (del criterio di filtro)
i 30 valori pi bassi (del criterio di filtro)
Esempio : ipotizziamo che un ProScreener ricerchi i valori con volume superiore a 20000 sull'azionario
italiano in giornaliero. Il numero di risultati potr facilmente superare i 30 massimi previsti. Impostare dunque
il criterio di filtro sulla variazione percentuale rispetto al giorno precedente, permetter di definire se
visualizzare i 30 valori con il criterio di filtro pi elevato o pi basso.
La quinta sezione permette la gestione di una eventuale condivisione del codice nel nostro spazio
comunitario.
5 / 32
Una volta definiti i 5 parametri, cliccate su "Convalida Programma" per lanciare la ricerca. Se dei valori
rientrano nei criteri impostati, i risultati saranno riportati in una lista, come illustrato nell'immagine che segue.
6 / 32
Per saperne di piu' sull'utilizzo della finestra Migliori e Peggiori, consigliamo la visione del video " Funzione
Migliori & Peggiori: trova le variazioni di prezzo, volume o gap d'apertura "
7 / 32
Capitolo II : La programmazione
Capitolo II : La programmazione
Nel presente capitolo, vi saranno illustrati 5 comandi ProBuilder, propri di ProScreener. Esamineremo
nell'ordine:
Le istruzioni di ricerca e di filtro
Anticipazione del volume
Ricerca multitime-frame
Ricerca multi-valore
SCREENER[Condizione]
Esempio:
Ricerchiamo tutti i valori il cui prezzo di chiusura strettamente inferiore alla Banda di Bollinger inferiore. Le
bande di Bollinger sono calcolate su 10 periodi e applicate alla chiusura.
c1 = (Close < BollingerDown[10](Close))
SCREENER[c1]
E' possibile migliorare il filtro inserendo condizioni multiple di ricerca, da soddisfare simultaneamente o
alternativamente. Per fare cio', la sintassi corretta sar:
SCREENER[Condizione1 OR Condizione2]
8 / 32
Capitolo II : La programmazione
Esempio:
Ricerchiamo i valori il cui prezzo superiore al canale di Bollinger e che rappresentano una tendenza a
rialzo.
REM Chiusura superiore alla Bollinger Superiore
Condizione1 = (Close > Bollingerup[20](Close))
REM Chiusura > Apertura
Condizione2 = Close > Open
REM MM7 > MM23
Condizione3 = (Average[7](Close) > Average[23](Close))
SCREENER[Condizione1 AND Condizione2 AND Condizione3]
E' inoltre possibile definire una costante o un indicatore (predefinito o personalizzato) che servir al tempo
stesso come criterio di ricerca e come criterio di filtro. In effetti :
Se pi di 30 risultati corrispondono alla ricerca, l'indicatore filtrer tra i risultati da illustrare, coloro
che avranno un valore dell'indcatore stesso maggiore o minore (a seconda di quanto definito nella
quarta sezione della finestra di programmazione, permette di definire l'ordine di comparsa) (vedi
descrizione a pagina 5).
Se invece meno di 30 risultati corrispondono alla ricerca, l'indicatore ordiner i risultati sulla base
del suo valore.
La sintassi corretta :
SCREENER[c1](TypicalPrice)
Per utilizzare un indicatore predefinito, necessario inserire innanzitutto l'indicatore in una variabile (che
chiameremo "Criteria") :
Criteria = RSI[14](Close)
SCREENER[c1](Criteria)
Se richiamamo un indicatore personalizzato, bisogner utilizzare l'istruzione "CALL", definita nel Manuale
ProBuilder.
9 / 32
Capitolo II : La programmazione
Esempio :
Ricerchiamo tutti i valori di un mercato il cui volume superiore a 50 000. Creiamo un indicatore che ci
permetter di valutare se l'RSI in iperacquisto o in ipervendita. Illustreremo i risultati del ProScreener
presentati secondo l'ordine di importanza di tal indicatore.
c1 = Volume > 50000
IF RSI[20](Close) > 70 THEN
Criteria = 1
ELSIF RSI[20](Close) < 30 THEN
Criteria = -1
ENDIF
SCREENER[c1](Criteria AS "ipertransazione")
10 / 32
Capitolo II : La programmazione
Se desideriamo attribuire un nome personalizzato a tale colonna, dobbiamo utilizzare la funzione "AS", come
descritto:
Questo comando si rivela particolarmente interessante per comparare il volume stimato al volume reale.
Osserviamo un esempio:
In timeframe 10 minuti, se supponiamo che l'ultima candela sia apparsa un minuto fa, il volume stimato sar
uguale a 10 volte il volume attuale.
Proviamo a calcolare il raporto del volume anticipato del giorno sul volume del giorno precedente (per avere
pero' dei risultati rappresentativi, consigliabile utilizzare un timeframe intraday).
REM Stima il volume del giorno
Vol0 = EstimatedVolume
REM Trova il volume del giorno precedente
Vol1 = Volume[1]
REM Criterio di filtro: rapporto del volume anticipato del giorno sul volume del giorno precedente
SCREENER (Vol0 / Vol1 AS "Volume")
Ricerca multitime-frame
Per creare un ProScreener che ricerchi una o pi condizioni in pi timeframe contemporaneamente,
necessario utilizzare il comando "TIMEFRAME", la cui sintassi la seguente:
TIMEFRAME (timeframe)
11 / 32
Capitolo II : La programmazione
Significato
1 minute
1 minuto
2 minutes
2 minuto
3 minutes
3 minuto
5 minutes
5 minuto
10 minutes
10 minuto
15 minutes
15 minuto
30 minutes
30 minuto
1 hour
1 ora
2 hours
2 ora
3 hours
3 ora
4 hours
4 ora
daily
Giornaliero
weekly
Settimanale
Le instruzioni che seguono la linea "TIMEFRAME" saranno ricercate solamente nel periodo indicato. E'
dunque possibile posizionare diverse linee di "TIMEFRAME" in uno stesso codice, per effettuare una ricerca
multitime-frame.
Prendiamo un esempio :
Desideriamo trovare tutti i valori dell'azionario italiano, che verificano i criteri seguenti:
In timeframe settimanale, l'indicatore Williams %R a 14 periodi con valore compreso tra 0 e -20
In timeframe 30 minuti, la media mobile esponenziale a 20 periodi che incroci a rialzo la media a 12
periodi.
Saremo dunque in grado di trovare i valori che si trovano in iperacquisto in timeframe settimanale, ma che
presentano nel breve termine una tendenza a ribasso.
TIMEFRAME(weekly)
Condizione1 = Williams[14](Close) < 0 AND Williams[14](Close) > -20
TIMEFRAME(30 minutes)
Condizione2 = ExponentialAverage[20](Close) CROSSES OVER ExponentialAverage[12](Close)
SCREENER[Condizione1 AND Condizione2]
12 / 32
Capitolo II : La programmazione
Ricerca multi-valore
Abbiamo potuto constatare che con ProScreener necessario specificare un mercato (o una lista) su cui
effettuare la ricerca.
Per esempio, se volete visualizzare su 30 valori dell'azionario Italiano, il prezzo di chiusura della barra
corrente del valore FIAT (ticker "F") , scriverete :
13 / 32
Capitolo II : La programmazione
I diversi mercati per i quali la funzione disponibile, si traducono in codice attraverso la seguente tabella di
corrispondenze :
Codice EQUITYFRAME
Nome Mercato
AMEX
Azioni Amex
ASX
Azioni Australia
Azioni Italia
Azioni Italia
EuroNext Amsterdam
Euronext Amsterdam
EuroNext Brussella
Euronext Bruxelles
EuroNext Lisbona
Euronext Lisbona
EuroNext Parigi
Euronext Parigi
Forex
Valute
LSE
Madrid Azioni
Azioni Spagna
NASDAQ
Azioni Nasdaq
NYSE
Azioni Nyse
SWX
Azioni Svizzera
Virt-X
Azioni Svizzera
XETRA
Azioni Germania
Come per il comando "TIMEFRAME", il codice che segue "EQUITYFRAME" sar applicato al valore
specificato al suo seguito. Per riproporre il timeframe principale, selezionato nell'interfaccia ProScreener,
baster scrivere:
EQUITYFRAME(default)
14 / 32
Capitolo II : La programmazione
Immaginiamo di creare un ProScreeener che illustri i 30 valori del mercato azionario italiano aventi in
comune una determinata condizione; se desideriamo visualizzare, in una colonna della lista dei risultati, il
valore di un indicatore che calcoli la differenza tra la chiusura della barra in corso del valore FIAT (ticker F) e
la chiusura di ogni valore facente parte della lista, allora scriveremo:
REM recuperiamo le informazioni per il valore FIAT del mercato azionario italiano.
EQUITYFRAME("Azioni Italia" , "F")
MyClose = Close
REM ritorniamo sui valori del mercato selezionato nel men Liste
EQUITYFRAME(default)
REM creiamo l'indicatore per recuperare le informazioni
CloseVal = MyClose - Close
REM lanciamo lo screener
SCREENER(CloseVal AS "MyIndicator")
15 / 32
16 / 32
17 / 32
Esempi pi elaborati
1) RSI e inversione a rialzo
Presentiamo un sistema che permette di ritrovare in tempo reale i valori suscettibili di invertire e smorzare un
movimento molto forte.
Tradizionalmente, gli analisti si interessavano agli indicatori di "surriscaldamento" o alle figure di inversione,
isolandole dal loro contesto (semplimente perch non disponevano degli strumenti tecnici appropiati, che
permettessero di fare meglio).
Oggi, con ProScreener, non esistono pi limitazioni tecniche: abbiamo la possibilit di costruire un veri
sistema di scan basato per esempio sull'RSI. Il punto di partenza semplice: ricerchiamo un RSI in
iperacquisto che inverte a ribasso.
Creiamo dunque un filtro contenente due condizioni e che si scrive su una sola linea di codice.
Filtre = RSI < 30 AND Momentum[1](RSI) > 0
Andiamo poi a ricercare i valori la cui caduta pi importante e che si riveleranno i pi interessanti per la
nostra analisi. Per analizzare l'importanza della caduta, consideriamo la volatilit abituale del titolo.
18 / 32
Recuperiamo poi i valori il cui rialzo stato pi marcato, comparativamente alla volatilit abituale del titolo.
19 / 32
3) Trend a rialzo
Trend a rialzo una figura delle candele giapponesi pi note, ma necessita evidentemente di una analisi pi
ampia (esistenza di una tendenza all'inversione)
Cominciamo per definire cos' un trend a rialzo
Candela precendente nera
Candela in corso apre sotto il corpo della candela precedente
Candela in corso chiude sopra il corpo della candea precedente
Per ricercare la tendenza a ribasso, riprendiamo il codice precedente restringendo un po' l'orizzonte
temporale. Per un RSI a 14 periodi, era ragionevole interessarsi alla caduta dei prezzi sulle ultime 20 barre.
Per le candele giapponesi, invece, l'esperienza mostra che 8 barre sono sufficienti (si tratta di strutture pi
reattive e teoricamente limitate a 7 candele).
20 / 32
4) Trend a ribasso
Cominciamo per definire un trend a ribasso:
Candela precedente bianca
Candela in corso apre sopra il corpo della candela precedente
Candela in corso chiude sotto il corpo della candela precedente
21 / 32
5) Triplo rialzo
Il presente ProScreener composto da due condizioni su due diversi timeframe:
Condizione 1 : MACD <0 in timeframe settimanale
Condizione 2 : MACD crescente in timeframe settimanale
Condizione 3 : Stocastico <30 in timeframe giornaliero
Ricerchiamo dunque i valori che si avvicinano al livello di acquisto stop ricercato dal codice creato (in questo
il massimo del giorno precedente).
ProScreener trover dunque i valori che si trovano ancora sotto tale livello e parimenti i valori che hanno
appena oltrepassato la soglia, ma senza allontanarsi di pi del 5%, nei timeframe specificati.
22 / 32
Ricerchiamo dunque i valori che si avvicinano al livello di vendita stop ricercato dal codice creato (in questo il
minimo del giorno precedente).
ProScreener trover dunque i valori che si trovano ancora sopra tale livello e parimenti i valori che hanno
appena oltrepassato a ribasso la soglia, ma senza allontanarsi di pi del 5%, nei timeframe specificati.
23 / 32
Glossario
Glossario
A
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
Abs
Abs(a)
AccumDistr
AccumDistr(price)
ADX
ADX[N]
ADXR
ADXR[N]
AND
A AND B
Operatore logico ET
AroonDown
AroonDown[P]
Aroon Down
AroonUp
AroonUp[P]
Aroon Up
Atan
Atan(a)
AS
Return Result As
"ResultName"
Average
Average[N](price)
AverageTrueRange
AverageTrueRange[N](price)
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
BarIndex
BarIndex
BollingerBandWidth
BollingerBandWidth[N](price)
BollingerDown
BollingerDown[N](price)
BollingerUp
BollingerUp[N](price)
BREAK
(FOR...DO...BREAK...NEXT)
o
(WHILE...DO...BREAK...WEND)
24 / 32
Glossario
C
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
CALL
myResult = CALL
myFunction
CCI
CCI[N](price) o CCI[N]
applicato per defaut al
TypicalPrice
ChaikinOsc
ChaikinOsc[Ch1, Ch2](price)
Oscillatore di Chaikin
Chandle
Chandle[N](price)
ChandeKrollStopUp
ChandeKrollStopUp[Pp, Qq,
X]
ChandeKrollStopDown
ChandeKrollStopDown[Pp,
Qq, X]
Close
Close[N]
COLOURED
RETURN Result
COLOURED(R,G,B)
COS
cos(a)
Coseno
Crosses Over
A Crosses Over B
Crosses Under
A Crosses Under B
CUMSUM
CUMSUM(price)
CurrentDayOfWeek
CurrentDayOfWeek
CurrentHour
CurrentHour
CurrentMinute
CurrentMinute
CurrentMonth
CurrentMonth
CurrentSecond
CurrentSecond
CurrentTime
CurrentTime
CurrentYear
CurrentYear
CustomClose
CustomClose[N]
Cycle
Cycle(price)
Cycle
25 / 32
Glossario
D
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
Date
Date[N]
Day
Day[N]
Days
Days[N]
DayOfWeek
DayOfWeek[N]
Dclose
Dclose(N)
DEMA
DEMA[N](price)
Dhigh
Dhigh(N)
DI
DI[N](price)
Demand Index
DIminus
Diminus[N](price)
DI-
Diplus
Diplus[N](price)
DI+
Dlow
Dlow(N)
DO
Dopen
Dopen(N)
DOWNTO
Vedere FOR
DPO
DPO[N](price)
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
EaseOfMovement
EaseOfMovement[I]
Ease of Movement
ELSE
Vedere
IF/THEN/ELSE/ENDIF
ELSEIF
Vedere
IF/THEN/ELSE/ENDIF
EMV
EMV[N]
EQUITYFRAME
EQUITYFRAME("mercato" ,
"ticker")
ENDIF
Vedere
IF/THEN/ELSE/ENDIF
EndPointAverage
EndPointAverage[N](price)
EstimatedVolume
EstimatedVolume
Exp
Exp(a)
ExponentialAverage
ExponentialAverage[N](price)
26 / 32
Glossario
F-G
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
FOR/TO/NEXT
ForceIndex
ForceIndex(price)
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
High
High[N]
Highest
Highest[N](price)
HistoricVolatility
HistoricVolatility[N](price)
Hour
Hour[N]
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
IF/THEN/ENDIF
IF a THEN b ENDIF
IF/THEN/ELSE/ENDIF
Istruzioni condizionali
IntradayBarIndex
IntradayBarIndex[N]
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
LinearRegression
LinearRegression[N](price)
LinearRegressionSlope
LinearRegressionSlope[N]
(price)
Log
Log(a)
Funzione logaritmica
Low
Low[N]
Lowest
Lowest[N](price)
I-J-K
27 / 32
Glossario
M
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
MACD
MACD[S,L,Si](price)
MACDline
MACDLine[S,L](price)
Linea dell'MACD
MassIndex
MassIndex[N]
Mass Index
Max
Max(a,b)
MedianPrice
MedianPrice
Min
Min(a,b)
Minute
Minute
Mod
a Mod b
Momentum
Momentum[I]
Momentum
MoneyFlow
MoneyFlow[N](price)
MoneyFlow tra -1 e 1
MoneyFlowIndex
MoneyFlowIndex[N]
MoneyFlowIndex
Month
Month[N]
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
NEXT
Vedere FOR/TO/NEXT
Not
NOT a
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
OBV
OBV(price)
On-Balance-Volume
ONCE
ONCE VariableName =
VariableValue
Open
Open[N]
Prezzo di apertura
OpenOfNextBar
OpenOfNextBar
OR
a OR b
Operatore logico O
28 / 32
Glossario
P-Q
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
PriceOscillator
PriceOscillator[S,L](price)
PositiveVolumeIndex
PriceVolumeIndex(price)
PVT
PVT(price)
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
R2
R2[N](price)
Range
Range[N]
REM
REM comment
Repulse
Repulse[N](price)
RETURN
Return Result
ROC
ROC[N](price)
RSI
RSI[N](price)
Round
Round(a)
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
SAR
SAR[At,St,Lim]
Parabolic SAR
SARatdmf
SARatdmf[At,St,Lim](price)
SCREENER
SCREENER[c](price)
Sin
Sin(a)
Sgn
SGN(a)
SMI
SMI[N,SS,DS](price)
SmoothedStochastic
SmoothedStochastic[N,K]
(price)
Stocastico lisciato
29 / 32
Glossario
SORT BY
Square
Square(a)
Elevazione al quadrato
Sqrt
Sqrt(a)
Radice quadrata
STD
STD[N](price)
Scarto tipo
STE
STE[N](price)
Scarto Errore
Stochastic
Stochastic[N,K](price)
Summation
Summation[N](price)
SuperTrend
SuperTrend[STF,N]
Super Trend
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
Tan
Tan(a)
Tangente
TEMA
TEMA[N](price)
THEN
Vedere
IF/THEN/ELSE/ENDIF
Time
Time[N]
TimeSeriesAverage
TimeSeriesAverage[N](price)
TIME FRAME
TIMEFRAME(periodo)
TO
Vedere FOR/TO/NEXT
Today
Today
TotalPrice
TotalPrice[N]
TR
TR(price)
True Range
TriangularAverage
TriangularAverage[N](price)
TRIX
TRIX[N](price)
TypicalPrice
TypicalPrice[N]
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
Undefined
a = Undefined
30 / 32
Glossario
V
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
Variation
Variation(price)
Volatility
Volatility[S, L]
Volatilit di Chaikin
Volume
Volume[N]
Volume
VolumeOscillator
VolumeOscillator[S,L]
Oscillatore di Volume
VolumeROC
VolumeROC[N]
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
WeightedAverage
WeightedAverage[N](price)
WeightedClose
WeightedClose[N]
WEND
Vedere WHILE/DO/WEND
WHILE/DO/WEND
WHILE (condition) DO
(action) WEND
Istruzione WHEN
WilderAverage
WilderAverage[N](price)
Williams
Williams[N](close)
Calcula il %R di Williams
WilliamsAccumDistr
WilliamsAccumDistr(price)
Indicatore Accumulazione/Distribuzione di
Williams
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
XOR
a XOR b
31 / 32
Glossario
Y
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
Year
Year[N]
Yesterday
Yesterday[N]
CODICE
IMPLEMENTAZIONE
DESCRIZIONE
ZigZag
ZigZag[Zr](price)
ZigZagPoint
ZigZagPoint[Zp](price)
Autres
CODICE
DESCRIZIONE
Somma
Sottrazione
Moltiplicazione
Divisione
Uguale
<>
Differenza
<
Strettamente inferiore
>
Strettamente superiore
<=
Inferiore
>=
Superiore
32 / 32