A javascript technical indicators written in javascript.
For nodejs install using npm
npm install --save technicalindicators
const SMA = require('technicalindicators').SMA;
For browser install using bower
bower install --save technicalindicators
<script src="bower_components/technicalindicators/browser.js"></script>
All indicators will be available in window object. So you can just use
SMA.calculate({period : 5, values : [1,2,3,4,5,6,7,8,9]});
or
sma({period : 5, values : [1,2,3,4,5,6,7,8,9], reversedInput : true});
#Available Indicators
- Simple Moving Average.
- Exponential Moving Average.
- Weighted Moving Average.
- Moving Average Convergence Divergence.
- MACD Histogram.
- Bollinger Bands.
- Average True Range.
- Relative Strength Index.
- Wilder’s Smoothing (Smoothed Moving Average).
- Rate of Change (ROC).
- Know Sure Thing (KST).
- Stochastic (Stochastic).
- WilliamsR (WilliamsR).
- Accumulation Distribution Line (ADL).
- On Balance Volume (OBV).
- TRIX (TRIX).
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.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
1.Initialize indicator with available price value
2.Get results for initialized values
3.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.
#Running tests and getting coverage
npm test
npm run cover
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.
- Fork the project, clone it, run
npm install
gulp watch-test
- Add tests for the indicator. Make it pass. It would be better if a sample of the stockcharts excel is used for the test case.
- Add the indicator to the index.js
- 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.