This indicator displays ADR information in the lower left side of the chart screen. It calculates the Average Daily Range with exclusion of the Sunday bar to be more accurate with the real daily range of the market.
5 text lines are displayed, from top to bottom:
- Information about the current daily range and if it has reached or not the ADR value. If the today range is superior to the ADR, the market could have not more “space” to move further
- the ADR value (period is in parenthesis, you can change the period in the indicator’ setting)
- the today range in points
- Room up: how many points up still available to reach the ADR
- Room down: how many points down still available to reach the ADR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
//PRC_ADR no sunday bar | indicator //17.08.2018 //Nicolas @ www.prorealcode.com //Sharing ProRealTime knowledge defparam drawonlastbaronly=true defparam calculateonlastbars=10000 //--- settings ADRperiod = 20 RoomLimitRatio = 0.1 //--- end of settings sum = 0 a=0 if day<>day[1] and dayofweek<>0 then hh=0 ll=close*100 daycount=daycount+1 endif if dayofweek<>0 then hh=max(hh,high) ll=min(ll,low) endif sum=0 a=0 if day<>day[1] and daycount>=ADRPeriod then for i = 0 to barindex do if day[i]<>day[i+1] and dayofweek[i]<>0 then a = a + 1 sum=sum+((hh[i+1]-ll[i+1])/ticksize) endif if(a=1) then adr1=Round(sum) endif if(a=5) then adr5=Round(sum/5) endif if(a=10) then adr10=Round(sum/10) endif if(a=20) then adr20=Round(sum/20) endif if a = adrperiod then break endif next adr = Round((adr1+adr5+adr10+adr20)/4.0)//round((sum/adrperiod)) endif low0 = dLow(0) high0 = dhigh(0) t = Round((high0 - low0)/ticksize) RmUp = Round(adr - (close-low0)/ticksize) RmDn = Round(adr - (high0-close)/ticksize) RmLmt = round(adr*RoomLimitRatio) if(rmup<rmlmt) then upr=255 upg=0 else upr=0 upg=100 endif if(rmdn<rmlmt) then dnr=255 dng=0 else dnr=0 dng=100 endif drawtext("Room Up: #RmUp#",barindex,-0.4,Dialog,Bold,14) coloured(upr,upg,0) drawtext("Room Down: #RmDn#",barindex,-0.5,Dialog,Bold,14) coloured(dnr,dng,0) drawtext("Today= #t#",barindex,-0.3,Dialog,Bold,14) coloured(128,0,128) drawtext("ADR(#ADRperiod#)= #adr#",barindex,-0.2,dialog,Bold,22) coloured(0,0,255) if(rmup<0 or rmdn<0) then drawtext("ADR REACHED",barindex,-0.1,dialog,bold,24) coloured(0,145,0) else drawtext("ADR NOT REACHED",barindex,0.1,dialog,bold,24) coloured(255,0,0) endif return |
Share this
No information on this site is investment advice or a solicitation to buy or sell any financial instrument. Past performance is not indicative of future results. Trading may expose you to risk of loss greater than your deposits and is only suitable for experienced investors who have sufficient financial means to bear such risk.
ProRealTime ITF files and other attachments :
Filename : download the ITF files
How to import ITF files into ProRealTime platform?
PRC is also on YouTube, subscribe to our channel for exclusive content and tutorials
Hola Nicolas es posible? que en la linea 58 haya un error de codigo creo que la instruccion exacta deberia de ser if(rmup0) then o sea rmdn > que 0 sino no valida el adr alcanzado cuando si que lo alcanza No lo se ya sabes que en programacion de PRT no voy muy fuerte solo estoy empezando Como siempre un grandisimo trabajo el tuyo y este indicador/oscilador lo veo muy util para disponer de la informacion adicional aunque luego el mercado siempre tiene la ultima palabra
En la línea 58, pruebo si el rango del día ha probado tanto el valor disponible en la parte superior como la inferior para validar si se ha alcanzado o no la ADR. Podríamos reemplazar con “if (rmup <0 o rmdn <0) then"
Si ayer por la noche ya vi que posiblemente era mejor la or que el and ya que lo que se busca es que alcanze al menos uno de los dos sin embargo hoy siguiendolo en dax me he dado cuenta del problema que detectaba ayer el precio llega hasta uno de los dos arriba o abajo y el mensaje es adr alcanzado sin embargo si despues gira y no sigue manteniendo el cuerpo de la vela por encima o debajo del room el mensaje vuelve a ponerse rojo y es de adr no alcanzado y entiendo que esto lleva a confusion sobre todo si lo utilias como analisis rapido de varios instrumentos por ejemplo ahora en dax es adr 20 periodos = 131 Today =142 roomup en rojo=3 y el mensaje esta en rojo de adr no alcanzado cuando si que lo ha alcanzado de sobras A ver como todos los indicadores tiene la importancia que tiene ya que no es mas que una media de las n velas diarias que busquemos sin embargo es solo una media si analizamos las velas de este periodo encontraremos muchas velas que solo llegan a 0,5 adr y otros dias que si que recorren hasta 3 adr en un dia pero si lo utilizamos como una herramienta mas de analisis y el mensaje de adr alcanzado en verde quedara fijo una vez alcanzado si que podria ser muy util si vemos que lo ha alcanzado y ha rebotado estableciendo una situacion de rango que para los intradias podria ser muy interesante muchisimas gracias por todo
Ya esta he cambiado el codigo de la linea 58 por “if t > adr then ” asi en el momento que rmup o rmdn lleguen a 0 seguro que se cumple que el recorrido es superior al de la media por tanto today sera superior a adr(n) y quedara fijo el mensaje de adr alcanzado en verde si en esta zona rebota puede ser una muy buena informacion para los inversores siempre mirando el grafico de forma mas general obviamente pero es que segun estudios de terceros es normal que se suelan crear rangos temporales con una distancia aproximada de 3 adr y esto puede ser muy bueno para operar ya que un rango de 400 puntos es muy operable y con altas posibilidades de exito muchisimas gracias
Hi Nicola. I like the ADR a lot. One problem though. When I try to shrink the square all the text goes on top of each other and you can`t read it. Is it easie to fix?
No sorry because the X,Y coordinates are in price and bars, not in pixels.
The indicator has been updated to be perfectly the same as the original version., as discussed in this topic: https://www.prorealcode.com/topic/average-daily-range/
Ok, thanks
Gentile Nicolas, l’indicatore mi da errore : ciclo infinito o con troppe iterazioni, modificare il ciclo corrispondente, non sono 1 programmatore , come lo posso sistemare ? grazie
Se la stai usando in un piccolo lasso di tempo, assicurati di avere unità sufficienti visualizzate per l’ADR di X giorni da calcolare correttamente.