Tickwick
Features

Everything in Tickwick, free vs Pro

The free MIT core is production-ready on its own. Pro unlocks the full trading toolkit. Candlestick and OHLC charts on canvas — tens of thousands of bars still pan smoothly — with technical indicators, drawing tools, touch gestures and PNG/PDF export. Here's exactly what you get in each, line by line, with the code under each one.

10
chart types
129
indicators
32
drawing tools
52
components
Stock charting & drawing
Chart types
Switchable per pane. Pro adds OHLC bars, hollow candles, Heikin-Ashi, step, line + markers, rounded line and rounded area.
Free
3 — candlestick, line, area
Pro
All 10
Intervals & time ranges
Plus linear, percent and log price scales. Each list is filtered to what the loaded data actually supports.
Free
17 and 12
Pro
Same
Live streaming updates
Ticks fold into the open bar; canvas holds tens of thousands of them
Free
Pro
Bar-by-bar replay
Step through history
Free
Pro
Drawing tools
Stored in data space, so they survive pan, zoom and interval changes. Pro adds rays, shapes, channels, measurement and position tools, markers and the Fibonacci family.
Free
3 — line, horizontal, text
Pro
All 32
Style editor, undo/redo, duplicate
Colour, stroke, opacity, dash, font size · ⌘Z · ⌘⇧Z · ⌘D
Free
Pro
Indicators & analysis
Indicators
Free: SMA, EMA, WMA, RSI, MACD, Bollinger, Stochastic, ADX, CCI, ATR, OBV, Williams %R, ROC, Volume. Pro adds Ichimoku, Supertrend, anchored VWAP with SD bands, and 112 more.
Free
The 14 classics
Pro
All 129
Entries in the Add-Indicator menu
Grouped Active → Most Popular → category → Custom
Free
14
Pro
103
Auto-Analysis
Swings, trendlines, S/R zones, Fibonacci, chart patterns, volume profile
Free
Pro
6 detectors, 4 presets
Backtesting
Long/short/both, TP/SL/trailing, fees, slippage, vs buy-and-hold
Free
Pro
36 metrics, 9 presets
Custom formula indicators
Written in TQL — "rsi(14) < 30 and close > sma(50)" — 96 functions, 9 price sources
Free
Pro
Event markers
Earnings, dividends, splits, anything custom
Free
Pro
Candlestick patterns
All 23 are implemented and tested inside the Pro bundle, but not yet reachable from your code — see the note below
Free
Pro
23 · no public API yet
Interface, theming & export
Themes
37 tokens, registerTheme() for your own, partial themes allowed, and setTheme() repaints live
Free
All 10 + custom
Pro
All 10 + custom
Full terminal chrome
Overflowing toolbar, right-click menu, crosshair + OHLCV legend, raw-data panel, pinch-zoom — 15 flags to turn any of it off
Free
Pro
Terminal components
Watchlist, order book, order ticket, options chain, equity curve…
Free
Pro
All 52
Fullscreen
Free
Pro
Watermark
Free
Shown
Pro
Removed (white-label)
PNG + print-to-PDF export
Canvases, SVG overlays and HTML chrome in one raster; interactive UI dropped
Free
Pro
Workspace persistence
Panes, drawings, indicators, Auto-Analysis state and saved formulas
Free
Pro
UI languages
Arabic is full RTL. One chunk per locale, so a visitor downloads only the one they switch to.
Free
English
Pro
All 10
Integration & licensing
Frameworks
Every framework drives everything through .create(). The declarative wrapper components cover less: free has React and Vue, Pro has React only.
Free
React, Vue, Svelte, vanilla, CDN
Pro
Same
AI-ready JSON config
createFromConfig() takes a plain, serializable ChartConfig spec
Free
Pro
Plugin registries
Drawing tools, indicators, chart types, themes — Pro registers through these too
Free
All 4
Pro
All 4
Runtime dependencies
No d3-scale, no floating-ui, no hammerjs, no crossfilter
Free
4 d3 modules
Pro
4 d3 modules
Your data, your servers
No bundled vendor, and the licence check never phones home
Free
Pro
License
Free
MIT — free forever
Pro
Commercial key
IncludedNot includedFree and Pro are two packages, not one bundle with a flag — upgrading is a two-line swap.

On candlestick patterns: all 23 are implemented and unit-tested inside the Pro bundle, but they are not yet reachable from your code or the indicator menu — they are not chart overlays, so they were never registered as ones. We list them as inventory rather than as a feature you can switch on, and we'd rather say so here than have you find out after paying.

How it feels to use

Every charting capability, with the code

Not screenshots and not pseudocode — the real API, short enough to read in one pass. Free first, then what a licence adds.

A stock chart in five lines

MIT core

One import, one stylesheet, one call. You bring OHLCV rows from whatever feed you already have — there is no vendor to sign up for and nothing is sent to us.

  • Rows are [timestamp, open, high, low, close, volume], seconds or milliseconds
  • Renders to canvas, so tens of thousands of bars still pan smoothly
  • Push live ticks with dataHandlerRef → addRealtimeData(row)
vanilla JS · free
import { TickwickChart } from "tickwick";
import "tickwick/style.css";

const chart = TickwickChart.create({
  container: "#chart",
  data: bars,            // [[ts, o, h, l, c, v], …]
  theme: "onyx",
  height: 520,
});

Panes and indicators, declared

MIT core

A chart is a list of panes. Overlays sit on the price pane, oscillators get their own — and every pane indicator picks a real rendering convention instead of a bare line in an empty box.

  • 14 classic indicators in the free core, all 129 on Pro
  • The Add-Indicator menu groups Active → Most Popular → category → Custom
  • Bounded oscillators shade their band; MACD-family ones draw histograms
panes · free
TickwickChart.create({
  container: "#chart",
  data: bars,
  panes: [
    {
      type: "candles",
      indicators: [{ type: "SMA", period: 50 }, { type: "Volume" }],
    },
    { type: "indicator", config: { type: "RSI", period: 14 }, height: 120 },
  ],
});

It becomes yours

MIT core

37 semantic tokens, 10 bundled palettes, unlimited custom ones. Partial themes are valid — set the two colours you care about and the rest derives. Theming is not a paywall; both tiers get all of it.

  • setTheme() repaints live — no remount, and the zoom and drawings survive
  • Corner radii, toolbar density and toolbar chrome style are tokens too
  • Fifteen more flags strip the toolbar down to a bare canvas if you want one
theming · free
import { registerTheme } from "tickwick";

registerTheme("myBrand", {
  backgroundColor: "#0b0f14",
  candleColorUp: "#22c55e",
  candleColorDown: "#ef4444",
  toolbarVariant: "lean",   // or "solid"
  panelRadius: "14px",
});

chart.setTheme("myBrand");   // live repaint

Extensible, and LLM-drivable

MIT core

Four registries — drawing tools, indicators, chart types, themes — and Pro registers through exactly those, so your extension is not a second-class citizen. Or skip code entirely: ChartConfig is plain, serializable JSON.

  • A registered indicator appears in the menu under its own category
  • A registered chart type appears in the dropdown with its label and icon
  • createFromConfig() is the whole prompt-to-chart round trip
registries + JSON config · free
import { registerDrawingTool } from "tickwick";
import { BaseTool } from "tickwick/drawing/tools/BaseTool";

class MyMarkerTool extends BaseTool { drawingType = "my-marker"; /* … */ }
registerDrawingTool("my-marker", MyMarkerTool);

// …or no code at all — an LLM can emit this verbatim:
TickwickChart.createFromConfig("#chart", {
  data: bars,
  theme: "graphite",
  panes: [{ type: "candles", indicators: [{ type: "EMA", period: 21 }] }],
});

Auto-Analysis

Pro

Six detectors read the bars and draw what they find: swings, trendlines, support and resistance zones, Fibonacci grids, chart patterns with a confidence score, and volume-by-price. Four presets, or set every threshold yourself.

  • Patterns: double top, double bottom, triangle, head & shoulders, wedge
  • Scope the pass to the visible window or the whole series
  • Drivable entirely from code — the modal is a convenience, not the API
Auto-Analysis · Pro
const chart = TickwickChartPro.create({
  container: "#chart",
  data: bars,
  licenseKey: "tw_…",
});

chart.setAutoAnalysis({
  enabled: true,
  scope: "visible",
  patterns: { types: ["doubleTop", "headShoulders"], minConfidence: 0.7 },
  supportResistance: { enabled: true, maxZones: 4 },
});

Strategies as strings, backtested

Pro

TQL is a small vectorised expression language — 9 price sources, 96 functions over the whole indicator catalogue, member access, historical offsets and named definitions. One engine runs it behind both the in-chart pane and the Backtest component, so there is no second simulation to disagree with the first.

  • rsi(14) is rsi(14, close) — so ema(9, rsi(14)) is an EMA of RSI
  • Long, short or both · TP · SL · trailing stop · fees · slippage
  • 36 metrics against a buy-and-hold baseline; nine presets to start from
TQL + Backtest · Pro
import { Backtest } from "tickwick-pro/components/react";

<Backtest
  data={bars}
  theme="onyx"
  entry="crossover(sma(50), sma(200))"
  exit="crossunder(macd().line, macd().signal)"
  stopLossPercent={8}
  trailingStopPercent={6}
/>;

// The same language registers a custom indicator:
chart.registerFormula({ label: "RSI of volume", formula: "rsi(14, volume)" });

52 stock & crypto terminal components

Pro

The rest of the interface, not just the chart: watchlists, order books, depth charts, an order ticket, an options chain, funding rates, equity curves, blotters. Plain typed objects in, callbacks out.

  • Native React and Vue components, or the same .create() API as the chart
  • wrapper={false} renders bare, on your own surface
  • One tree-shakeable file each — import three, ship three
components · Pro
import { Watchlist } from "tickwick-pro/components/react";

<Watchlist
  theme="carbon"
  title="Majors"
  rows={[
    { symbol: "AAPL", price: 214.32, changePercent: 1.4, spark: [210, 212, 214] },
    { symbol: "MSFT", price: 431.8, changePercent: -0.6 },
  ]}
  onSelect={(row) => setSymbol(row.symbol)}
/>;

Export, workspaces, ten languages

Pro

A PNG that includes the HTML overlays sitting on the canvas — legend, indicator chips — and drops the interactive chrome. Layouts save and restore whole. And the nine non-English locales register once a licence verifies, each as its own chunk.

  • downloadPNG() and exportPDF(), or exportPNG() for the raw Blob
  • Workspaces cover panes, drawings, indicators, ATA state and saved formulas
  • Arabic is full RTL; locale is per instance, so one page can run two
export + i18n · Pro
await chart.downloadPNG({ title: "AAPL · 1D", scale: 2, caption: true });

chart.saveWorkspace("desk-layout");
chart.listWorkspaces();          // ["desk-layout", …]

await chart.setLocale("ar");     // RTL

The whole upgrade

Pro

Two lines. Same data pipeline, same theme, same integration — Pro verifies the key, then registers its capabilities into the very registries your own plugins use. Nothing about your app changes shape.

  • Ed25519, verified client-side and synchronously — it never calls our servers
  • An absent or expired key registers nothing: it renders as the free core
  • The MIT core stays yours regardless. No lock-in, even if we disappear.
upgrading
- import { TickwickChart } from "tickwick";
+ import { TickwickChartPro } from "tickwick-pro";

- TickwickChart.create({ container: "#chart", data });
+ TickwickChartPro.create({ container: "#chart", data, licenseKey: "tw_…" });
FAQ

Before you install

Something else? Ask us — it goes to the person who wrote the library.