quantitative
Version:
Apply indicators and strategies to time-series price data natively in Javascript.
27 lines (23 loc) • 699 B
JavaScript
export async function calculateSMA(arr, range = false) {
if (!range) range = arr.length
let sum = 0
if (range > arr.length) range = arr.length
for (let ii = arr.length - range; ii < arr.length; ii++) {
sum += arr[ii]
}
return sum / range
}
export async function calculateEMA(arr, range = false) {
if (!range) range = arr.length
const yma = arr.reduce(
(p, n, i) =>
i
? p.concat(
(2 * n) / (range + 1) +
(p[p.length - 1] * (range - 1)) / (range + 1)
)
: p,
[arr[0]]
)
return yma[yma.length - 1]
}