Jurik Volatility Bands

Category: Indicators By: Nicolas Created: August 31, 2020, 1:31 PM
August 31, 2020, 1:31 PM
Indicators
6 Comments

The Jurik Volatility Bands can be used for entries for trends by using the Zero line crosses whilst counter-trend trades can be made once the oscillator line is close to the outer bands.

It works in range-bound and trending markets. In fact it based upon a Jurik filter that act as upper and lower bands.

It is an all-in-one indicator for Scalping, Counter-trend trading, Trend trading and gauging the market’s movements.

Note from the author: When counter-trend scalping on the smaller timeframes this indicator can sometimes cause new traders to jump in too early. Rest assured, it’s a highly effective trading tool so if you do open a position early you’ll find that price will eventually correct and you’ll be able to close at break even or in profit.

Other description found on internet: “Jurik Volatility Bands is a volatility indicator, displaying price in the channel. Exit from the channel is impossible, while reversal from the borders is the signal for entering the market. The indicator is equipped with arrows for convenience. It is applicable for scalping and intraday trading. Arrows may appear earlier at scalping, so you need to wait for candlestick is closed.”

Translated from MQL4 version following a request made in the indicator’s English forum.

 

//PRC_Jurik Volatility Bands | indicator
//31.08.2020
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
//converted from MT4
//https://www.prorealcode.com/topic/jurik-volatility-bands/

//// --- settings 
Length = 14
Shift = 0
ShowMiddle = 1
ZeroBind = 1
Normalize = 0
// --- end of settings 

Price =  customclose

if barindex>Length then  
 vprice = average[1](Price)[shift]
 cprice = average[1](Price)

 hprice = highest[length](vprice)
 lprice = lowest[length](vprice)

 len1 = Max(Log(Sqrt(0.5*(length-1)))/Log(2.0)+2.0,0)
 pow1 = Max(len1-2.0,0.5)
 del1 = hprice - bsmax[1]
 del2 = lprice - bsmin[1]

 volty = 0
 if(Abs(del1) > Abs(del2)) then
  volty = Abs(del1)
 endif
 if(Abs(del1) < Abs(del2)) then
  volty = Abs(del2)
 endif

 vsum = vsum[1] + 0.1*(volty-volty[10])

 avg = vsum
 avgLen=65
 for k=1 to avgLen-1 do
  avg = avg+vsum[k]
 next
 avg = avg/k

 avolty = avg
 if avolty > 0 then
  dVolty = volty/avolty
 else
  dVolty = 0
 endif

 if dVolty>exp((1/pow1)*log(len1)) then
  dVolty=exp((1/pow1)*log(len1))
 endif
 if (dVolty < 1) then
  dVolty = 1.0
 endif

 pow2 = exp(pow1*log(dVolty))
 len2 = Sqrt(0.5*(length-1))*len1
 Kv = exp(sqrt(pow2)*log(len2/(len2+1)))

 if (del1 > 0) then
  bsmax = hprice
 else
  bsmax = hprice - Kv*del1
 endif
 if (del2 < 0) then
  bsmin = lprice
 else
  bsmin = lprice - Kv*del2
 endif

 dnValue = bsmin
 upValue = bsmax
 miValue = (upValue+dnValue)/2.0

 ////
 if (ZeroBind) then
  if (Normalize) then
   upValues =  1
   dnValues = -1
   diff = (upValue-miValue)
   if (diff <> 0) then
    price = (cprice-miValue)/diff
   else
    price = 0
   endif
  else
   upValues = upValue-miValue
   dnValues = dnValue-miValue
   price    = (cprice-miValue)
  endif
 else
  upValues = upValue
  dnValues = dnValue
  price    = cprice
 endif
 if (ShowMiddle) then
  if (ZeroBind) then
   miValues = 0
  else
   miValues = miValue
  endif
 endif
endif

return upValues coloured(0,191,255) as "up value", dnValues coloured(219,112,147) as "dn value", miValues coloured(105,105,105) style(dottedline) as "mi value", price coloured(0,191,255) style(line,2) as "price"

 

Download
Filename: PRC_Jurik-Volatility-Bands.itf
Downloads: 358
Nicolas Master
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

Logo Logo
Loading...