Files
fn_registry/functions/finance/bollinger_bands.go
T
egutierrez 113c6dfd71 feat: 15 funciones finance — indicadores, riesgo e IO de mercado
11 funciones puras con implementación real:
SMA, EMA, RSI, BollingerBands, VWAP, LogReturn, AnnualizedVolatility,
SharpeRatio, MaxDrawdown, NormalizeOHLCV, TickToOHLCV

4 funciones impuras (stubs):
FetchOHLCV, StreamTicks, WriteOHLCVToParquet, LoadOHLCVFromDuckDB

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 02:23:31 +01:00

33 lines
830 B
Go

package finance
import "math"
// BollingerBands calcula las bandas de Bollinger: upper, middle (SMA), lower.
// Los primeros period-1 elementos de cada slice son 0.
func BollingerBands(data []float64, period int, numStdDev float64) (upper, middle, lower []float64) {
n := len(data)
upper = make([]float64, n)
middle = make([]float64, n)
lower = make([]float64, n)
if period <= 0 || period > n {
return
}
for i := period - 1; i < n; i++ {
var sum float64
for j := i - period + 1; j <= i; j++ {
sum += data[j]
}
mean := sum / float64(period)
var variance float64
for j := i - period + 1; j <= i; j++ {
diff := data[j] - mean
variance += diff * diff
}
std := math.Sqrt(variance / float64(period))
middle[i] = mean
upper[i] = mean + numStdDev*std
lower[i] = mean - numStdDev*std
}
return
}