Information panel
An information panel: several lines in the readout at the top left of the chart, each stating what is true right now, including the book and the quote when the chart has them.
//@xfscript 1
indicator("Info Panel")
let lookback: int = input.int(50, "lookback", "Baseline", 5, 500, 1)
let head_color: color = input.color("#E5E7EB", "headColor", "Heading")
let up_color: color = input.color("#22C55E", "upColor", "Positive")
let down_color: color = input.color("#EF4444", "downColor", "Negative")
let total: float = tape.volume()
let delta: float = tape.delta()
let delta_percent: float = delta / total * 100
let average_volume: float = ta.sma(total, lookback)
let range_points: float = high - low
let average_range: float = ta.sma(range_points, lookback)
let effort: float = total / average_volume
plot.label(str.concat("VOL ", format.compact(total), " x", format.fixed(nz(effort, 0), 2)), head_color)
plot.label(str.concat("RANGE ", format.fixed(range_points, 2), " / ", format.fixed(nz(average_range, 0), 2)), head_color)
if delta >= 0 {
plot.label(str.concat("DELTA +", format.compact(delta), " ", format.fixed(nz(delta_percent, 0), 1), "%"), up_color)
} else {
plot.label(str.concat("DELTA ", format.compact(delta), " ", format.fixed(nz(delta_percent, 0), 1), "%"), down_color)
}
if cell.available() {
plot.label(str.concat("POC ", format.fixed(cell.poc_price(), 2), " ROWS ", format.compact(cell.count())), head_color)
}
if l2.supported() && l2.available() {
plot.label(str.concat("BOOK 10 ", format.fixed(l2.imbalance(10) * 100, 0), "%"), head_color)
}
if l1.supported() && l1.available() {
plot.label(str.concat("BID ", format.fixed(l1.bid_price(), 2), " ASK ", format.fixed(l1.ask_price(), 2)), head_color)
}