Tutte le divergenze RSI
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Tutte le divergenze RSI
- This topic has 6 replies, 3 voices, and was last updated 9 months ago by PaFM.
-
-
02/07/2024 at 2:41 AM #227499
Salve,
sto cercando un modo per individuale automaticamente tutte le divergenze (dirette e nascoste) presenti tra prezzo ed RSI a 12 periodi, ho navigato nella libreria ed ho importato il codice qui sotto, ma funziona solo per le divergenze dirette (disegnando dei segmenti colorati direttamente sul RSI), ma a seconda di come viene settato il periodo (N=numero di barre) individua (alternativamente) solo quelle di breve termine o solo quelle più “lunghe”, mentre io vorrei che venissero individuate tutte; ed inoltre non trova le divergenze nascoste.
Personalizzato con RSI a 1212345678910111213141516171819202122232425262728293031323334353637383940414243///N= ///N is the number of bars to look back for a divergence.myrsi = RSI[12](close)IF (myrsi[1]>myrsi AND myrsi[1]>myrsi[2]) THENnewmaxrsi=myrsi[1]oldmaxrsi=highest[N](myrsi)newmaxprice=close[1]oldmaxprice=Highest[N](close)IF(newmaxrsi<oldmaxrsi AND newmaxprice>oldmaxprice[1]) THENfor j=1 to Nif myrsi[j]=oldmaxrsi thenzzr=jdrawsegment (barindex[1], myrsi[1], barindex[zzr], myrsi[zzr])coloured(155,0,0)style(line,2)DRAWPOINT(barindex[1], myrsi[1],1)coloured(155,0,0,0)BORDERCOLOR(155,0,0)DRAWPOINT(barindex[zzr], myrsi[zzr],1)coloured(155,0,0,0)BORDERCOLOR(155,0,0)endifnextendifendifIF (myrsi[1]<myrsi AND myrsi[1]<myrsi[2]) THENnewminrsi=myrsi[1]oldminrsi=lowest[N](myrsi)newminprice=close[1]oldminprice=lowest[N](close)IF(newminrsi>oldminrsi AND newminprice<oldminprice[1]) THENfor j2=1 to Nif myrsi[j2]=oldminrsi thenzzr2=j2drawsegment (barindex[1], myrsi[1], barindex[zzr2], myrsi[zzr2])coloured(0,155,0)style(line,2)DRAWPOINT(barindex[1], myrsi[1],1)coloured(0,155,0,0)BORDERCOLOR(0,155,0)DRAWPOINT(barindex[zzr2], myrsi[zzr2],1)coloured(0,155,0,0)BORDERCOLOR(0,155,0)endifnextendifendifreturn myrsi as "RSI"Andando avanti nella ricerca ho trovato questo secondo codice, che ho personalizzato, che dovrebbe individuare entrambi i tipi di divergenze con delle frecce sul grafico in alto, ma non esce assolutamente nulla.
Ho modificato1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162//RSI Divergences By Frank (Francesco)//Description: the indicator draws arrows on chart as entry points when a direct or an hidden RSI divergence is found.//When a DIRECT divergence is found, "dd" (direct divergence) text is added to chart over (Sell signal) or under (Buy signal) the arrow//When an HIDDEN or INVERSE divergence is found, "hd" (hidden divergence) text is added to chart over (Sell signal) or under (Buy signal) the arrow//Variables://RsiPeriod: number of bars to calculare RSI value//RsiOverSold: Oversold Level//RsiOverBought: OverBought Level//MinBarRange: minimum distance from two consecutive RSI Highs or RSI LowsRge = averagetruerange[10](close)MyRSI = rsi[RsiPeriod](Close)ONCE ShiftText = 3RsiMax = MyRSI < MyRSI[1] and MyRSI[1] > MyRSI[2] and MyRSI[1] > RsiOverBoughtRsiMin = MyRSI > MyRSI[1] and MyRSI[1] < MyRSI[2] and MyRSI[1] < RsiOverSoldif RsiMax thenRSIMax1 = MyRSI[1]High1 = Close[1]for I = MinBarRange to 40if RsiMax[I] thenRSIMax2 = MyRSI[I + 1]High2 = Close[I + 1]If High1 > High2 and RSIMax1 < RSIMax2 thenDRAWARROWDOWN(barindex, High + Rge / ShiftText)coloured(255,192,203,255)DRAWTEXT("dd", barindex, High + Rge / ShiftText / 0.3,SansSerif,Italic,10)coloured(0,0,255,255)elsif High1 < High2 and RSIMax1 > RSIMax2 thenDRAWARROWDOWN(barindex, High + Rge / ShiftText)coloured(255,192,203,255)DRAWTEXT("hd", barindex, High + Rge / ShiftText / 0.2,SansSerif,Italic,10)coloured(0,0,255,255)endifbreakendifnextendifif RsiMin thenRSIMin1 = MyRSI[1]Low1 = Close[1]for I = MinBarRange to 80if RSIMin[I] thenRSIMin2 = MyRSI[I + 1]Low2 = Close[I + 1]If Low1 < Low2 and RSIMin1 > RSIMin2 thenDRAWARROWUP(barindex, lOW - Rge / ShiftText)coloured(0,0,255,255)DRAWTEXT("dd", barindex, lOW - Rge / ShiftText / 0.3,SansSerif,Italic,10)coloured(0,0,255,255)elsif Low1 > Low2 and RSIMin1 < RSIMin2 thenDRAWARROWUP(barindex, lOW - Rge / ShiftText)coloured(0,0,255,255)DRAWTEXT("hd", barindex, lOW - Rge / ShiftText / 0.2,SansSerif,Italic,10)coloured(0,0,255,255)endifbreakendifnextendifreturnGrazie in anticipo per il prezioso aiuto
Cordialmente
P02/07/2024 at 11:45 AM #227529Ciao, anche questo fornisce le discrepanze nascoste:
https://www.prorealcode.com/prorealtime-indicators/divergences-and-hidden-divergences-toolbox/
il N=numero di barre è configurabile dal pannello di configurazione
02/09/2024 at 2:41 AM #227699Grazie del suggerimento Jacques, sei molto cortese; in realtà ho passato diverse ore a provare tutte le alternative – per le divergenze – che sono presenti nella library, ma purtroppo non ne trovo nemmeno una che faccia al mio caso, o perché non funziona del tutto o perché non è personalizzabile come desidero o perché ne trova solo alcune oppure addirittura ne trova troppe … non c’è niente di ben fatto in realtà su questo argomento, peccato perché sarebbe davvero utile ….. se qualche anima pia mi vuole aiutare è il benvenuto …..
Cordialmente
PPS Ho provato ad usare anche l’indicatore di default su PRT ma è molto limitato, non è personalizzabile, graficamente è orribile e non trova quelle nascoste (inverse) …. non funziona per niente come vorrei …
02/11/2024 at 10:44 PM #2279481234567891011121314151617181920212223242526272829303132333435MiRSI = RSI[14](close)Offset = MiRSI * 0.1IF (BarIndex > 10+1+N) THEN///divergencia bajistaIF (miRSI[1]>miRSI AND miRSI[1]>miRSI[2]) THENextremum2=miRSI[1]extremum1=highest[N](miRSI)preciomax2=close[1]preciomax=Highest[N](close)IF(extremum2<extremum1 AND preciomax2>preciomax[1]) THENfor i=1 to Nif miRSI[i]=extremum1 thenzz=idrawsegment (barindex[1], miRSI[1]+Offset, barindex[zz], miRSI[zz]+Offset) coloured("RED")STYLE(line,4)endifnextendifendif///divergencia alcistaIF (miRSI[1]<miRSI AND miRSI[1]<miRSI[2]) THENextremum22=miRSI[1]extremum11=lowest[N](miRSI)preciomin2=close[1]preciomin=lowest[N](close)IF(extremum22>extremum11 AND preciomin2<preciomin[1]) THENfor i2=1 to Nif miRSI[i2]=extremum11[1] thenzz2=i2drawsegment(barindex[1], miRSI[1]-Offset, barindex[zz2], miRSI[zz2]-Offset) coloured("DARKGREEN")STYLE(line,4)endifnextENDIFENDIFendifreturn miRSI as "RSI", 50 as "50"1 user thanked author for this post.
02/11/2024 at 10:47 PM #22794902/12/2024 at 11:32 AM #227981Ciao nel file allegato, indicatore simile ma migliorato con divergenze nascoste in aggiunta
1 user thanked author for this post.
02/13/2024 at 3:23 AM #228021 -
AuthorPosts
Find exclusive trading pro-tools on