JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 9
  • Score
    100M100P100Q63285F
  • License MIT

Trade Indicators

Package Exports

  • @ldrick/trade-indicators/averages/dema.js
  • @ldrick/trade-indicators/averages/dma.js
  • @ldrick/trade-indicators/averages/ema.js
  • @ldrick/trade-indicators/averages/ma.js
  • @ldrick/trade-indicators/averages/macd.js
  • @ldrick/trade-indicators/averages/sma.js
  • @ldrick/trade-indicators/averages/smma.js
  • @ldrick/trade-indicators/averages/tema.js
  • @ldrick/trade-indicators/averages/wma.js
  • @ldrick/trade-indicators/movements/adx.js
  • @ldrick/trade-indicators/movements/atr.js
  • @ldrick/trade-indicators/toPromise.js

Readme

trade-indicators

test codecov npm version npm license made with

Trade Indicators written in pure functional Typescript.
Results will be
Either<Error, ReadonlyArray<number> | Readonly<Record<string, ReadonlyArray<number>>>>
depending on what is returned using these amazing libraries:
🚀 fp-ts
🌟 big.js

  • Average Directional Index (adx)
  • Average True Range (atr)
  • Double Exponential Moving Average (dema)
  • Exponential Moving Average (ema)
  • Moving Average Convergence / Divergence (macd)
  • Simple Moving Average (sma)
  • Smoothed Moving Average (smma)
  • Triple Exponential Moving Average (tema)
  • Weighted Moving Average (wma)

Install

npm install @ldrick/trade-indicators fp-ts big.js
or
yarn add @ldrick/trade-indicators fp-ts big.js

Usage

In TypeScript:

import { either as E, function as F } from 'fp-ts';
import { ema } from '@ldrick/trade-indicators/averages/ema.js';
import { toPromise } from '@ldrick/trade-indicators/toPromise.js';

const prices = [3, 2.1, 3, 4, 5.3, 5, 4.8, 6, 7, 5];
const period = 3;

// possible usage to pipe the Result E.Either<Error, RNEA.ReadonlyNonEmptyArray<number>>
const expMovingAverage = F.pipe(
    ema(prices, period),
    E.getOrElse(() => <ReadonlyArray<number>>[]),
);

// or convert the Result to Promise<RNEA.ReadonlyNonEmptyArray<number>>
toPromise(ema(prices, period)).then(
    (result) => console.log(result),
    (error) => console.log(error),
);