Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

talib

Package Overview
Dependencies
Maintainers
1
Versions
33
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

talib

Technical Analysis Library

latest
Source
npmnpm
Version
2.0.3
Version published
Weekly downloads
902
25.28%
Maintainers
1
Weekly downloads
 
Created
Source

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
    • macOS: Xcode Command Line Tools (xcode-select --install)
    • Linux: build-essential package
    • Windows: Visual Studio Build Tools

Installation

npm install talib

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 install

The 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

npm test

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:

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

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.

Keywords

talib

FAQs

Package last updated on 01 Jan 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts