Cumulative delta fork
A fork of the built in cumulative delta: the base draws its own delta candles in the panel, and the script adds a signal line, marks the crossings on price, and states the reading in the readout.
//@xfscript 1
indicator("CVD with Signal", "cvd")
let candles: bool = input.bool(true, "candles", "Delta candles")
let reset_daily: bool = input.bool(true, "resetDaily", "Reset each session")
let signal_length: int = input.int(20, "signalLength", "Signal length", 2, 200, 1)
let up_color: color = input.color("#22C55E", "upColor", "Above signal")
let down_color: color = input.color("#EF4444", "downColor", "Below signal")
let delta_line: float = base.value()
let signal: float = ta.ema(delta_line, signal_length)
let crossed_up: bool = base.available() && ta.crossover(delta_line, signal)
let crossed_down: bool = base.available() && ta.crossunder(delta_line, signal)
plot.panel_line(signal, "#F59E0B", 2, "solid")
plot.marker(crossed_up, low, up_color, "triangle", "below", 9, 3)
plot.marker(crossed_down, high, down_color, "triangle", "above", 9, 3)
if delta_line >= signal {
plot.label(str.concat("CVD ", format.compact(delta_line), " ABOVE SIGNAL"), up_color)
} else {
plot.label(str.concat("CVD ", format.compact(delta_line), " BELOW SIGNAL"), down_color)
}