A modern Node.js wrapper around TA-LIB, providing 100+ technical analysis indicators including ADX, MACD, RSI, Stochastic, Bollinger Bands, TRIX, and candlestick pattern recognition.
- 100+ Technical Indicators - Comprehensive indicator library
- Modern JavaScript - ES6+, async/await, Promises
- TypeScript Support - Full type definitions included
- Dual API - Both synchronous and asynchronous execution
- ESM & CommonJS - Works with both module systems
- High Performance - Native C++ bindings via N-API
- Cross-Platform - Works on macOS, Linux, and Windows
- No Dependencies - No external dependencies required
- Lightweight - No unnecessary dependencies, small footprint
- Node.js >= 18.0.0
- Python (for node-gyp)
- C++ Build Tools
- macOS: Xcode Command Line Tools (
xcode-select --install) - Linux:
build-essentialpackage - Windows: Visual Studio Build Tools
- macOS: Xcode Command Line Tools (
npm install talibconst talib = require('talib');
// Synchronous execution
const result = talib.execute({
name: 'SMA',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInTimePeriod: 20
});
console.log(result.result.outReal);import talib from 'talib';
const result = talib.execute({
name: 'RSI',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInTimePeriod: 14
});import * as talib from 'talib';
const result: talib.ExecuteResult = talib.execute({
name: 'MACD',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInFastPeriod: 12,
optInSlowPeriod: 26,
optInSignalPeriod: 9
});git clone https://github.com/oransel/node-talib.git
cd node-talib
npm installThe module will be built automatically during installation.
talib.version // TA-LIB version string
talib.functions // Array of all available functions
talib.functionUnstIds // Function unstable period IDsExecute a technical analysis function.
Synchronous:
const result = talib.execute({
name: 'SMA',
startIdx: 0,
endIdx: data.length - 1,
inReal: data,
optInTimePeriod: 20
});Asynchronous:
talib.execute({
name: 'SMA',
startIdx: 0,
endIdx: data.length - 1,
inReal: data,
optInTimePeriod: 20
}, (err, result) => {
if (err) return console.error(err);
console.log(result);
});With Async/Await:
const result = await new Promise((resolve, reject) => {
talib.execute(params, (err, result) => {
if (err) reject(err);
else resolve(result);
});
});Get detailed information about a function's parameters.
const info = talib.explain('ADX');
console.log(info);
// {
// name: 'ADX',
// group: 'Momentum Indicators',
// hint: 'Average Directional Movement Index',
// inputs: [...],
// optInputs: [...],
// outputs: [...]
// }Set the unstable period for a function.
talib.setUnstablePeriod(talib.functionUnstIds.TA_FUNC_UNST_EMA, 30);// Simple Moving Average
const sma = talib.execute({
name: 'SMA',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInTimePeriod: 20
});
// Exponential Moving Average
const ema = talib.execute({
name: 'EMA',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInTimePeriod: 12
});// Relative Strength Index
const rsi = talib.execute({
name: 'RSI',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInTimePeriod: 14
});
// MACD
const macd = talib.execute({
name: 'MACD',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInFastPeriod: 12,
optInSlowPeriod: 26,
optInSignalPeriod: 9
});// Bollinger Bands
const bbands = talib.execute({
name: 'BBANDS',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInTimePeriod: 20,
optInNbDevUp: 2,
optInNbDevDn: 2,
optInMAType: 0 // SMA
});
// Average True Range
const atr = talib.execute({
name: 'ATR',
startIdx: 0,
endIdx: prices.length - 1,
high: highs,
low: lows,
close: closes,
optInTimePeriod: 14
});When an indicator accepts optInMAType:
const MAType = {
SMA: 0, // Simple Moving Average
EMA: 1, // Exponential Moving Average
WMA: 2, // Weighted Moving Average
DEMA: 3, // Double Exponential Moving Average
TEMA: 4, // Triple Exponential Moving Average
TRIMA: 5, // Triangular Moving Average
KAMA: 6, // Kaufman Adaptive Moving Average
MAMA: 7, // MESA Adaptive Moving Average
T3: 8 // Triple Exponential Moving Average (T3)
};Check the examples/ directory for more examples:
# Run basic example
node examples/adx.js
# Run modern async example
node examples/adx-modern.js
# Run synchronous example
node examples/adx-sync.js
# Run ES module example
node examples/esm-example.mjs
# Run multiple indicators example
node examples/multiple-indicators.jsnpm testIf you encounter build errors:
# Clean and rebuild
npm run clean
npm install
# Or use rebuild script
npm run rebuildEnsure Python is installed and in your PATH:
# Check Python installation
python --version
# or
python3 --versionInstall Visual Studio Build Tools:
- Download from Visual Studio Downloads
- Select "Desktop development with C++"
Contributions are welcome! Please feel free to submit a Pull Request.
If this project helped you, consider supporting its development:
- PayPal
- BTC: 18gT1wmq3RMoLBm2ZFv4PhiYbU5CMAQC6P
Copyright (c) 2012-2026 Mustafa Oransel
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.