Charts
Ten time-indexed chart types, thirteen standard timeframes and any custom interval that folds cleanly from what is stored. Multi-chart layouts with symbol, interval, crosshair and time-range linking.
Your own candle store, not a vendor feed
Candles, sixty indicators and thirty-one drawing tools on a chart backed by our own Postgres — every timeframe aggregated in the database, the forming bar streamed to the browser, and alerts evaluated by a worker running the same code your chart runs.
No card. No broker account. Nothing you draw is ever thrown away.
We store one-minute, one-hour and daily bars and nothing else, forever. Everything you can ask for is aggregated from those three when you ask for it — which is why an interval nobody else offers costs us a GROUP BY rather than a new feed.
A 45-minute chart is a query, not a download. Nothing is precomputed, nothing is cached into a shape that can go stale, and how far back you can scroll is a number we set rather than a number a vendor sells us.
Four things that share one set of rules, so the chart, the alert and the export are the same series seen three ways.
Ten time-indexed chart types, thirteen standard timeframes and any custom interval that folds cleanly from what is stored. Multi-chart layouts with symbol, interval, crosshair and time-range linking.
Sixty studies plus a candlestick-pattern module, validated against external ground truth rather than against ourselves, with the convention stated wherever platforms genuinely disagree.
Thirty-one tools — trendlines, channels, the Fibonacci family, the position tool and measure — anchored to price and time, so they survive a timeframe change instead of sliding off it.
Price and indicator conditions evaluated by a worker running the same code as the chart, delivered in-app, by email or to a webhook, with a record of every fire and every delivery attempt.
Most of what makes a charting product trustworthy or annoying is decided long before the buttons.
Bars are ingested into our own partitioned Postgres and served from it. That is what makes a custom interval instant, what makes history depth something we can sell rather than something we resell, and what makes a chart that keeps working when a venue has a bad afternoon.
The worker that evaluates an alert imports the same indicator module your browser imports. An alert on RSI(14) crossing 70 is therefore evaluated against the number printed on your screen. Two implementations of one indicator is how alerting quietly stops being trustworthy.
A trendline is stored as prices and timestamps, never as pixels or bar indexes. Change the timeframe, scroll two years back, open the layout on a laptop with a different screen — it is still on the same two highs.
One database holds many workspaces, and being sure about that is not a promise — it is how the code is built.
Application code cannot issue an unscoped query. The workspace filter is applied by the database client itself, so it does not depend on anyone remembering it in a screener written six months from now.
Foreign keys carry the workspace, so one workspace’s drawing cannot even reference another’s layout. The database refuses the row outright rather than trusting the code above it.
An automated test puts two workspaces on one database and tries to read, count and write across the wall from one to the other. It ships with the code and runs before every deploy.
Every plan has every chart type, every indicator and every drawing tool. What changes is how much of it you can have at once and how far back you can scroll — the one axis we control outright, because the history is ours. Every new workspace gets 14 days of writing before a plan has to be chosen; the trial is a window, not a higher tier, so no limit moves when it ends.
Free
One chart, real history, and every drawing tool.
$19 / month
A four-chart workspace, deep history, alerts that reach you.
$49 / month
The deepest history, the whole desk, and the read API.
A lapsed plan makes a workspace read-only. Every layout, drawing, watchlist and alert stays exactly where it is. Every limit, and what each one gates.
Public crypto venues — Coinbase, Bitstamp, OKX and Kraken — ingested into our own Postgres store and served back from there. We are not a licensed redistributor of equity, futures or FX feeds, and we do not pretend to be: if you want equities you bring your own AlphaVantage key, on a free tier that allows 25 requests a day.
Because it decides what we can sell you and how fast the chart is. Every timeframe that is not one of the three we store is aggregated in the database at read time, so a 45-minute chart is a query rather than a download, and how far back you can scroll is a number we control rather than a vendor’s. It is also why history depth is the strongest difference between the plans.
No, and that is a design constraint rather than a promise. The background worker that evaluates alerts runs the same indicator code your browser runs, from the same module — so an alert on RSI(14) crossing 70 is evaluated against the number printed on your own chart. Two implementations of one indicator is how alerting quietly stops being trustworthy.
The workspace becomes read-only. Every layout, drawing, watchlist and alert stays exactly where it is and stays visible — alerts stop firing and nothing is deleted. Throwing away an arrangement somebody spent a year building, over a lapsed card, is never the right answer.
The action that would cross it is refused, in a sentence that names the limit and the plan — never a silent failure and never a button that quietly stops working. The check runs on the server inside the same transaction that would write the row, so two browser tabs cannot each be told there is one slot left. Nothing you already have is touched.
Every row you create belongs to a workspace, and the application cannot issue a query that is not filtered by it — the filter is applied by the database client itself, not by each developer remembering. Foreign keys carry the workspace too, so one workspace’s drawing cannot even reference another’s layout. An automated test sets up two workspaces and tries to read across; it runs on every release.
No. No order ever leaves the building, and there is no broker integration on the roadmap. Chartwright is a charting and alerting product, which also means we take on none of the registration, suitability or best-execution obligations that come with routing an order.
No, and we never will. Nothing we ship is named after or compatible with it, and there is no transpiler. Indicators are a typed registry with their own parameter format; custom indicators, when they arrive, will speak that.
Sign up and you get a workspace: your layouts, your drawings, your watchlists and your alerts, on candles we store rather than rent. Draw one trendline and change the timeframe — that is the whole demo.