Fluent chain API, zero runtime dependencies, dual CJS/ESM output, and built-in charting.
npm install @jimzandueta/talaCharting requires an optional peer dependency:
npm install lightweight-chartsimport { tala } from "@jimzandueta/tala";
const result = tala()
.sma(14)
.ema(12)
.rsi(14)
.macd(
{ fastPeriod: 12, slowPeriod: 26, signalLength: 9 },
{ includeSignal: true },
)
.run(history);
result[0].sma14; // most recent SMA-14
result[0].rsi14; // most recent RSI (0-100)
result[0].macd; // most recent MACD lineCross/signal events with structured output:
const { history: enriched, signals } = tala()
.sma(14)
.macdCross()
.rsiCross()
.run(history, { structured: true });
signals.macdCross; // PriceHistoryEntry[] of cross events
signals.rsiCross; // PriceHistoryEntry[] of cross eventschart() is a terminal method that renders indicators on an interactive TradingView-style page. It works in two modes.
Writes a self-contained HTML file. Open it in any browser β no server needed.
await tala()
.sma(14)
.ema(26)
.bb(20, 2)
.macd()
.rsi(14)
.chart(history, { format: "html" });- Full candlestick chart with all indicators
- Editable data table β tweak OHLCV values and see candles update live
- Per-pane hover tooltips, legend toggles, time-scale sync, PNG export
Starts a local HTTP server that opens the browser automatically. Adds one thing HTML mode can't do: recalculate indicators after editing data.
await tala().sma(14).rsi(14).chart(history, { format: "server", port: 3000 });Click Data β edit OHLCV values β click Recalculate β indicators re-run on the server and the chart refreshes with new SMA, RSI, MACD, etc.
Chart output includes:
- Candlestick chart with overlay indicators (SMA, EMA, Bollinger Bands, etc.)
- Oscillator panes grouped by compatible scales: 0β100 (RSI, ADX, Stoch), centered (MACD, Williams %R, Fisher), wide-range (CCI)
- Hover tooltips per pane with all indicator values
- Sidebar legend with toggle switches for each indicator
- Time-scale sync across all panes (toggle off for independent scrolling)
- PNG export via html2canvas
- Editable data modal with server-side recalculation
Options:
| Option | Type | Default | Description |
|---|---|---|---|
format |
'html' | 'server' |
'server' |
'html' writes a file, 'server' starts an HTTP server |
filePath |
string |
'./demo/tala-chart.html' |
Output path for HTML mode |
port |
number |
7890 |
Port for server mode |
title |
string |
'tala chart' |
Chart title |
Run demo/test-viz.ts to generate a sample chart, or demo/test-server.ts for the live server.
| Category | Methods |
|---|---|
| Moving Averages | .sma() .ema() .wema() .alma() .trix() |
| Momentum | .macd() .rsi() .cci() .adx() .fisher() .sts() .williamsR() .stochRSI() |
| Volatility | .bb() .atr() |
| Volume | .obv() .vwap() |
| Price Levels | .pivotT() .fibRL() |
| Cross Signals | .macdCross() .rsiCross() .cciCross() .almaCross() .fisherCross() |
Each indicator appends a key to PriceHistoryEntry (for example, .sma(14) writes entry.sma14).
MIT