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

إخلاء المسؤولية

لا يُقصد بالمعلومات والمنشورات أن تكون، أو تشكل، أي نصيحة مالية أو استثمارية أو تجارية أو أنواع أخرى من النصائح أو التوصيات المقدمة أو المعتمدة من TradingView. اقرأ المزيد في شروط الاستخدام.