OPEN-SOURCE SCRIPT

Pivot & ORB

110
//version=5
indicator("Pivot & ORB Thin Zones with Small Labels", overlay=true, max_boxes_count=500)

// ───── Input Settings ─────
orbMinutes = input.int(15, "ORB Minutes")
zoneThickness = input.float(0.0005, "Zone Thickness") // height of thin boxes
showPD = input.bool(true, "Show Previous Day Zone")
showPM = input.bool(true, "Show Previous Month Zone")
showORB = input.bool(true, "Show ORB Zone")

// ───── Previous Day High / Low ─────
pdh = request.security(syminfo.tickerid, "D", high[1])
pdl = request.security(syminfo.tickerid, "D", low[1])

var box pdhBox = na
var box pdlBox = na

if showPD
box.delete(pdhBox)
box.delete(pdlBox)
pdhBox := box.new(left=bar_index-1, right=bar_index, top=pdh+zoneThickness, bottom=pdh-zoneThickness, bgcolor=color.new(color.red, 80), border_color=color.red)
pdlBox := box.new(left=bar_index-1, right=bar_index, top=pdl+zoneThickness, bottom=pdl-zoneThickness, bgcolor=color.new(color.green, 80), border_color=color.green)
label.new(bar_index, pdh, "PDH", style=label.style_label_down, size=size.tiny, textcolor=color.white, color=color.red)
label.new(bar_index, pdl, "PDL", style=label.style_label_up, size=size.tiny, textcolor=color.white, color=color.green)

// ───── Previous Month High / Low ─────
pmh = request.security(syminfo.tickerid, "M", high[1])
pml = request.security(syminfo.tickerid, "M", low[1])

var box pmhBox = na
var box pmlBox = na

if showPM
box.delete(pmhBox)
box.delete(pmlBox)
pmhBox := box.new(left=bar_index-1, right=bar_index, top=pmh+zoneThickness, bottom=pmh-zoneThickness, bgcolor=color.new(color.orange, 80), border_color=color.orange)
pmlBox := box.new(left=bar_index-1, right=bar_index, top=pml+zoneThickness, bottom=pml-zoneThickness, bgcolor=color.new(color.blue, 80), border_color=color.blue)
label.new(bar_index, pmh, "PMH", style=label.style_label_down, size=size.tiny, textcolor=color.white, color=color.orange)
label.new(bar_index, pml, "PML", style=label.style_label_up, size=size.tiny, textcolor=color.white, color=color.blue)

// ───── ORB (Opening Range Breakout) ─────
var float orbHigh = na
var float orbLow = na
var box orbHighBox = na
var box orbLowBox = na

sessionStart = timestamp("GMT+0", year, month, dayofmonth, hour, minute)
inORB = (timenow - sessionStart) <= orbMinutes * 60000

if inORB
orbHigh := na(orbHigh) ? high : math.max(orbHigh, high)
orbLow := na(orbLow) ? low : math.min(orbLow, low)
else
if not na(orbHigh) and showORB
box.delete(orbHighBox)
box.delete(orbLowBox)
orbHighBox := box.new(left=bar_index-1, right=bar_index, top=orbHigh+zoneThickness, bottom=orbHigh-zoneThickness, bgcolor=color.new(color.yellow, 70), border_color=color.yellow)
orbLowBox := box.new(left=bar_index-1, right=bar_index, top=orbLow+zoneThickness, bottom=orbLow-zoneThickness, bgcolor=color.new(color.yellow, 70), border_color=color.yellow)
label.new(bar_index, orbHigh, "ORB High", style=label.style_label_down, size=size.tiny, textcolor=color.black, color=color.yellow)
label.new(bar_index, orbLow, "ORB Low", style=label.style_label_up, size=size.tiny, textcolor=color.black, color=color.yellow)
orbHigh := na
orbLow := na

Exención de responsabilidad

La información y las publicaciones no constituyen, ni deben considerarse como asesoramiento o recomendaciones financieras, de inversión, de trading o de otro tipo proporcionadas o respaldadas por TradingView. Más información en Condiciones de uso.