alphacate

0.4.0 • Public • Published

Alphacate


A Node.js toolkit with various indicators and oscillators for the technical stock analysis. This package contains only the mathematical calculations.

Installation


$ npm install alphacate [--save]

Example


//retrieve indicator module via accessor or alias
const LWMA = require('alphacate').LWMA;
const BB = require('alphacate').BollingerBands;
 
//do computation asynchronously
let run = async () => {
    try{
        //pass optional configuration object into the constructor
        let lwma = new LWMA( {periods: 4} );
        let bb = new BB( {periods: 4} );
 
        let data = [25.5, 26.75, 27.0, 26.5, 27.25];
 
        //set data series
        lwma.setValues( data );
        bb.setValues( data );
 
        //invoke calculate() to compute and retrieve result collection
        //an error will be throw if passed data serie or options are invalid
        let lwmaResultCollection = await lwma.calculate();
        let bbResultCollection = await bb.calculate();
        
        for(let i=0, len=lwmaCollection.length; i<len; i++){
            console.log(`Price: ${lwmaCollection[i].price}, LWMA: ${lwmaCollection[i].lwma}, BB Upper: ${bbCollection[i].upper}`);
        }
 
    }
    catch( err ){
        console.log(err.message);
    }
};
 
run();

List of indicators


See the list below for all available indicators in the package. Retrieve the indicator module via the accessor property or with the alias.

Indicator Module accessor Alias
Average True Range AverageTrueRange ATR
Bollinger Bands BollingerBands BB
Exponential Moving Average ExponentialMovingAverage EMA
Linearly Weighted Moving Average LinearlyWeightedMovingAverage LWMA
Money Flow Index MoneyFlowIndex MFI
Moving Average Convergence Divergence MovingAverageConvergenceDivergence MACD
On Balance Volume OnBalanceVolume OBV
Rate Of Change RateOfChange ROC
Relative Strength Index RelativeStrengthIndex RSI
Simple Moving Average SimpleMovingAverage SMA
Smoothed Moving Average SmoothedMovingAverage SMMA
Stochastic Oscillator StochasticOscillator SO
Weighted Moving Average WeightedMovingAverage WMA

Data serie item


The type of the item in the data serie that will be passed into the setValues function

Indicator Type Usage
Average True Range Number
Bollinger Bands Number
Exponential Moving Average Number
Linearly Weighted Moving Average Number
Money Flow Index Object {high:<Number>, low:<Number>, close:<Number>, volume:<Number> };
Moving Average Convergence Divergence Number
On Balance Volume Object {price:<Number>, volume:<Number>}
Rate Of Change Number
Relative Strength Index Number
Simple Moving Average Number
Smoothed Moving Average Number
Stochastic Oscillator Number
Weighted Moving Average Number

Result collection item


Each item in the result collection contains several object properties. See the list below which properties belongs to the particular indicator. All values are numbers except where noted.

Indicator Collection Item properties
Average True Range {tr, atr}
Bollinger Bands {upper:<Array>, middle:<Array>, lower:<Array>, price:<Array>}
Exponential Moving Average {price, ema}
Linearly Weighted Moving Average {price, lmwa}
Moving Average Convergence Divergence {slow_ema:<Array>, fast_ema:<Array>, signal_ema:<Array>, macd:<Array>, prices:<Array>}
On Balance Volume {price, obv}
Rate Of Change {price, roc}
Relative Strength Index {price, gain, loss, avg_gain, avg_loss, rs, rsi}
Simple Moving Average {price, sma}
Smoothed Moving Average {price, smma}
Stochastic Oscillator {k,v, price}
Weighted Moving Average {price, wma}

Indicator options


To configure the indicator with different settings, you can pass an optional configuration object into the indicator constructor.

Indicator Option properties
Average True Range periods, startIndex, endIndex, lazyEvaluation, maxTickDuration
Bollinger Bands periods, startIndex, endIndex, sliceOffset, lazyEvaluation, maxTickDuration
Exponential Moving Average periods, startIndex, endIndex, sliceOffset, lazyEvaluation, maxTickDuration, emaResultsOnly, startWithFirst
Linearly Weighted Moving Average periods, startIndex, endIndex, sliceOffset, lazyEvaluation, maxTickDuration
Money Flow Index periods, startIndex, endIndex, sliceOffset, lazyEvaluation, maxTickDuration
Moving Average Convergence Divergence fastPeriods, slowPeriods, signalPeriods, sliceOffset, lazyEvaluation, maxTickDuration
On Balance Volume startIndex, endIndex, lazyEvaluation, maxTickDuration
Rate Of Change periods, startIndex, endIndex, sliceOffset, lazyEvaluation, maxTickDuration
Relative Strength Index periods, startIndex, endIndex, sliceOffset, lazyEvaluation, maxTickDuration
Simple Moving Average periods, startIndex, endIndex, sliceOffset, lazyEvaluation, maxTickDuration
Smoothed Moving Average periods, startIndex, endIndex, sliceOffset, lazyEvaluation, maxTickDuration
Stochastic Oscillator periods, startIndex, endIndex, smaPeriods, sliceOffset, lazyEvaluation, maxTickDuration
Weighted Moving Average periods, startIndex, endIndex, sliceOffset, lazyEvaluation, maxTickDuration

See the table below for a description of the particular option property.

Option property Type Description
periods Number The time periods to calculate the indicator
startIndex Number The index for the passed data serie to start the calulation
endIndex Number The index for the passed data serie to end the calculation
sliceOffset Boolean Omit items in result collection used for inital period calculation
fastPeriods Number The time periods for the fast moving average
slowPeriods Number The time periods for the slow moving average
signalPeriods Number The time periods for the signal average
smaPeriods Number The time periods for the simple moving average
lazyEvaluation Boolean Do the computation of passed values in an asynchronous fashion
maxTickDuration Number The computation tick duration in milliseconds. If the computation is not completed, it will be continued in the tick of the next event loop.

Run Tests


All tests are inside test folder

Run tests:

$ npm test

Run code coverage report:

$ npm run coverage    

License

This project is under the MIT License. See the LICENSE file for the full license text.

Dependencies (3)

Dev Dependencies (4)

Package Sidebar

Install

npm i alphacate

Weekly Downloads

20

Version

0.4.0

License

MIT

Unpacked Size

113 kB

Total Files

45

Last publish

Collaborators

  • atticus2k