Closed
Description
Like so
function bollinger(N, K) {
return values => {
let i = 0;
let sum = 0;
let sum2 = 0;
const Y = new Float64Array(values.length).fill(NaN);
for (let n = Math.min(N - 1, values.length); i < n; ++i) {
const value = values[i];
sum += value, sum2 += value ** 2;
}
for (let n = values.length; i < n; ++i) {
const value = values[i];
sum += value, sum2 += value ** 2;
const mean = sum / N;
const deviation = Math.sqrt((sum2 - sum ** 2 / N) / (N - 1));
Y[i] = mean + deviation * K;
const value0 = values[i - N + 1];
sum -= value0, sum2 -= value0 ** 2;
}
return Y;
};
}