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

slz-indicators

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

slz-indicators

Techincal Indicators written in javascript

latest
Source
npmnpm
Version
2.0.3
Version published
Maintainers
1
Created
Source

TechnicalIndicators

A javascript technical indicators written in javascript.

Installation

Node.js versions >= 6.4

npm install --save technicalindicators
const SMA = require('technicalindicators').SMA;

Node.js versions < 6.4

npm install --save babel-polyfill
npm install --save technicalindicators
require('babel-polyfill');
const SMA = require('technicalindicators/dist/browser').SMA;

Webpack

Make sure you have the following in your config file.

module.exports = {
  resolve: {
    mainFields: ["module", "main"]
  }
}

Browser

For browser install using bower or npm, but it is necessary to include the babel-polyfill otherwise you will get an error. For example see index.html

npm install --save technicalindicators
npm install --save babel-polyfill
bower install --save technicalindicators
<script src="node_modules/babel-polyfill/browser.js"></script>
<script src="bower_components/technicalindicators/browser.js"></script>

All indicators will be available in window object. So you can just use

sma({period : 5, values : [1,2,3,4,5,6,7,8,9], reversedInput : true});

or

SMA.calculate({period : 5, values : [1,2,3,4,5,6,7,8,9]});

Available Indicators

Pattern Detection

Finds pattern in the given set of data, patterns include, DB, DT, HS, IHS, TU, TD

  const hasHeadAndShoulder = require('technicalindicators').hasHeadAndShoulder;
  hasHeadAndShoulder({values : closes})
  isTrendingUp({values : closes})

When running in browser the file model.bin present in dist/model.bin in the respository should be accessible on your server at the location at /dist/model.bin. The model is trained using 400 count of values, so try to provide values close to 400 for a reliable prediction of DB, DT, HS, IHS TD(Trending Down) and TU(Trending up) works fine even with lower values.

Chart Types

CandleStick Pattern

or

Search for all bullish or bearish using

var twoDayBullishInput = {
  open: [23.25,15.36],
  high: [25.10,30.87],
  close: [21.44,27.89],
  low: [20.82,14.93],
}

var bullish = require('technicalindicators').bullish;

bullish(twoDayBullishInput) //true

API

There are three ways you can use to get the indicator results.

calculate

Every indicator has a static method calculate which can be used to calculate the indicator without creating an object.

const sma = require('technicalindicators').sma;
var prices = [1,2,3,4,5,6,7,8,9,10,12,13,15];
var period = 10;
sma({period : period, values : prices})

or

const SMA = require('technicalindicators').SMA;
var prices = [1,2,3,4,5,6,7,8,9,10,12,13,15];
var period = 10;
SMA.calculate({period : period, values : prices})

nextValue

nextValue method is used to get the next indicator value.

var sma = new SMA({period : period, values : []});
var results = [];
prices.forEach(price => {
  var result = sma.nextValue(price);
  if(result)
    results.push(result)
});

getResult

This a merge of calculate and nextValue. The usual use case would be

  • Initialize indicator with available price value

  • Get results for initialized values

  • Use nextValue to get next indicator values for further tick.

    var sma = new SMA({period : period, values : prices});
    sma.getResult(); // [5.5, 6.6, 7.7, 8.9]
    sma.nextValue(16); // 10.1
    

    Note: Calling nextValue will not update getResult() value.

Precision

This uses regular javascript numbers, so there can be rounding errors which are negligible for a technical indicators, you can set precision by using the below config. By default there is no precision set.

const technicalIndicators = require('technicalindicators');
technicalIndicators.setConfig('precision', 10);

Contribute

Create issues about anything you want to report, change of API's, or request for adding new indicators. You can also create pull request with new indicators.

Environment dependencies

Typescript: Use typescript 2.0.0 other you might get max call stack reached error.

npm install -g typescript@2.0.0

TechnicalIndicators depends on the canvas package, which requires some dependencies to be installed. You can find the instructions to do that here. If you do not install these dependencies, expect to get this error message during the installation of TechnicalIndicators:

> canvas@1.6.6 install /Users/balupton/Projects/trading/technicalindicators/node_modules/canvas
> node-gyp rebuild

./util/has_lib.sh: line 31: pkg-config: command not found
gyp: Call to './util/has_lib.sh freetype' returned exit status 0 while in binding.gyp. while trying to load binding.gyp

Setup

git clone git@github.com:anandanand84/technicalindicators.git  # or use your fork
cd technicalindicators
npm run start

Running tests and getting coverage

npm test
npm run cover

Adding new indicators.

  • Add new indicator.
  • Add the indicator to the index.js
  • Add the indicator to the src/index.ts
  • Run tsc && npm test
  • Run npm run build so it adds the indicator to the browser.js
  • Add it to read me, with the link to the tonicdev url containing the sample.
  • Add indicator it to keywords in package.json and bower.json
  • Send a pull request.

To build brower and lib run this command :

npm run add-indicator

Verify Documentation

node testdocs.js
open "http://localhost:5444/testdocs.html"

Keywords

Technical indicators

FAQs

Package last updated on 17 Apr 2018

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