FINTERM · docsOpen terminal
Markets

Charts

WebGL candle renderer with smooth pan / zoom, indicator overlays, and pluggable data providers.

The chart is a custom WebGL renderer — candle bodies + wicks in shaders, axes and overlays in a 2D context above. Live ticks come from provider WebSockets where available (Binance, BitMEX) and REST polling otherwise (OKX, Bitstamp). The renderer holds up to 5000 candles in memory and slices a viewport of 8–5000 visible bars.

Pan & zoom

  • Mouse drag pans pixel-perfectly via a sub-pixel matrix translation that folds whole-bar shifts into viewStart and renders the residual continuously.
  • Wheel zoom is RAF-eased: events nudge a target maxPoints, an animation loop interpolates the visible value over ~12 frames.
  • Trackpad detection (rapid event cadence, fractional dy, small magnitude) automatically switches to slow tunings — about 12× less sensitive than a notched mouse wheel.
  • Release a drag with momentum and the chart fling-glides for ~600–800 ms before settling.
  • You can scroll past the latest bar into empty 'future' space (TradingView style) by panning right — useful for trendlines or projections.

Price-axis scaling

  • Click + drag the right-edge price axis (last 60 px of the chart) up or down to stretch or compress the y range — same gesture as TradingView. Drag down expands the visible price range (chart compresses); drag up contracts it (chart stretches).
  • AUTO button (bottom-right of the chart) refits the y range to the visible candles' high/low.
  • LOG button toggles the y mapping between linear and log10 — bars, indicators, price labels, and the crosshair tooltip all route through the same mapping function so they stay in lock-step.
  • MAG button (or `m` hotkey) snaps the crosshair to whichever of the bar's open / high / low / close is closest to the cursor — useful before drawing tools land.

Drawings

  • Bottom-left palette: H-LINE (single click), TREND (drag), RECT (drag).
  • Drawings anchor to global bar indices + prices, so they pan / zoom with the chart and survive a workspace reload.
  • ✕ N button clears every drawing on the chart in one click; the count next to it shows how many shapes are stored on this window.

Measure (Shift + drag)

  • Hold Shift, click and drag anywhere on the chart to draw a measurement box. Centre pill shows % change, $ change, bar count and elapsed time; colour tracks direction (green up, red down).
  • On release the box stays. ✕ on the floating toolbar clears it; starting a fresh Shift+drag replaces the previous selection.
  • ↗ Sheet exports the bar range as a fresh spreadsheet — one row per bar with time, open, high, low, close, volume.

Crosshair

  • Right-edge price pill — opaque coral tag at the cursor's y, mirroring the tooltip's price.
  • Crosshair sync across multiple charts is scoped by ticker — hovering an AAPL chart only moves other AAPL charts' crosshairs, never the BTC one next to it.

Hotkeys

1 / 2 / 3 / 4Switch timeframe to 1s / 1m / 1h / 1d.
gToggle grid lines.
lToggle linear / log price axis.
aAUTO — refit price range to data.
mToggle magnet snap to OHLC.
sScreenshot — composites bars, indicators, crosshair and watermark into a PNG download.
infoHotkeys fire only while the cursor is hovering the chart and ignore the active text input, so they don't collide with typing in the symbol search or other windows.

Providers

binanceSpot. Live WebSocket on /ws/{symbol}@kline_{interval}. Fully wired, the default for most asset palette entries.
bitmexPerp futures. WebSocket subscribe model. Picker entry exists; less-tested than Binance.
okxSpot. REST polling. Picker entry exists; mapping for symbol formats is provider-specific.
bitstampSpot, USD pairs. REST. Same as OKX — usable, less polished.
infoDon't expect a unified order book across providers — pricing differs by venue. Each chart is one provider; the palette spawns a fresh window per pick.

What the top bar tells you

  • Search — type any symbol; ranking chips re-sort by Top Volume / Top Gainers / Top Losers.
  • Timeframe segmented control (1s / 1m / 1h / 1d). Disabled timeframes grey out per provider.
  • Live current price + 24 h change percent + RSI(14) — hides under 620 px wide.
  • ƒ Indicators dropdown + ⚯ Editor button (covered in the Indicators section).