jesse-indicators
Version:
A Technical indicator library for TypeScript.
33 lines (27 loc) • 747 B
text/typescript
import SMA from '../SMA'
/**
* Exponential Moving Average (EMA)
*
* @param {number[]} prices
* @param {number} period
* @returns {number}
*/
export default function EMA(prices: number[], period: number): number {
let EM: number = SMA(prices.slice(0, period), period)
let F: number = 2 / (period + 1)
for (let index = 0; index < prices.slice(period).length; index++) {
EM = EM + F * (prices.slice(period)[index] - EM)
}
return EM
}
/**
* EMA calculation that uses the last known EMA to boost performance.
*
* @param price
* @param period
* @param EM
*/
export function quickEMA(price: number, period: number, EM: number): number {
let F: number = 2 / (period + 1)
return EM + F * (price - EM)
}