OpenPond
1Branch0Tags
GL
glucryptoMerge commit 'refs/tmp/prod-master'
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, }; }