Deno TALib (Technical Analysis)
Technical analysis (TALib) written in typescript for deno.
Installation
Deno
deno install https://deno.land/x/talib/index.ts
# or force to upgrade
deno install -f https://deno.land/x/talib/index.ts
import { RSI } from 'https://deno.land/x/talib/index.ts';
# or specific version
import { RSI } from 'https://deno.land/x/talib@0.0.5/index.ts';
Pattern detection
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});
import { RSI } from 'https://deno.land/x/talib/index.ts'
const inputRSI = {
values : [127.75,129.02,132.75,145.40,148.98,137.52,147.38,139.05,137.23,149.30,162.45,178.95,200.35,221.90,243.23,243.52,286.42,280.27,277.35,269.02,263.23,214.90],
period : 14
};
const expectedResult = [
86.41,86.43,89.65,86.50,84.96,80.54,77.56,58.06
];
console.log(RSI.calculate(inputRSI))
or
import { SMA } from 'https://deno.land/x/talib@0.0.5/index.ts';
SMA.calculate({ period: 5, values: [1,2,3,4,5,6,7,8,9] });
Available Indicators
NOTE: Only those with checked marks are currently added. You can submit issues for a feature request, or submit a PR.
- Accumulation Distribution Line (ADL).
- Average Directional Index (ADX).
- Average True Range (ATR).
- Awesome Oscillator (AO).
- Bollinger Bands (BB).
- Commodity Channel Index (CCI).
- Force Index (FI).
- Know Sure Thing (KST).
- Moneyflow Index (MFI).
- Moving Average Convergence Divergence (MACD).
- On Balance Volume (OBV).
- Parabolic Stop and Reverse (PSAR).
- Rate of Change (ROC).
- Relative Strength Index (RSI).
- Simple Moving Average (SMA).
- Stochastic Oscillator (KD).
- Stochastic RSI (StochRSI).
- Triple Exponentially Smoothed Average (TRIX).
- Typical Price.
- Volume Weighted Average Price (VWAP).
- Volume Profile (VP).
- Exponential Moving Average (EMA).
- Weighted Moving Average (WMA).
- Wilder’s Smoothing (Smoothed Moving Average, WEMA).
- WilliamsR (W%R).
- Ichimoku Cloud.
Other Utils
Chart Types
CandleStick Pattern
- Abandoned Baby.
- Bearish Engulfing Pattern.
- Bullish Engulfiing Pattern.
- Dark Cloud Cover.
- Downside Tasuki Gap.
- Doji.
- DragonFly Doji.
- GraveStone Doji.
- BullishHarami.
- Bearish Harami Cross.
- Bullish Harami Cross.
- Bullish Marubozu.
- Bearish Marubozu.
- Evening Doji Star.
- Evening Star.
- Bearish Harami.
- Piercing Line.
- Bullish Spinning Top.
- Bearish Spinning Top.
- Morning Doji Star.
- Morning Star.
- Three Black Crows.
- Three White Soldiers.
- Bullish Hammer.
- Bearish Hammer.
- Bullish Inverted Hammer.
- Bearish Inverted Hammer.
- Hammer Pattern.
- Hammer Pattern (Unconfirmed).
- Hanging Man.
- Hanging Man (Unconfirmed).
- Shooting Star.
- Shooting Star (Unconfirmed).
- Tweezer Top.
- Tweezer Bottom.
or
Search for all bullish or bearish using
import { bullish } from 'https://deno.land/x/talib/index.ts';
const twoDayBullishInput = {
open: [23.25,15.36],
high: [25.10,30.87],
close: [21.44,27.89],
low: [20.82,14.93],
}
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.
import { SMA } from 'https://deno.land/x/talib/index.ts';
var prices = [1,2,3,4,5,6,7,8,9,10,12,13,15];
var period = 10;
sma({period : period, values : prices})
or
import { SMA } from 'https://deno.land/x/talib/index.ts';
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.
import talib from 'https://deno.land/x/talib/index.ts';
talib.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.
Thanks
Original node package is from anandanand84. Thanks to https://github.com/anandanand84/technicalindicators