Everything on this page is counted, not claimed

The numbers below are read at build time from the registries that decide them — the chart types the renderer knows, the tools in the palette, the studies in the indicator library. If one of them changes, this page changes with it, because there is no copy of it here to fall out of date.

10
chart types
all time-indexed
62
studies
each stating its convention
31
drawing tools
anchored to price and time
13
timeframes on the menu
plus anything that folds cleanly

Charts

Ten renderings of the same series, thirteen intervals on the menu, and any interval that folds cleanly from what is stored. Nothing here is a separate product mode — every chart type takes every indicator and every drawing tool.

Chart types

CandlesHollow candlesBarsLineLine with markersStep lineAreaBaselineColumnsHeikin-Ashi

All ten are time-indexed, which is what lets a drawing, an alert and a replay cursor all refer to the same bar. Renko and its price-indexed relatives are deliberately not in v1: they emit a variable number of bars per unit of time, which breaks the assumption three other subsystems are built on.

Timeframes

1m3m5m15m30m1h2h4h6h12h1D1W1M45m, 7m, 9h, 2W — type anything

One-minute, one-hour and daily bars are what exists on disk. Every other interval is aggregated from them in the database at read time, so an interval nobody else offers costs a query rather than a new feed — and how far back you can scroll is a number we set rather than a vendor’s.

Indicators

Validated against external ground truth rather than against ourselves — and every one of them states, in writing, which convention it implements and which it rejected.

Moving averages

11
SMAEMAWMARMAVWMAHMADEMATEMAALMAKAMALSMA

Momentum and oscillators

17
RSIStochStoch RSIMACDCCI%RROCAOMOMTRIXUOAroonCMOTSIPPOVIDPO

Volatility and bands

13
TRATRStdDevBBKCDCHVCHOPBBWSQZMOMUICVOLENV

Volume

12
VolOBVMFIVWAPA/DCMFPVTVOEOMFICHOAVWAP

Trend and direction

4
ADXSTPSARIchimoku

Structure and levels

4
PPZZFRACLRC

Candlestick patterns

1
PAT

The convention field is required, and here are three of them verbatim

“Why does your RSI differ from theirs in the first fortnight” is the support question an indicator library exists to be able to answer. So the convention is a required field on every study — the registry refuses a definition with an empty one — and it is shown in the settings dialog beside the parameters, not buried in documentation.

Relative Strength Index
Wilder’s RSI: average gain and average loss are RMAs (alpha = 1/length) seeded with the simple average of the first `length` CHANGES, so the first value sits at index length — length changes need length+1 closes — and not at length-1 like every other windowed indicator here. Rejected: Cutler’s RSI, which uses simple moving averages of the gains and losses and draws a visibly faster line; and EMA(2*length-1) smoothing, whose alpha matches Wilder’s but whose seed does not. A zero average loss reads 100, and a flat market 50, per core/guards.ts. Volume is not read.
Average True Range
Wilder’s RMA of true range, imported from ../ma/rma rather than re-derived. True range is undefined on bar 0, so the first input arrives at bar 1 and ATR-14’s first value is at index 14. Rejected: Pine’s ta.atr = rma(tr(true)), which plots high − low on bar 0 and therefore starts at index 13 with a bar-range averaged in as though it were a true range. Seeding is contested and is a parameter: Wilder’s SMA-of-the-first-length seed by default, the first-true-range seed as seed="first". Volume is not read.
Volume Weighted Average Price
Cumulative sum(price x size) / sum(size) since the session open, where the session is src/lib/session.ts’s answer and not a second calendar invented here — so the reset survives DST rather than sliding an hour twice a year. Quote volume is folded when the venue reports it, which makes the number EXACT and unchanged by timeframe; otherwise typical price x volume, which assumes every trade happened at (H+L+C)/3, and the `exact` output says which one this bar’s value was built from. Rejected: a rolling N-bar VWAP under the same name, which answers a different question; and standard-deviation bands, which are a second set of conventions. Anchored VWAP is the same accumulator started at an epoch second — not a bar index, which moves when the timeframe changes. A bar with no reported volume blanks the VWAP until the next reset.

The strongest evidence we have is external: this guide prints Wilder’s own 1978 RSI column beside the output of the engine that runs on this site, computed when the page is built.

Drawing tools

Thirty-one tools in the palette, in the order they appear in it. Every one of them stores prices and timestamps — never pixels and never bar indexes.

Lines, channels and the Fibonacci family

17
Trend lineRayExtended lineHorizontal lineHorizontal rayVertical lineCross lineParallel channelDisjoint channelFlat top / bottomFib retracementFib extensionFib channelFib time zonesPolylinePathBrush

Shapes, zones and measurement

6
RectangleEllipseTriangleRotated rectangleLong positionShort position

Annotation

8
TextCalloutArrowPrice labelPrice rangeDate rangeDate and price rangeMeasure
1-hour bars3-hour bars — the same drawing
A trendline stored as prices and timestamps is on the same two highs after you change the timeframe, scroll two years back, or open the layout on a machine with a different screen. Stored as bar indexes or pixels it is on neither, and the failure looks like a rendering bug rather than a data-model decision.

Alerts that cannot fire on a number you were never shown

This is the one structural claim in the product worth reading twice, because almost every alerting bug in this domain is a version of the same thing: the chart and the evaluator being two implementations of one indicator.

one indicator modulepure, no DOM, no databaseyour browserdraws the lineyou look atthe alert workerdecides whetheryour alert firesTwo runtimes. One implementation. No second opinion about what RSI(14) is.A test runs one rule down both paths over the same barsand asserts identical fire events, on every release.

Price and indicator conditions

Cross, cross-up, cross-down, above, below, and a condition against another plot. Set from the chart or from the plot you are looking at.

Once per bar, exactly

A trigger is unique on the alert and the bar it fired for, so running the evaluator twice over the same bars produces one record and one notification, not two.

Delivered and recorded

In-app, by email, or POSTed to a URL of yours and signed with your secret — with a record of every fire and every delivery attempt.

The rest of the desk

Layouts, replay, export and the read API. What each plan includes is on the pricing page, read from the same table the server enforces.

Linked multi-chart layouts

Up to 4 charts in one arrangement, with symbol, interval, crosshair and time-range linking — so moving the crosshair on one moves it on all of them. Saved layouts are named and returned to; the working chart never counts against the allowance.

Bar-by-bar replay

A data-source swap behind the same interface the live feed uses, rather than a slice of an array — which is why no indicator can peek ahead. A repainting study at the replay cursor reads exactly what it would have read at the time.

CSV export

The candles behind any chart, exactly as they were drawn, at the interval you were looking at. We ingested them into our own store, so there is nobody to ask.

A read API

Candles and instruments over /api/v1, authenticated with a key you mint and can revoke, with a per-key request budget so one runaway integration cannot spend the whole workspace's allowance. On Premium.

Watchlists and a screener

Served from our own rollup table rather than from a metadata API, which is why the search box answers on every keystroke instead of being rate-limited by somebody else’s free tier.

Share and embed

A read-only snapshot at an unguessable URL, and an embeddable version for a page of yours. Both carry the charting library’s attribution, because a chart inside somebody else’s iframe is exactly the case that requirement exists for.

The top tier holds 25 saved layouts, 25 indicators on a chart, 500 active alerts and 40,000 bars of history. Every limit is on the pricing page.

What this is not

Four things stated plainly, because finding out on day three is worse than reading it now.

Not a broker

No order ever leaves this building and there is no broker integration on the roadmap. That also means none of the registration, suitability or best-execution obligations that come with routing one.

Not a licensed redistributor

Public crypto venues, ingested into our own store. No licensed equity, futures or FX feeds — bring your own provider key for a daily equity series, on a free tier that allows 25 requests a day.

No imported scripting language

Nothing we ship is named after or compatible with Pine Script, and there is no transpiler. Indicators are a typed registry with their own parameter format; custom indicators, when they arrive, will speak that.

No advice, ever

There are no signals, no scores and no suggestions about what to buy or sell anywhere in this product. It draws what happened and tells you when a condition you defined became true.

Open a chart before you sign up

A public chart needs no account and serves real history from our own store, with every chart type and every indicator on it.

Open a chartSee the limits