Trading Signals
Technical indicators and overlays to run technical analysis with JavaScript / TypeScript.
Motivation
The "trading-signals" library provides a TypeScript implementation for common technical indicators with arbitrary-precision decimal arithmetic. This library puts more emphasis on the correctness of the calculation than on performance.
Features
- Accurate. Don't rely on type
number
and its precision limits. Use Big. - Typed. Source code is 100% TypeScript. No need to install external typings.
- Tested. Code coverage is 100%. No surprises when using it.
Technical Indicator Types
- Trend indicators: Measure the direction of a trend
- Volume indicators: Measure the strength of a trend (based on volume)
- Volatility indicators: Measure the strength of a trend (based on price)
- Momentum indicators: Measure the speed of price movement
Supported Technical Indicators
- Acceleration Bands (ABANDS)
- Accelerator Oscillator (AC)
- Average Directional Index (ADX)
- Average True Range (ATR)
- Awesome Oscillator (AO)
- Bollinger Bands (BBANDS)
- Center of Gravity (CG)
- Double Exponential Moving Average (DEMA)
- Dual Moving Average (DMA)
- Exponential Moving Average (EMA)
- Momentum (MOM)
- Moving Average Convergence Divergence (MACD)
- Rate-of-Change (ROC)
- Relative Strength Index (RSI)
- Simple Moving Average (SMA)
- Smoothed Moving Average (SMMA)
- Stochastic Oscillator (STOCH)
- Wilder's Smoothed Moving Average (WSMA)
Usage
import {SMA} from 'trading-signals';
const sma = new SMA(3);
// You can add numbers:
sma.update(40);
sma.update(30);
sma.update(20);
// You can add strings:
sma.update('10');
// You can add arbitrary-precision decimals:
import Big from 'big.js';
sma.update(new Big(30));
// You can get the result in various formats:
console.log(sma.getResult().valueOf()); // "20"
console.log(sma.getResult().toFixed(2)); // "20.00"
update(...)
?
When to use You have to call an indicator's update
method to enter input data. The update method may or may not return a result from the indicator depending on whether the minimum amount of input data has been reached.
getResult()
?
When to use You can call getResult()
at any point in time, but it throws errors unless an indicator has received the minimum amount of data. If you call getResult()
, before an indicator has received the required amount of input values, a NotEnoughDataError
will be thrown.
Example:
import {SMA} from 'trading-signals';
// Our interval is 3, so we need 3 input values
const sma = new SMA(3);
// We supply 2 input values
sma.update(10);
sma.update(40);
try {
// We will get an error, because the minimum amount of inputs is 3
sma.getResult();
} catch (error) {
console.log(error.constructor.name); // "NotEnoughDataError"
}
// We will supply the 3rd input value
sma.update(70);
// Now, we will receive a proper result
console.log(sma.getResult().valueOf()); // "40"
Most of the time, the minimum amount of data depends on the interval / time period used.
Disclaimer
The information and publications of trading-signals do not constitute financial advice, investment advice, trading advice or any other form of advice. All results from trading-signals are intended for information purposes only.
It is very important to do your own analysis before making any investment based on your own personal circumstances. If you need financial advice or further advice in general, it is recommended that you identify a relevantly qualified individual in your jurisdiction who can advise you accordingly.
Alternatives
- Tulip Indicators (ANSI C)
- Pandas TA (Python)
- Jesse Trading Bot Indicators (Python)
- libindicators (C#)
- Cloud9Trader Indicators (JavaScript)
- Crypto Trading Hub Indicators (TypeScript)
- Technical Analysis Library using Pandas and Numpy (Python)
Maintainers
Contributing
Contributions, issues and feature requests are welcome!
Feel free to check the issues page.
License
This project is MIT licensed.
⭐️ Show your support ⭐️
Please leave a star if you find this project useful.
If you like this project, you might also like these related projects:
- coinbase-pro-node, Actively maintained Coinbase Pro API written in TypeScript.
- ig-trading-api, IG CFD Trading API written in TypeScript.
- binance-api-node, Heavily tested and Promise-based Binance API with TypeScript definitions.