Paste this indicator into Pine Editor and compare its Data Window values with the built-in indicator using matching settings. It plots a live UO line and a gray short-window ratio. Its optional alert is a close-confirmed crossing above 50, not the divergence sequence described above. It places no orders.
Calculation audit with ordered inputs, missing-history protection, zero-denominator handling, and a chart-bar-close alert condition.pine
//@version=6
indicator("UO calculation audit", overlay = false)
shortLength = input.int(7, "Short length", minval = 1)
mediumLength = input.int(14, "Medium length", minval = 2)
longLength = input.int(28, "Long length", minval = 3)
if shortLength >= mediumLength or mediumLength >= longLength
runtime.error("Use short < medium < long.")
base = math.min(low, close[1])
bp = close - base
tr = math.max(high, close[1]) - base
ratio(int length) =>
pressureSum = math.sum(bp, length)
rangeSum = math.sum(tr, length)
rangeSum > 0 ? pressureSum / rangeSum : na
shortRatio = ratio(shortLength)
mediumRatio = ratio(mediumLength)
longRatio = ratio(longLength)
ready = bar_index >= longLength
uo = ready ? 100 * (4 * shortRatio + 2 * mediumRatio + longRatio) / 7 : na
plot(uo, "UO", color = color.blue, linewidth = 2)
plot(100 * shortRatio, "Short window only", color = color.gray)
plot(bp, "BP", display = display.data_window)
plot(tr, "TR", display = display.data_window)
plot(shortRatio, "Short ratio", display = display.data_window)
plot(mediumRatio, "Medium ratio", display = display.data_window)
plot(longRatio, "Long ratio", display = display.data_window)
hline(70, "Upper reference")
hline(50, "Midpoint")
hline(30, "Lower reference")
crossedMidpoint = ta.crossover(uo, 50)
confirmedCross = barstate.isconfirmed and crossedMidpoint
alertcondition(confirmedCross, "UO close above 50", "UO crossed above 50 on a completed chart bar.")