Merge pull request #1356 from c9s/c9s/fix-rma-zero-value-issue

FIX: fix rma zero value issue
This commit is contained in:
c9s 2023-10-24 16:18:39 +08:00 committed by GitHub
commit 3fcc21c1f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 5 deletions

View File

@ -48,11 +48,6 @@ func (s *RMAStream) Calculate(x float64) float64 {
} }
s.counter++ s.counter++
if s.counter < s.window {
// we can use x, but we need to use 0. to make the same behavior as the result from python pandas_ta
s.Slice.Push(0)
}
s.Slice.Push(tmp) s.Slice.Push(tmp)
s.previous = tmp s.previous = tmp
return tmp return tmp

View File

@ -46,6 +46,21 @@ func (f *Float64Series) Subscribe(source Float64Source, c func(x float64)) {
} }
} }
// AddSubscriber adds the subscriber function and push historical data to the subscriber
func (f *Float64Series) AddSubscriber(fn func(v float64)) {
f.OnUpdate(fn)
if f.Length() == 0 {
return
}
// push historical values to the subscriber
for _, vv := range f.Slice {
fn(vv)
}
}
// Bind binds the source event to the target (Float64Calculator) // Bind binds the source event to the target (Float64Calculator)
// A Float64Calculator should be able to calculate the float64 result from a single float64 argument input // A Float64Calculator should be able to calculate the float64 result from a single float64 argument input
func (f *Float64Series) Bind(source Float64Source, target Float64Calculator) { func (f *Float64Series) Bind(source Float64Source, target Float64Calculator) {