Shape. The script runs once, registers callbacks, and draws through plot. Everything runs on YOUR machine in a worker: no DOM, no network, 4 seconds per pass.
onBar((bar, i, $) => …) — every candle of the chart's timeframe, oldest first; the live candle again on each tick.
onTick((tick, bar, $) => …) — every coalesced price frame (~10/s). onFinish(($) => …) — after a full pass.
bar = { time, open, high, low, close, volume, delta } · $.close[i], $.high, $.low, $.open, $.volume, $.delta, $.time are typed arrays · $.bars, $.tf (seconds), $.symbol.
plot(name, value, { color, overlay: true|false, style: "line"|"hist"|"dots", width }) — overlay on the price chart, otherwise the script output pane.
plotted(name) — a plot's own values, for crosses and look-backs · hline(value, { color, label, overlay }) · marker(text, { at: "above"|"below", color }) · label(text, price, { color }) · bgcolor(color) · log(…) · input(name, default).
fp(bar) — the footprint rows of a candle, [{ price, buy, sell }] ascending (needs the live stream).
table(id, rows, { at: "top-right", title }) — a table on the chart; a row is an array of cells, a cell a string or { text, color, bg }.
Orders. buy(qty, { stop, target }) · sell(qty, { stop, target }) · close() · position() → { qty, avg, contract }. They fire only on live ticks, once per candle, on the Trade panel's contract and account — and only while allow trading is on, which switches off on every Run. Off, they are logged and marked, not sent.
Live candle. onBar runs again for the last candle on every tick, so accumulate per bar index (or through ta.cum / ta.vwap), never in plain counters.
ta.sma(arr, n, i) · ta.cum(arr, i) · ta.vwap($, i), ta.vwapSd($, i), ta.session(i) · ta.ema · ta.rsi · ta.atr($, n, i) · ta.highest(arr, n, i) · ta.lowest · ta.stdev · ta.change(arr, i, k) · ta.cross(a, b, i) — all computed at index i, cached across the pass.
Flow bias
A composite of four flow estimates, not a measurement. Direction only — gamma is deliberately not in it.
Volatility regime
—
Levels
State greeks
Dealer delta, and how it moves when volatility shifts (vanna) or time passes (charm). Same lens as everything above.
Biggest gamma shift
Regime score, graded in public
One call each morning, frozen before the session and scored against what happened. The record below is every call we have made, not a selection.
Largest prints today
Trade · Rithmic
Ask the data
Ask about this session only — the assistant answers from the numbers on this screen, and says so when they do not cover the question.
Layout
Any panel can go in any cell. Press LAYOUT in the bar, then use the buttons on each cell: split right, split down, swap, remove. Drag the seams to resize. Save what you build, or send it as a link.
Display
Every layer on the chart, on or off on its own. Panels come and go through the layout.
Big futures lots
Candles
Liquidity heatmap
Footprint
Every candle opened up: lots that hit the bid on the left, lots that lifted the offer on the right, one row per price. Built from our own tape with the recorded aggressor, rolled to the chart's timeframe. Shows once candles are wide enough to hold the numbers.
Volume profile
Drawn with the profile tool over any range of candles. Volume is spread across each candle's high-low, the value area grows out from the point of control until it holds the share below.
Futures CVD
Colours
Every colour the terminal uses, on the screen and on the chart. Changes apply at once and stay in this browser.