mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-24 15:55:14 +00:00
29 lines
517 B
Go
29 lines
517 B
Go
|
package indicatorv2
|
||
|
|
||
|
import (
|
||
|
"github.com/c9s/bbgo/pkg/indicator"
|
||
|
"github.com/c9s/bbgo/pkg/types"
|
||
|
)
|
||
|
|
||
|
type CMAStream struct {
|
||
|
*types.Float64Series
|
||
|
}
|
||
|
|
||
|
func CMA2(source types.Float64Source) *CMAStream {
|
||
|
s := &CMAStream{
|
||
|
Float64Series: types.NewFloat64Series(),
|
||
|
}
|
||
|
s.Bind(source, s)
|
||
|
return s
|
||
|
}
|
||
|
|
||
|
func (s *CMAStream) Calculate(x float64) float64 {
|
||
|
l := float64(s.Slice.Length())
|
||
|
cma := (s.Slice.Last(0)*l + x) / (l + 1.)
|
||
|
return cma
|
||
|
}
|
||
|
|
||
|
func (s *CMAStream) Truncate() {
|
||
|
s.Slice.Truncate(indicator.MaxNumOfEWMA)
|
||
|
}
|