Buona sera volevo chiedervi un aiuto ,vorrei fare un semplice screener con l incrocio delle medie mobili 50 200 ma vorrei che la media 200 fosse in rialzo io ho provato cosi ma non mi sembra corretto,se qualcuno mi puo suggerire il metodo corretto gli sarei grato
indicator1 = Average[50](close)
indicator2 = Average[200](close)
c1 = (indicator1[3] CROSSES OVER indicator2[3])
c2= Average [200](close)>(close)[5]
SCREENER[c1-c2]
c1 = vero (cioè 1) se vi è stato un incrocio rialzista 3 barre prima
c2 = vero se la media 200 attuale > del prezzo di chiusura di 5 barre prima
Alla fine restituisci la differenza tra c1 e c2.
E’ un codice che non ha senzo, il risultato della differenza tra 0 (oppure 1) ed il prezzo di chiusura di 5 barre fa non ha significato e produrrà quasi sempre un valore negativo.
Che vuoi fare esattamente?
ma vorrei che la media 200 fosse in rialzo
che significa che vuoi che il trend sia al rialzo, cioè il prezzo sopra la media 200 e che la media 50 incroci, al rialzo, la media 200?
Roberto
Ciao Roberto e grazie quello che io voglio è uno screener che selezioni un titolo dove la media mobile 50 incroci al rialzo la media mobile 200
indicator1 = Average[50](close)
indicator2 = Average[200](close)
c1 = (indicator1[3] CROSSES OVER indicator2[3])
e fino a qui ci siamo
Poi vorrei avere un altra condizione e cioé che la media a 200 abbia un trend in salita da almeno 5 candele e questo era il mio tentativo per creare tale condizione
c2= Average [200](close)>(close)[5]
spero di essermi spiegato , allego una foto dove la media a 200 e quello rossa
Ho modificato il tuo post utilizzanto il pulsante “Insert PRT code” identificato da <> nella barra grigia quando scrivi un post, ti prego di farlo per facilitare la comprensione del codice. Grazie.
Ho capito che vuoi l’incrocio delle medie che è dato da
indicator1 = Average[50](close)
indicator2 = Average[200](close)
c1 = (indicator1 CROSSES OVER indicator2)
perché avevi aggiunto il numero 3 tra parentesi qusdre? Questo serve per fare riferimento ad un incrocio avvenuto 3 barre prima.
Il tuo tentativo di cercare un trend in salita
c2= Average [200](close)>(close)[5]
non è detto che vada bene, perché tu confronti la media attuale con il prezzo di chiusura di 5 candele prima. Intanto può darsi che nel mezzo ci siano state anche candele più alte o basse, quindi non garantisce per il trend. Inoltre se la media a 200 periodi deve essere maggiore della chiusura attuale significa che il trend è al RIBASSO, non al rialzo, perché il prezzo sta sotto la media!
Da quello che ho capito vuoi che la chiusura delle ultime 5 (o altro numero da te desiderato) candele sia sempre più alta della precedente, in tal caso occorre
c2 = Average[200](close)>Average[200](close)[1]
dove confronti la media attuale con quella della candela precedente, dopodiché verifichi che la condizione sia vera per tutte le ultime 5 candele
IF summation[5](c2) = 5 THEN.....
la condizione sarà verificata quando il risultato sarà 5 su 5 candele, ovvero tutte le ultime 5 candele hanno una media a 200 periodi crescente.
Roberto
Ok grazie per info su insert prt code, si giusto [Da quello che ho capito vuoi che la chiusura delle ultime 5 (o altro numero da te desiderato) candele sia sempre più alta della precedente ] e quello che voglio , ma come finisco il code?
indicator1 = Average[50](close)
indicator2 = Average[200](close)
c1 = (indicator1 CROSSES OVER indicator2)
c2 = Average[200](close)>Average[200](close)[1]
IF summation[5](c2) = 5 THEN.....
SCREENER[c1 and c2]
Scusa se ti ho risposto in ritardo
Così, se vuoi che la media a 200 SIA ogni volta superiore alla candela precedente, per le ultime 5 candele (ma forse non era esattamente quello che desideravi)
indicator1 = Average[50](close)
indicator2 = Average[200](close)
c1 = (indicator1 CROSSES OVER indicator2)
c2 = summation[5](indicator2 > indicator2[1]) = 5
SCREENER[c1 and c2]
così, invece, se vuoi che il prezzo di CHIUSURA sia superiore al precedente e questo per tutte le ultime 5 candele (forse è quello che desideravi tu):
indicator1 = Average[50](close)
indicator2 = Average[200](close)
c1 = (indicator1 CROSSES OVER indicator2)
c2 = summation[5](close > close[1]) = 5
SCREENER[c1 and c2]
A = Average[50](close)
B = Average[200](close)
C = (A [3]CROSSES OVER B [3])
D = (close>close[3])
E= (open>open[3])
F= (close)> Average [200]
SCREENER[C and D and E and F ]
Adesso ho generato questo codice che mi permette di avere la chiusura dell ultima candela superiore all’ apertura della candela di gg gg prima e che ci sia stato l ‘incrocio della SMA 50 /200 tre gg prima e che l’ ultima candela sia superiore all SMA 200, mi piacerebbe anche riuscire ad avere la curva della sma 200 rivolta verso l alto ma non so come fare
Curva rivolta verso l’alto significa che per le ultime n candele la media 200 è progressivamente in salita, quindi si può scrivere:
ONCE n = 5 //ultime 5 candele (puoi mettere anche solo 1)
A = Average[50](close)
B = Average[200](close)
C = A[3] CROSSES OVER B[3]
D = close > close[3]
E = open > open[3]
F = close > B
G = (summation[n](B > B[1]) = n)
SCREENER[C and D and E and F and G]
dove ho aggiunto la condizione G che verifica che nella ultime n candele la media a 200 sia sempre superiore a quella della candela precedente. Ovviamente se ti basta che sia superiore solo all’ultima precedente basta che all’inizio metta n = 1.
Perfetto ,grazie mille Roberto
Ho aggiunto un istruzione di breakout come ultima condizione ma mi piacerebbe avere in aggiunta la condizione che prevede che l ultima candela abbia fatto un ritraccio del 10% dal massimo dopo l incrocio delle medie mobili spero sia chiaro , allego anche foto
//N° di candele
ONCE n =20
// La SMA 50 deve incrociare al rialzo SMA _200
A = Average[20](close)
B = Average[50](close)
C = (A [n]CROSSES OVER B [n])
//l utima candela deve avere la chiusura superiore all apertura della candela di n chiusure fa
D = (close>close[n])
E= (open>open[n])
//Nelle ultime n candele la SMA 200 deve essere sempre superiore alla candela precedente per aver la curva della SMA al rialzo
F= (close)> Average [200]
G=(summation[n] (B>B[1])=n)
//Breakout
B1= (close<open[3])
SCREENER[C and D and E and F and G and B1 ]
buona sera sig. Roberto , mi potrebbe consigliare qualcosa ?
Si, ma devo avere un pò di tempo per lavorarci perché questa richiesta è un pò più complicata.
Si si tranquillo per ora io sono arrivato a questo ma non mi convince
//N° di candele
ONCE n =20
// La SMA 50 deve incrociare al rialzo SMA _200
A = Average[20](close)
B = Average[50](close)
C = (A [n]CROSSES OVER B [n])
//l utima candela deve avere la chiusura superiore all apertura della candela di n chiusure fa
D = (close>close[n])
E= (open>open[n])
//Nelle ultime n candele la SMA 200 deve essere sempre superiore alla candela precedente per aver la curva della SMA al rialzo
F= (close)> Average [200]
G=(summation[n] (B>B[1])=n)
//Breakout
I=close< (highest [20](high)- (range * 0.5))
SCREENER[C and D and E and F and G and I ]
allego la foto di un risultato
Un altra domanda , come posso filtrare i titoli per la loro capitalizzazione?
Prova questa verisione, dove ho aggiunto in alto una percentuale (che puoi cambiare) e in fondo il calcolo del massimo e della variabile H che verifica che il prezzo abbia ritracciato almeno di quella percentuale.
//N° di candele
ONCE n = 10
ONCE Percentuale = 10
ONCE BarraEvento = 0
ONCE Massimo = 0
// La SMA 50 deve incrociare al rialzo SMA _200
A = Average[20](close)
B = Average[50](close)
C = (A [n]CROSSES OVER B [n])
IF C THEN
BarraEvento = BarIndex
ENDIF
IF BarraEvento THEN
Massimo = Max(high,Massimo)
ENDIF
//l utima candela deve avere la chiusura superiore all apertura della candela di n chiusure fa
D = (close>close[n])
E = (open>open[n])
//Nelle ultime n candele la SMA 200 deve essere sempre superiore alla candela precedente per aver la curva della SMA al rialzo
F= (close)> Average [200]
G=(summation[n] (B>B[1])=n)
//Breakout
// I=close< (highest [20](high)- (range * 0.5))
I = close <= (Massimo * (1 - (Percentuale/100)))
SCREENER[D and E and F and G and I]
Per quanto riguarda il post sulla capitalizzazione, spiegami cos’è e da cosa è data.