indicator · on price · open source
Order Blocks (Both)
Running…
Loading chart…
About
Order Blocks (Bullish + Bearish) on one chart — green zones are bullish OBs, red zones are bearish.
- All bullish / bearish OB rules from earlier iterations combined.
- Each zone extends for
extendBarsbars before expiring. - Best for clean multi-direction structure visualisation when both sides are active.
Source code
//@version=5
indicator("Order Blocks (Both)", overlay=true)
swing = input.int(5, "Swing Length", minval=2, maxval=50)
lookback = input.int(30, "OB Lookback", minval=5, maxval=100)
extendBars = input.int(30, "Extend Bars", minval=5, maxval=200)
ph = ta.pivothigh(high, swing, swing)
pl = ta.pivotlow(low, swing, swing)
var float lastPh = na
var float prevPh = na
var float lastPl = na
var float prevPl = na
var float obBullTop = na
var float obBullBot = na
var float obBearTop = na
var float obBearBot = na
var int obBullAge = 9999
var int obBearAge = 9999
if not na(ph)
prevPh := lastPh
lastPh := ph
if not na(pl)
prevPl := lastPl
lastPl := pl
if not na(lastPh) and not na(prevPh) and lastPh > prevPh
found = false
for i = 1 to math.min(lookback, swing * 4)
if not found and close[i] < open[i]
obBullTop := high[i]
obBullBot := low[i]
obBullAge := 0
found := true
break
if not na(lastPl) and not na(prevPl) and lastPl < prevPl
found = false
for i = 1 to math.min(lookback, swing * 4)
if not found and close[i] > open[i]
obBearTop := high[i]
obBearBot := low[i]
obBearAge := 0
found := true
break
obBullAge += 1
obBearAge += 1
if obBullAge > extendBars
obBullTop := na
obBullBot := na
if obBearAge > extendBars
obBearTop := na
obBearBot := na
p_Bull_OB_Top = plot(obBullTop, "Bull OB Top", color=color.green, style=plot.style_linebr)
p_Bull_OB_Bot = plot(obBullBot, "Bull OB Bot", color=color.green, style=plot.style_linebr)
p_Bear_OB_Top = plot(obBearTop, "Bear OB Top", color=color.red, style=plot.style_linebr)
p_Bear_OB_Bot = plot(obBearBot, "Bear OB Bot", color=color.red, style=plot.style_linebr)
fill(p_Bull_OB_Top, p_Bull_OB_Bot, color=color.new(color.green, 85))
fill(p_Bear_OB_Top, p_Bear_OB_Bot, color=color.new(color.red, 85))
No comments yet.
Sign in to comment.