diff --git a/pkg/indicator/v2_stddev.go b/pkg/indicator/v2_stddev.go new file mode 100644 index 000000000..28a5a4d07 --- /dev/null +++ b/pkg/indicator/v2_stddev.go @@ -0,0 +1,28 @@ +package indicator + +import "github.com/c9s/bbgo/pkg/types" + +type StdDevStream struct { + Float64Series + + rawValues *types.Queue + + window int + multiplier float64 +} + +func StdDev2(source Float64Source, window int) *StdDevStream { + s := &StdDevStream{ + Float64Series: NewFloat64Series(), + rawValues: types.NewQueue(window), + window: window, + } + s.Bind(source, s) + return s +} + +func (s *StdDevStream) Calculate(x float64) float64 { + s.rawValues.Update(x) + var std = s.rawValues.Stdev() + return std +}