init
This commit is contained in:
28
com/ema.go
Normal file
28
com/ema.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package com
|
||||
|
||||
import "math"
|
||||
|
||||
type Ema struct {
|
||||
Alpha float64
|
||||
Val float64
|
||||
}
|
||||
|
||||
func NewEMA(alpha float64) *Ema {
|
||||
return &Ema{Alpha: alpha}
|
||||
}
|
||||
|
||||
func (e *Ema) Update(val float64) float64 {
|
||||
if math.IsNaN(val) || math.IsInf(val, 0) {
|
||||
return math.NaN()
|
||||
}
|
||||
if e.Val == 0 {
|
||||
e.Val = val
|
||||
} else {
|
||||
e.Val = e.Val*(1-e.Alpha) + val*e.Alpha
|
||||
}
|
||||
return e.Val
|
||||
}
|
||||
|
||||
func (e *Ema) Reset() {
|
||||
e.Val = 0
|
||||
}
|
||||
Reference in New Issue
Block a user