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
- macOS: Xcode Command Line Tools (
xcode-select --install) - Linux:
build-essentialpackage - Windows: Visual Studio Build Tools
- macOS: Xcode Command Line Tools (
Installation
Quick Start
CommonJS
const 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);
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 installThe module will be built automatically during installation.
API Reference
Module Properties
talib.version // TA-LIB version string talib.functions // Array of all available functions talib.functionUnstIds // Function unstable period IDs
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); // { // name: 'ADX', // group: 'Momentum Indicators', // hint: 'Average Directional Movement Index', // inputs: [...], // optInputs: [...], // outputs: [...] // }
talib.setUnstablePeriod(functionId, period)
Set the unstable period for a function.
talib.setUnstablePeriod(talib.functionUnstIds.TA_FUNC_UNST_EMA, 30);
Common Indicators
Moving Averages
// 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 });
Momentum Indicators
// 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 });
Volatility Indicators
// 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 });
Moving Average Types
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) };
Examples
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.js
Testing
Troubleshooting
Build Errors
If you encounter build errors:
# Clean and rebuild npm run clean npm install # Or use rebuild script npm run rebuild
Python Not Found
Ensure Python is installed and in your PATH:
# Check Python installation python --version # or python3 --version
Windows Build Issues
Install Visual Studio Build Tools:
- Download from Visual Studio Downloads
- Select "Desktop development with C++"
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.