1Branch0Tags
typescript
export type BollingerResult = {
middle: number;
upper: number;
lower: number;
};
export function computeBollinger(
values: number[],
period = 20,
multiplier = 2
): BollingerResult | null {
if (values.length < period) return null;
const slice = values.slice(-period);
const mean = slice.reduce((sum, value) => sum + value, 0) / period;
const variance =
slice.reduce((sum, value) => sum + Math.pow(value - mean, 2), 0) / period;
const stdDev = Math.sqrt(variance);
return {
middle: mean,
upper: mean + multiplier * stdDev,
lower: mean - multiplier * stdDev,
};
}