How To Compute Bollinger Bands using Golang?

Member

by melvina , in category: Technology , 10 months ago

How To Compute Bollinger Bands using Golang?

Facebook Twitter LinkedIn Telegram Whatsapp

1 answer

by bailey_conroy , 10 months ago

@melvina 

To compute Bollinger Bands using Golang, you can use the following code snippet:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package main

import (
	"fmt"
	"math"
)

func calculateSMA(data []float64, period int) []float64 {
	sma := make([]float64, len(data)-period+1)
	for i := period - 1; i < len(data); i++ {
		sum := 0.0
		for j := i - period + 1; j <= i; j++ {
			sum += data[j]
		}
		sma[i-period+1] = sum / float64(period)
	}
	return sma
}

func calculateStandardDeviation(data []float64, period int) []float64 {
	sd := make([]float64, len(data)-period+1)
	for i := period - 1; i < len(data); i++ {
		sum := 0.0
		for j := i - period + 1; j <= i; j++ {
			sum += math.Pow(data[j]-sma[i-period+1], 2)
		}
		sd[i-period+1] = math.Sqrt(sum / float64(period))
	}
	return sd
}

func calculateBollingerBands(data []float64, period int, multiplier float64) (upperBand, lowerBand []float64) {
	sma := calculateSMA(data, period)
	sd := calculateStandardDeviation(data, period)
	upperBand = make([]float64, len(data)-period+1)
	lowerBand = make([]float64, len(data)-period+1)

	for i := period - 1; i < len(data); i++ {
		upperBand[i-period+1] = sma[i-period+1] + multiplier*sd[i-period+1]
		lowerBand[i-period+1] = sma[i-period+1] - multiplier*sd[i-period+1]
	}
	return upperBand, lowerBand
}

func main() {
	data := []float64{10, 12, 15, 14, 16, 18, 20, 17, 15, 13, 12, 10}
	period := 5
	multiplier := 2.0

	upperBand, lowerBand := calculateBollingerBands(data, period, multiplier)
	fmt.Println("Upper Bollinger Band:", upperBand)
	fmt.Println("Lower Bollinger Band:", lowerBand)
}


This code snippet includes functions to calculate the Simple Moving Average (SMA), Standard Deviation (SD), and Bollinger Bands based on the input data, period, and multiplier. The main function demonstrates how to use these functions to calculate and print the upper and lower Bollinger Bands for a sample data set. You can modify the input data, period, and multiplier as needed for your specific use case.