Salve,
vorrei creare uno scan che non scremi gli strumenti della mia lista, ma che semplicemente evidenzi se uno strumento risolve una determinata metrica oppure no.
Esempio:
-trend rialzista: prezzo di chiusura superiore a media mobile 5 periodi e media mobile 20 periodi
-trend ribassista: prezzo di chiusura inferiore a media mobile 5 periodi e inferiore a media mobile 20 periodi
-trend laterale: prezzo di chiusura inferiore a media mobile 5 periodi e superiore media mobile 20 periodi OPPURE prezzo di chiusura superiore a media mobile 5 periodi e inferiore media mobile 20 periodi
conferma tramite MACD
-trend rialzista: trigger line sopra la signal line
-trend ribassista: trigger line sotto la signal line
-inversione rialzista: quando la differential line incrocia dal basso verso l’alto la signal line
-inversione ribassista: quando la differential line incrocia dall’alto verso il basso la signal line
Vorrei capire come fare per far sì che ogni strumento riporti il risultato “Sì” se il criterio è verificato e “no” se invece non è verificato
Grazie mille
Massimo
Come desideri che venga determinato se un trend è Rialzista, Ribassista o Laterale?
Buongiorno,
ipotizando una risposta di tipo binario sarebbe perfetto se la condizione che dovesse verificarsi venisse determinata con un “1” e le altre due non verificate venissero indicate con uno “0”.
Esempio:
| titolo |
trend rialzista |
trend rib. |
trend laterale |
macd rialzista |
macd ribassista |
etc. |
| eni |
1 |
0 |
0 |
1 |
0 |
|
Ho visto uno screening del genere su metastock e mi piacerebbe poterlo ricreare anche qui.
Grazie mille davvero
Lo schema va bene, ma vorrei sapere come desideri che venga determinato un trend Rialzista, Ribassista o Laterale.
Ad esempio è rialzista quando il prezzo è sopra la media a 200 periodi e ribassista quando è sotto? E magari lo consideriamo laterale quando tra il prezzo e la media a 200 periodi ci soo vari incroci nelle ultime N candele?
Oppure in altro modo?
Scusami, non ho specificato che mi stavo riferendo a un trend di breve termine, per cui ipotizzavo questo:
-Trend rialzista se l’ultimo prezzo di chiusura è superiore sia alla media mobile a 5 periodi, sia a quella di 20 periodi.
-Trend ribassista se l’ultimo prezzo di chiusura è inferiore sia alla media mobile a 5 periodi, sia a quella di 20 periodi
– Trend laterale: ultimo prezzo di chiusura inferiore a media mobiule a 5 e superiore a media mobile 20, oppure superiore a media mobile 5 periodi e inferiore a media mobile a 20 periodi
Grazie mille
Ok, te lo faccio appena possibile.
Ecco fatto:
// restituisce i seguenti vslori:
//
// 1 = Rialzo
// 2 = Ribasso
// 3 = inversione Rialzista
// 4 = inversione Ribassista
//
Sma5 = average[5,0](close)
Sma20 = average[20,0](close)
Rialzo = close > max(Sma5,Sma20)
Ribasso = close < min(Sma5,Sma20)
//Laterale = ((close > Sma20) AND (close < Sma5)) OR ((close > Sma5) AND (close < Sma20))
MyMACD = Average[12,1](close) - Average[26,1](close)
MySignal = Average[9,1](MyMACD)
MyHisto = MyMACD - MySignal
UP = Rialzo AND (MyMACD > MySignal)
DN = Ribasso AND (MyMACD < MySignal)
invUP = MyHisto CROSSES OVER MySignal
invDN = MyHisto CROSSES UNDER MySignal
Segnale = 0
IF UP THEN
Segnale = 1
ELSIF DN THEN
Segnale = 2
ELSIF invUP THEN
Segnale = 3
ELSIF invDN THEN
Segnale = 4
ENDIF
SCREENER[Segnale](Segnale AS "1=UP,2=DN,3=up,4=dn")
quando restituisce i valori dei 4 possibili segnali, utilizzo tutto maiuscolo (UP e DN) per i segnali rialzisti e ribassisti, mentre tutto minuscolo (up e dn) per le inversioni. Questo perché il testo che spiega il criterio non può superare una certa lunghezza.
Se ti restituisce troppi segnali e non risci a vederli tutti puoi filtrarli con il prezzo cambiando l’ultima riga in:
SCREENER[Segnale AND (close > 15)](Segnale AS "1=UP,2=DN,3=up,4=dn")
in modo da vederne meno (nell’esempio solo quelli con prezzo > 15).
Mi sono accorto adesso che in realtà avevi già specificato nel post iniziale come determinare il trend. Scusami, non l’avevo letto bene.
Fantastico, grazie mille davvero!
Ho provato il codice e funziona bene, ho solo inserito la variabile “Laterale” che nel codice oroginale era inserita come testo.
Volevo chiederle, attualmente la colonna di risposta mi rimanda solo uno dei segnali (1 o 2 o 3 o 4 etc). Eventualmente sarebbe possibile modificare i lcodice affinché ogni colonna abbia la sua analisi e, modificare la risposta del segnale in sì=1 o no=0
| titolo |
trend rialzista |
trend rib. |
trend laterale |
macd rialzista |
macd ribassista |
etc. |
| eni |
1 |
0 |
0 |
1 |
0 |
|
In modo da avere non una scrematura dei titoli ma una panoramica complessiva, dove poter vedere al colpo d’occhio quali titoli della mia lista soddisfano i vari requisiti.
Grazie in anticipo!
Eccolo, il 9 iniziale serve solo per fare in modo che restino gli ZERI iniziali, altrimenti li toglierebbe:
// restituisce i seguenti vslori:
//
// Rialzo Ribasso inv.Rialz Inv.Ribas. Later.
// U D u d L
// 1 1 1 1 1
//
Sma5 = average[5,0](close)
Sma20 = average[20,0](close)
Rialzo = close > max(Sma5,Sma20)
Ribasso = close < min(Sma5,Sma20)
Laterale = ((close > Sma20) AND (close < Sma5)) OR ((close > Sma5) AND (close < Sma20))
MyMACD = Average[12,1](close) - Average[26,1](close)
MySignal = Average[9,1](MyMACD)
MyHisto = MyMACD - MySignal
UP = Rialzo AND (MyMACD > MySignal)
DN = Ribasso AND (MyMACD < MySignal)
invUP = MyHisto CROSSES OVER MySignal
invDN = MyHisto CROSSES UNDER MySignal
Segnale = 900000
IF UP THEN
Segnale = Segnale + 10000
ENDIF
IF DN THEN
Segnale = Segnale + 1000
ENDIF
IF invUP THEN
Segnale = Segnale + 100
ENDIF
IF invDN THEN
Segnale = Segnale + 10
ENDIF
IF Laterale THEN
Segnale = Segnale + 1
ENDIF
IF Segnale = 900000 THEN
Segnale = 0
ENDIF
SCREENER[Segnale AND (close > 15)](Segnale AS "- UDudL")
alla fine, se SEGNALE ha ancora valore 900000 significa che nessuna condizione è soddisfatta, per cui la variabile viene posta a ZERO in modo che non restituisca nessun valore.