Doppi minimi e massimi
Forums › ProRealTime forum Italiano › Supporto ProScreener › Doppi minimi e massimi
- This topic has 37 replies, 3 voices, and was last updated 1 year ago by robertogozzi.
Tagged: doppi, doppi minimi e massimi, doppio, doppio minimo e massimo, massimi, massimo, minimi, minimo, RSI
-
-
09/05/2021 at 10:07 PM #176841
ok, grazie…scritto in altro forum!
09/06/2021 at 6:10 PM #176894Questo è il codice dell’indicatore (vedi foto per il risultato):
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647ONCE p = 50 //50 periodi di storicoCond = 0MyRsi = Rsi[14](close)HH = highest[p](MyRsi)ONCE Max1 = 0ONCE Max2 = 0ONCE Minimo = 0ONCE Bar1 = 0ONCE Bar2 = 0ONCE BarMin = 0Max2 = HHFOR i = 0 TO (p - 1)IF (MyRsi[i] = Max2) THENBar2 = BarIndex[i]Minimo = Max2Max1 = 0FOR j = i DOWNTO 0IF MyRsi[j] <> Max2 THENIF MyRsi[j] < Minimo THENMinimo = MyRsi[j]BarMin = BarIndex[j]Max1 = 0ELSIF (MyRsi[j] > Minimo) AND (MyRsi[j] < Max2) THENIF (MyRsi[j] > Max1) THENMax1 = MyRsi[j]Bar1 = BarIndex[j]Cond = 1BreakENDIFENDIFENDIFNEXTBreakENDIFNEXTIF Cond THENDrawText("◉",Bar1,Max1 + 2,dialog,bold,12) coloured(255,215,0,255)DrawText("●",Bar2,Max2 + 2,dialog,bold,10) coloured(0,0,255,150)DrawText("●",BarMin,Minimo - 2,dialog,bold,10) coloured(0,0,255,150)Max1 = 0Max2 = 0Minimo = 0Bar1 = 0Bar2 = 0BarMin = 0ENDIFRETURNe questo è lo screener:
1234567891011121314151617181920212223242526272829303132333435363738394041ONCE p = 50 //50 periodi di storicoCond = 0MyRsi = Rsi[14](close)HH = highest[p](MyRsi)ONCE Max1 = 0ONCE Max2 = 0ONCE Minimo = 0Max2 = HHx = 0IF Not (Cond[1] AND (HH = HH[1])) THENFOR i = 0 TO (p - 1)IF (MyRsi[i] = Max2) THENMax1 = 0FOR j = i DOWNTO 0IF MyRsi[j] <> Max2 THENIF MyRsi[j] < Minimo THENMinimo = MyRsi[j]Max1 = 0ELSIF (MyRsi[j] > Minimo) AND (MyRsi[j] < Max2) THENIF (MyRsi[j] > Max1) THENMax1 = MyRsi[j]Cond = 1BreakENDIFENDIFENDIFNEXTBreakENDIFNEXTx = CondENDIFIF Cond THENMax1 = 0Max2 = 0Minimo = 0IF Cond[1] THENx = 0ENDIFENDIFSCREENER[x]09/07/2021 at 9:16 AM #176914Questa è un’altra soluzione che mi sembra dia risultati più vicini a quello che vuoi.
Indicatore:
12345678910111213141516171819202122232425262728ONCE p = 50 //50 periodi di storicoCond = 0MyRsi = Rsi[14](close)Max1 = MyRsiBar1 = BarIndexMax2 = highest[p](MyRsi)Minimo = lowest[p](MyRsi)FOR i = 0 TO (p - 1)IF MyRsi[i] = Minimo THENBarMin = BarIndex[i]ELSIF MyRsi[i] = Max2 THENBar2 = BarIndex[i]ELSIF MyRsi[i] > Max1 THENMax1 = MyRsi[i]Bar1 = BarIndex[i]ENDIFNEXTIF (Max2 > Max1) AND (Max1 > Minimo) THENIF (Bar2 < BarMin) AND (BarMin < Bar1) THENCond = 1ENDIFENDIFIF Cond THENDrawText("◉",Bar1,Max1 + 2,dialog,bold,12) coloured(255,215,0,255)DrawText("●",Bar2,Max2 + 2,dialog,bold,10) coloured(0,0,255,150)DrawText("●",BarMin,Minimo - 2,dialog,bold,10) coloured(0,0,255,150)ENDIFRETURN MyRsi AS "Rsi"Screener:
1234567891011121314151617181920212223ONCE p = 50 //50 periodi di storicoCond = 0MyRsi = Rsi[14](close)Max1 = MyRsiBar1 = BarIndexMax2 = highest[p](MyRsi)Minimo = lowest[p](MyRsi)FOR i = 0 TO (p - 1)IF MyRsi[i] = Minimo THENBarMin = BarIndex[i]ELSIF MyRsi[i] = Max2 THENBar2 = BarIndex[i]ELSIF MyRsi[i] > Max1 THENMax1 = MyRsi[i]Bar1 = BarIndex[i]ENDIFNEXTIF (Max2 > Max1) AND (Max1 > Minimo) THENIF (Bar2 < BarMin) AND (BarMin < Bar1) THENCond = 1ENDIFENDIFSCREENER[Cond]Dalle foto si può vedere che a volte ci sono più punti blù o gialli l’uno vicino all’altro. E’ dovuto al fatto che in un periodo (ad esempio di 50 barre), il pattern può essere verificato sia sulla 39esima e 37esima (numeri a caso a titolo di esempio).
Si può notare anche che viene verificato se c’è un pattern nelle ultima 50 candele, ma può anche non essere sull’ultima a destra (quella corrente). Per averlo su quella corrente, basta sostituire la linea 20 dello screener con questa:1Cond = (Bar1 = BarIndex)C’è anche una caso (Pic3) in cui c’è un punto che non è né BLU, né GIALLO. E’ dovuto al fatto che per un precedente pattern era GIALLO, mentre per quello corrente lo stesso punto era BLU, per cui si sono sovrapposti dando origine ad un colore imprevisto.
09/07/2021 at 9:21 AM #176918Io le verifiche dei vari punti l’ho fatta SOLO sull’Rsi, non sui prezzi.
Si può anche fare sui prezzi, però dovrei sapere se devono essere sulole stesse candele, oppure anche un pò sfalzati. Si può anche fare SOLO ui prezzi, senza considerare l’Rsi.09/07/2021 at 10:02 AM #176919Ciao, molte grazie anche della seconda soluzione che, a prima vista, sembra effettivamente migliore.
Purtroppo, come temevo, questo indicatore fornisce tanti…direi troppi casi che c’entrano poco o nulla. Sarebbe necessario forse un ulteriore filtro, per chiederti il quale prendo ad esempio l’immagine “RSI-1.png” allegata.
Da tale immagine, si capisce come il Proscreener abbia assolutamente fatto “il suo” per quel che riguarda l’indicatore RSI…ma ciò non è sufficiente a trovare un titolo che abbia effettivamente creato un doppio minimo … mentre infatti i punti 1a ed 1b corrispondono ai desiderata..altrettanto non si può dire dei punti 1 e 2, inerenti il prezzo (vd. immagine “RSI-2.png”…Da questa immagine si vede tra i 2 minimi 1 e 2 esservi un gap di quasi il 15%).
Visto ciò..a questo punto ti chiedo se possibile AGGIUNGERE un ulteriore filtro, questa volta inerente il prezzo: tra i 2 punti 1 e 2 (a prescindere essi siano i 2 minimi di un doppio minimo o i 2 massimi di un doppio massimo) NON vi deve essere una “distanza” superiore al 3%. Se quest’ultimo valore (3%) si potesse modificare manualmente, sarebbe ancora meglio.
Grazie ciao
09/07/2021 at 10:19 PM #176981Si, sia i periodi LookBack, che la percentuale, che RSI puoi cambiarli tu nel codice, come vuoi.
Indicatore:
123456789101112131415161718192021222324252627282930313233ONCE p = 50 //50 periodi di storicoONCE PerCent= 3 //3% max. differenza tra i due MASSIMICond = 0MyRsi = Rsi[14](close)Max1 = MyRsiBar1 = BarIndexMax2 = highest[p](MyRsi)Minimo = lowest[p](MyRsi)FOR i = 0 TO (p - 1)IF MyRsi[i] = Minimo THENBarMin = BarIndex[i]ELSIF MyRsi[i] = Max2 THENBar2 = BarIndex[i]ELSIF MyRsi[i] > Max1 THENMax1 = MyRsi[i]Bar1 = BarIndex[i]ENDIFNEXTIF (Max2 > Max1) AND (Max1 > Minimo) THENIF (Bar2 < BarMin) AND (BarMin < Bar1) THENGap = Max2 - Max1Diff = abs(Gap * 100 / Max2) <= PerCentIF Diff THENCond = 1ENDIFENDIFENDIFIF Cond THENDrawText("◉",Bar1,Max1 + 2,dialog,bold,12) coloured(255,215,0,255)DrawText("●",Bar2,Max2 + 2,dialog,bold,10) coloured(0,0,255,150)DrawText("●",BarMin,Minimo - 2,dialog,bold,10) coloured(0,0,255,150)ENDIFRETURN MyRsi AS "Rsi"Screener:
1234567891011121314151617181920212223242526272829ONCE p = 50 //50 periodi di storicoONCE PerCent= 3 //3% max. differenza tra i due MASSIMICond = 0MyRsi = Rsi[14](close)Max1 = MyRsiBar1 = BarIndexMax2 = highest[p](MyRsi)Minimo = lowest[p](MyRsi)FOR i = 0 TO (p - 1)IF MyRsi[i] = Minimo THENBarMin = BarIndex[i]ELSIF MyRsi[i] = Max2 THENBar2 = BarIndex[i]ELSIF MyRsi[i] > Max1 THENMax1 = MyRsi[i]Bar1 = BarIndex[i]ENDIFNEXTIF (Max2 > Max1) AND (Max1 > Minimo) THENIF (Bar2 < BarMin) AND (BarMin < Bar1) THENGap = Max2 - Max1Diff = abs(Gap * 100 / Max2) <= PerCentIF Diff THEN//Cond = 1 //restituisce l'Ultimo trovato (anche se vecchio)Cond = (Bar1 = BarIndex) //restituisce solo quelli rilevati sulla candela correnteENDIFENDIFENDIFSCREENER[Cond]09/08/2021 at 9:53 PM #177058Ciao, grazie dell’ultimo messaggio.
Ti allego un esempio di un titolo trovato tramite l’ultimo ProScreener che mi hai inviato, nel file CATTURA.PNG.
Sicuramente l’ultimo filtro ha migliorato le cose…tuttavia c’è ancora qualcosa che non capisco.
Nel mio messaggio del 08/05/2021 at 12:44 PM, ti avevo chiesto di aggiungere un ulteriore filtro per evitare venissero “scelti” titoli “sbagliati” e avevo scritto ciò:
“Chiedo allora di modificare il Proscreener nel seguente modo (aggiungo le 2 condizioni in grassetto maiuscole):
Vorrei un Proscreener che mi permetta di filtrare i titoli il cui RSI, negli ultimi N periodi (questo N sia un valore che io possa modificare), abbia raggiunto:
- un valore massimo X (corrispondente ad es al punto 1 del file Doppio massimo.JPG, per chiarire), un valore inferiore X-Y (punto 2) ed un nuovo massimo minore di X ma maggiore di X-Y (punto 3) (esempio di andamento RSI in caso di DOPPIO MASSIMO). UNA VOLTA RAGGIUNTO TALE PUNTO 3, IL VALORE DELL’RSI DEVE RIMANERE COMPRESO TRA I VALORI DEI PUNTI 1 E 2.
OPPURE (cerco entrambi i casi)
- un valore minimo X (corrispondente ad es al punto 4 del file Doppio minimo.JPG, per chiarire), un valore superiore X+Y (punto 5) ed un nuovo minimo maggiore di X ma minore di X+Y (punto 6) (esempio di andamento RSI in caso di DOPPIO MINIMO). UNA VOLTA RAGGIUNTO TALE PUNTO 6, IL VALORE DELL’RSI DEVE RIMANERE COMPRESO TRA I VALORI DEI PUNTI 4 E 5.”
_____________________________________________________________________________________
A tale scopo ho allegato nuovamente i files “Doppio-minimo.jpg” e “Doppio-massimo.jpg” in cui avevo inserito i punti 1,2,3,4,5,6 appositi per chiarire.
Si potrebbe aggiungere tale “filtro” ?
Molte grazie! 🙂
09/09/2021 at 8:05 AM #177084Che significa “UNA VOLTA RAGGIUNTO TALE PUNTO 3, IL VALORE DELL’RSI DEVE RIMANERE COMPRESO TRA I VALORI DEI PUNTI 1 E 2“? Quando viene restituito (o visualizzato) un segnale è finita li. Quello che accade dalla barra successiva riguarda un eventuale prossimo segnale.
L’unica cosa da fare è stabilire che i periodi vadano di 50 in 50 in modo fisso, per cui dopo avere esaminato 50 barre, non esamino anche la successiva, ma solo dopo che ne siano passate altre 50. Non so se è questo che vuoi.
Non capisco a cosa servono i punti 4, 5, ecc… per fare quello che vuoi servono 1, 2 e 3 poi si ricomincia da capo.
Cerca di spiegare con il testo (senza immagini) cosa vuoi.
09/10/2021 at 9:01 PM #177229Allora..circa la frase “UNA VOLTA RAGGIUNTO TALE PUNTO 3, IL VALORE DELL’RSI DEVE RIMANERE COMPRESO TRA I VALORI DEI PUNTI 1 E 2“…cerco di spiegarmi e cioè: io ovviamente con il ProScreener sarei interessato a trovare dei doppi massimi / minimi ancora “in vigore”, appena formatisi per poter sfruttare il movimento che ne deriva, quindi cerco figure in cui il prezzo ancora non sia “scappato” superando il vertice del triangolo formato.
Quindi, considerando il DOPPIO MASSIMO come un triangolo costituito da una base che unisce i 2 MASSIMI ed un vertice in basso (costituito dal minimo) (ovviamente il DOPPIO MINIMO il contrario e cioè un triangolo costituito da una base che unisce i 2 MINIMI ed un vertice in alto (costituito dal massimo), io vorrei aggiungere alla regola scritta finora un ulteriore filtro che permetta di selezionare solo i titoli in cui (oltre ad aver visto la formazione della figura a 3 vertici per l’RSI) il prezzo sia (ancora) compreso tra i 2 minimi (o massimi) ed il vertice stesso della figura…il tutto per evitare i titoli per i quali, ormai, il vero movimento rialzista / ribassista sia già, in buona parte, “consumato”..
Se non mi fossi spiegato a sufficienza, dimmi… grazie
09/11/2021 at 11:49 AM #177248Ecco il nuovo screener, verifica che il prezzo sia tra quello del minimo e del massimo (più basso):
12345678910111213141516171819202122232425262728293031323334ONCE p = 50 //50 periodi di storicoONCE PerCent= 3 //3% max. differenza tra i due MASSIMICond = 0MyRsi = Rsi[14](close)Max1 = MyRsiBar1 = BarIndexMax2 = highest[p](MyRsi)Minimo = lowest[p](MyRsi)FOR i = 0 TO (p - 1)IF MyRsi[i] = Minimo THENBarMin = BarIndex[i]PrezzoMin= close[i]ELSIF MyRsi[i] = Max2 THENBar2 = BarIndex[i]Prezzo2 = close[i]ELSIF MyRsi[i] > Max1 THENMax1 = MyRsi[i]Bar1 = BarIndex[i]Prezzo1 = close[i]ENDIFNEXTIF (Max2 > Max1) AND (Max1 > Minimo) THENIF (Bar2 < BarMin) AND (BarMin < Bar1) THENGap = Max2 - Max1Diff = abs(Gap * 100 / Max2) <= PerCentIF Diff THENIF (close <= Prezzo1) AND (close >= PrezzoMin) THEN//Cond = 1 //restituisce l'Ultimo trovato (anche se vecchio)Cond = (Bar1 = BarIndex) //restituisce solo quelli rilevati sulla candela correnteENDIFENDIFENDIFENDIFSCREENER[Cond]09/11/2021 at 11:51 AM #177249Se il confronto vuoi farlo tra il prezzo Minimo ed il prezzo Massimo più alto, basta che alla riga 27 sostituisci Prezzo1 con Prezzo2.
09/11/2021 at 2:04 PM #177254Ringrazio ma compare il messaggio di errore che allego. Devo modificare qualcosa?
P.S. forse correlato con l’errore ma non capisco purtroppo le tue 2 frasi “verifica che il prezzo sia tra quello del minimo e del massimo (più basso)” e “Se il confronto vuoi farlo tra il prezzo Minimo ed il prezzo Massimo più alto, basta che alla riga 27 sostituisci Prezzo1 con Prezzo2.”
Intendi dire che, se voglio cercare doppi massimi, devo lasciare scritto “Prezzo1” e, se al contrario voglio cercare Doppi minimi devo scrivere “Prezzo 2”? Non capisco quale sia ilo “confronto” a cui ti riferisci….
09/11/2021 at 3:15 PM #177258Scusa, mi sono dinenticato di commentare la linea 15. Commentala.
Se vuoi usare Prezzo2 devi sostituire Prezzo1 come ti avevo detto e togliere il commento dalla riga 15 e metterlo alla riga 19.
09/11/2021 at 4:05 PM #177259purtroppo non riesco a far funzionare questo proscreener…ho aggiunto un commetno alla linea 15 ma compare l’errore ERRORE DI SINTASSI: UTILIZZA LA VARIABILE PREZZO2.
Ti aggiungo, sinceramente..non aver minimamente capito cosa siano le 2 grandezze prezzo 1 e 2..io sapevo dover inserire le 3 grandezze
- ONCEp (PERIODO STORICO)
- ONCEPERCENT (la differenza tra i 2 massimi)
- MyRSI (durata dell’RSI) ..e stop.
Puoi gentilmente spiegare (a me e a coloro che leggeranno la pagina) a cosa corrispondano le grandezze PREZZO 1 e PREZZO 2? Ci sono due prezzi?? Devo inserirle queste grandezze..oltre alle 3 che ho elencato? Cosa rappresentano?? ti chiedo gentilmente di chiarirmi..altrimenti non riuscirò, purtroppo, ad utilizzare tale ProScreener!
Grazie
09/11/2021 at 4:41 PM #177263Siccome l’indicatore è basato sull’RSI, i prezzi erano ignorati. Dal momento che hai chiesto che i prezzi restino nel range tra il Minimo assoluto del periodo ed il Massimo inferiore, ho dovuto usare 3 variabili, Prezzo2 (quello in corrispondenza del’RSI più alto), PrezzoMin che è il prezzo in corrispondenza dell’RSI più basso e Prezzo1 che è il prezzo in corrispondenza dell’RSI maggiore del minimo (ma inferiore al massimo) ed è quello più a destra sullo schermo.
Non devi inserirli tu, se li trova da solo. Tu devi solo variare (se lo vuoi) p, i periodi entro i quali verificare i massimi ed il minimo (deve essereci un periodo, che sia 10, 50 o 100 barre) e PerCent, la percentuale massima d’incremento.
Questo è l’indicatore ulteriormente modificato, perché la differenza di percentuale l’avevo calcolata sull’RSI invece che sul PREZZO:
123456789101112131415161718192021222324252627282930313233343536373839ONCE p = 50 //50 periodi di storicoONCE PerCent= 3 //3% max. differenza tra i due MASSIMICond = 0MyRsi = Rsi[14](close)Max1 = MyRsiBar1 = BarIndexMax2 = highest[p](MyRsi)Minimo = lowest[p](MyRsi)FOR i = 0 TO (p - 1)IF MyRsi[i] = Minimo THENBarMin = BarIndex[i]PrezzoMin= close[i]ELSIF MyRsi[i] = Max2 THENBar2 = BarIndex[i]Prezzo2 = close[i]ELSIF MyRsi[i] > Max1 THENMax1 = MyRsi[i]Bar1 = BarIndex[i]Prezzo1 = close[i]ENDIFNEXTIF (Max2 > Max1) AND (Max1 > Minimo) AND (Prezzo2 > Prezzo1) THENIF (Bar2 < BarMin) AND (BarMin < Bar1) THENGap = Prezzo2 - Prezzo1Diff = abs(Gap * 100 / Prezzo2) <= PerCentIF Diff THENIF (close <= Prezzo1) AND (close >= PrezzoMin) THEN//Cond = 1 //restituisce l'Ultimo trovato (anche se vecchio)Cond = (Bar1 = BarIndex) //restituisce solo quelli rilevati sulla candela correnteENDIFENDIFENDIFENDIFIF Cond THENDrawText("◉",Bar1,Max1 + 2,dialog,bold,12) coloured(255,215,0,255)DrawText("●",Bar2,Max2 + 2,dialog,bold,10) coloured(0,0,255,150)DrawText("●",BarMin,Minimo - 2,dialog,bold,10) coloured(0,0,255,150)ENDIFRETURN MyRsi AS "Rsi"e questo è lo screener, predisposto per Prezzo1, ovvero il primo massimo (quello più basso tra i due) partendo da destra, perché il codice deve sempre partire dalla candela corrente ed effettuare le ricerche all’indietro:
123456789101112131415161718192021222324252627282930313233343536ONCE p = 50 //50 periodi di storicoONCE PerCent= 3 //3% max. differenza tra i due MASSIMICond = 0MyRsi = Rsi[14](close)Max1 = MyRsiBar1 = BarIndexMax2 = highest[p](MyRsi)Minimo = lowest[p](MyRsi)FOR i = 0 TO (p - 1)IF MyRsi[i] = Minimo THENBarMin = BarIndex[i]PrezzoMin= close[i]ELSIF MyRsi[i] = Max2 THENBar2 = BarIndex[i]Prezzo2 = close[i]ELSIF MyRsi[i] > Max1 THENMax1 = MyRsi[i]Bar1 = BarIndex[i]Prezzo1 = close[i]ENDIFNEXTIF Prezzo1 OR Prezzo2 OR PrezzoMin THENENDIFIF (Max2 > Max1) AND (Max1 > Minimo) AND (Prezzo2 > Prezzo1) THENIF (Bar2 < BarMin) AND (BarMin < Bar1) THENGap = Prezzo2 - Prezzo1Diff = abs(Gap * 100 / Prezzo2) <= PerCentIF Diff THENIF (close <= Prezzo1) AND (close >= PrezzoMin) THEN//Cond = 1 //restituisce l'Ultimo trovato (anche se vecchio)Cond = (Bar1 = BarIndex) //restituisce solo quelli rilevati sulla candela correnteENDIFENDIFENDIFENDIFSCREENER[Cond]Se, invece del Prezzo1 (che è il Massimo minore, quello più a destra), vuoi fare riferimento all’altro, devi solo variare la riga 29 (non è più la stessa di prima perché ho aggiunto due righe) e sostituirlo con Prezzo2.
-
AuthorPosts
Find exclusive trading pro-tools on