OPEN-SOURCE SCRIPT

Hourly & Daily Levels

//version=5
indicator("Hourly & Daily Levels", overlay=true, max_lines_count=500)

// ——————— 1-Hour High/Low ——————— //
var float hourHigh = na
var float hourLow = na
isNewHour = timeframe.change("60")

if isNewHour
hourHigh := high
hourLow := low
else
hourHigh := math.max(hourHigh, high)
hourLow := math.min(hourLow, low)

// ——————— Previous Day High/Low ——————— //
var float prevDayHigh = na
var float prevDayLow = na
isNewDay = timeframe.change("D")

prevDayHigh := ta.valuewhen(isNewDay, request.security(syminfo.tickerid, "D", high[1]), 0)
prevDayLow := ta.valuewhen(isNewDay, request.security(syminfo.tickerid, "D", low[1]), 0)

// ——————— Plotting ——————— //
// Current Hour Levels
plot(hourHigh, "1H High", color.new(#00FF00, 0), 2, plot.style_linebr)
plot(hourLow, "1H Low", color.new(#FF0000, 0), 2, plot.style_linebr)

// Previous Day Levels
plot(prevDayHigh, "Prev Day High", color.new(#006400, 0), 2, plot.style_circles)
plot(prevDayLow, "Prev Day Low", color.new(#8B0000, 0), 2, plot.style_circles)

// ——————— Background & Labels ——————— //
bgcolor(isNewHour ? color.new(color.blue, 90) : na, title="Hourly Separation")
bgcolor(isNewDay ? color.new(color.orange, 90) : na, title="Daily Separation")

var label lbl1 = na
var label lbl2 = na
var label lbl3 = na
var label lbl4 = na
if barstate.islast
lbl1 := label.new(bar_index, hourHigh, "Current Hour High\n" + str.tostring(hourHigh),
color=#00FF00, style=label.style_label_left, textcolor=color.white)
lbl2 := label.new(bar_index, hourLow, "Current Hour Low\n" + str.tostring(hourLow),
color=#FF0000, style=label.style_label_left, textcolor=color.white)
lbl3 := label.new(bar_index, prevDayHigh, "Prev Day High\n" + str.tostring(prevDayHigh),
color=#006400, style=label.style_label_right, textcolor=color.white)
lbl4 := label.new(bar_index, prevDayLow, "Prev Day Low\n" + str.tostring(prevDayLow),
color=#8B0000, style=label.style_label_right, textcolor=color.white)

Penafian