Nicolas

ADR no sunday bar

Category: Indicators By: Nicolas Created: August 20, 2018, 8:31 AM
August 20, 2018, 8:31 AM
Indicators
10 Comments
ADR no sunday bar

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

 

//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

 

Download
Filename: PRC_ADR-no-sunday-bar.itf
Downloads: 171
Nicolas
Nicolas Legend
I created ProRealCode because I believe in the power of shared knowledge. I spend my time coding new tools and helping members solve complex problems. If you are stuck on a code or need a fresh perspective on a strategy, I am always willing to help. Welcome to the community!
Author’s Profile

Comments

marinober
7 years ago
#

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

Nicolas
7 years ago
#

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.

GertLjung
8 years ago
#

Ok, thanks

Nicolas
8 years ago
#

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/

GertLjung
8 years ago
#

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?

Nicolas
8 years ago
#

No sorry because the X,Y coordinates are in price and bars, not in pixels.

Domenec
8 years ago
#

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

Domenec
8 years ago
#

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

Domenec
8 years ago
#

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

Nicolas
8 years ago
#

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"

ProRealCode ProRealCode
Loading...