wickchart is a modern financial charting Web Component: candles, indicators,
live streaming, scenario planning — plus an opt-in drawing toolkit — in a single
framework-agnostic element that renders anywhere a <div> does.
The chart below is the real component, live — placed with two HTML tags
(<wick-feed> + <wick-chart>) and zero JavaScript.
Built as one Canvas-rendered element — ~270 KB unminified, held under a 74 KB gzipped CI budget, no framework, no build step.
<wick-feed> streams Binance over WebSocket with REST backfill — degrading gracefully to polling, then a synthetic bridge. Or bring your own data with setData() / update().
One attribute off the clock: aggregate="dollar:50000" builds tick, volume or dollar bars client-side from the raw trade tape — Binance aggTrade WebSocket with paginated backfill, offline synthetic prints, or your own trades endpoint. Quant-grade, zero JavaScript.
<wick-chart worker> computes built-in indicators in a Web Worker — at 1M bars the longest main-thread freeze drops ~270 ms → ~56 ms — and streamed ticks patch series incrementally in O(warm-up) instead of recomputing history. Watch it load a million bars live.
SMA, EMA, Bollinger, VWAP, SuperTrend, Donchian, Keltner, RSI, MACD, Stochastic, ATR, OBV, CCI, Williams %R, volume. Need more? Write it inline — expr:{(close - sma(close,20)) / sma(close,20) * 100} — through a hand-written parser, no eval, with vwap(), atr() and friends callable inside expressions and alerts.
Trendlines & rays, levels, boxes, fibonacci retracements and editable notes — the wickchart-draw plugin (~8 KB gz) adds them without the core growing a single tool. Anchors magnet-snap to bars & OHLC, serialize to JSON, and sync across tabs: draw on one window, it appears on the other.
addLayer() paints into the render pipeline and claims pointer gestures, with coordinate transforms that extrapolate into future space. The whole surface is ~2 KB — and a CI size budget keeps the core under 74 KB gzipped, so “small” is an invariant, not a promise.
volshading tints the chart by realized-vol percentiles — calm vs hot markets read at a glance, with the regime in the legend.
Volume spikes, gaps, pivot highs/lows and RSI divergences auto-badge themselves with a one-line insight on hover.
Positions with stop/target zones and live P&L, edge-triggered price alerts, an R-multiple risk planner, scenario mode with σ-cones, shift-drag measure, visible-range stats, volume profile with POC/VAH/VAL — plus server-side zones & levels via setOverlays(), and bar replay with paper trading & an equity curve (wickchart-replay + wickchart-paper).
getDataWindow() turns what's on screen into a compact, paste-anywhere summary: trend, vol percentile, patterns, indicator snapshots. All computed locally.
Price maps to pitch — arrow keys play the chart so trend and shape are audible. A rare accessibility win for screen-reader traders.
Chart state round-trips through the URL hash, PNG export is built in, and wickchart/report composes chart + visible-range stats + watermark into one shareable snapshot — while co-view syncs crosshairs, viewport presence bands and shared drawings across tabs over BroadcastChannel, no server.
No install, no bundler — one script tag from a CDN and pure HTML. That's the whole integration.
<!-- live Binance chart, zero JS --> <script type="module" src="https://unpkg.com/wickchart/feed"></script> <wick-feed for="c" binance="BTCUSDT" tf="1h"></wick-feed> <wick-chart id="c" indicators="sma:20 volume" volshading></wick-chart>
// or npm, with types included npm install wickchart // full programmatic control import WickChart from 'wickchart'; chart.setData(bars); // [{time,o,h,l,c,v}] chart.update(bar); // stream live chart.getDataWindow(); // AI-ready summary
Also exported: wickchart/core (pure functions — indicators, stats, the WickScript engine), wickchart/feed (the declarative element), wickchart/worker and wickchart/report. The wider family — drawings, replay, paper trading, grid sync, tape and more — is 15 opt-in packages.
npm install wickchart react import { WickChart } from 'wickchart/react'; // props → attributes · data → bars · onXxx → wick:* events <WickChart type="candles" indicators="sma:20" volshading data={bars} onRange={handleRange} />
The full source of the live React demo is ~130 lines with no build step — every control on that page is React state driving the same element. Vue and Svelte snippets are in the README.