node-talib
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.
Features
- 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
Prerequisites
- Node.js >= 22.0.0
- Python (for node-gyp)
- C++ Build Tools
Installation
npm install talib
Quick Start
CommonJS
const talib = require('talib');
const result = talib.execute({
name: 'SMA',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInTimePeriod: 20
});
console.log(result.result.outReal);
ES Modules
import talib from 'talib';
const result = talib.execute({
name: 'RSI',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInTimePeriod: 14
});
TypeScript
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
});
Building from Source
git clone https://github.com/oransel/node-talib.git
cd node-talib
npm install
The module will be built automatically during installation.
API Reference
Module Properties
talib.version
talib.functions
talib.functionUnstIds
Methods
talib.execute(params[, callback])
Execute 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);
});
});
talib.explain(functionName)
Get detailed information about a function's parameters.
const info = talib.explain('ADX');
console.log(info);
talib.setUnstablePeriod(functionId, period)
Set the unstable period for a function.
talib.setUnstablePeriod(talib.functionUnstIds.TA_FUNC_UNST_EMA, 30);
Common Indicators
Moving Averages
const sma = talib.execute({
name: 'SMA',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInTimePeriod: 20
});
const ema = talib.execute({
name: 'EMA',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInTimePeriod: 12
});
Momentum Indicators
const rsi = talib.execute({
name: 'RSI',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInTimePeriod: 14
});
const macd = talib.execute({
name: 'MACD',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInFastPeriod: 12,
optInSlowPeriod: 26,
optInSignalPeriod: 9
});
Volatility Indicators
const bbands = talib.execute({
name: 'BBANDS',
startIdx: 0,
endIdx: prices.length - 1,
inReal: prices,
optInTimePeriod: 20,
optInNbDevUp: 2,
optInNbDevDn: 2,
optInMAType: 0
});
const atr = talib.execute({
name: 'ATR',
startIdx: 0,
endIdx: prices.length - 1,
high: highs,
low: lows,
close: closes,
optInTimePeriod: 14
});
Moving Average Types
When an indicator accepts optInMAType:
const MAType = {
SMA: 0,
EMA: 1,
WMA: 2,
DEMA: 3,
TEMA: 4,
TRIMA: 5,
KAMA: 6,
MAMA: 7,
T3: 8
};
Examples
Check the examples/ directory for more examples:
node examples/adx.js
node examples/adx-modern.js
node examples/adx-sync.js
node examples/esm-example.mjs
node examples/multiple-indicators.js
Testing
npm test
Troubleshooting
Build Errors
If you encounter build errors:
npm run clean
npm install
npm run rebuild
Python Not Found
Ensure Python is installed and in your PATH:
python --version
python3 --version
Windows Build Issues
Install Visual Studio Build Tools:
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Support
If this project helped you, consider supporting its development:
- PayPal
- BTC: 18gT1wmq3RMoLBm2ZFv4PhiYbU5CMAQC6P
Links
License
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.