mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-22 14:55:16 +00:00
indicator: truncate values if length exceeded
This commit is contained in:
parent
a8048703b3
commit
4ccbb82237
|
@ -9,6 +9,9 @@ import (
|
||||||
"github.com/c9s/bbgo/pkg/types"
|
"github.com/c9s/bbgo/pkg/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const MaxEWMAValues = 1_000
|
||||||
|
const EWMAValueTruncateSize = 500
|
||||||
|
|
||||||
//go:generate callbackgen -type EWMA
|
//go:generate callbackgen -type EWMA
|
||||||
type EWMA struct {
|
type EWMA struct {
|
||||||
types.IntervalWindow
|
types.IntervalWindow
|
||||||
|
@ -24,6 +27,8 @@ func (inc *EWMA) Update(value float64) {
|
||||||
if len(inc.Values) == 0 {
|
if len(inc.Values) == 0 {
|
||||||
inc.Values.Push(value)
|
inc.Values.Push(value)
|
||||||
return
|
return
|
||||||
|
} else if len(inc.Values) > MaxEWMAValues {
|
||||||
|
inc.Values = inc.Values[EWMAValueTruncateSize:]
|
||||||
}
|
}
|
||||||
|
|
||||||
ema := (1-multiplier)*inc.Last() + multiplier*value
|
ema := (1-multiplier)*inc.Last() + multiplier*value
|
||||||
|
|
|
@ -9,6 +9,9 @@ import (
|
||||||
"github.com/c9s/bbgo/pkg/types"
|
"github.com/c9s/bbgo/pkg/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const MaxSMAValues = 1_000
|
||||||
|
const SMAValueTruncateSize = 500
|
||||||
|
|
||||||
var zeroTime time.Time
|
var zeroTime time.Time
|
||||||
|
|
||||||
//go:generate callbackgen -type SMA
|
//go:generate callbackgen -type SMA
|
||||||
|
@ -44,6 +47,11 @@ func (inc *SMA) calculateAndUpdate(kLines []types.KLine) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
inc.Values.Push(sma)
|
inc.Values.Push(sma)
|
||||||
|
|
||||||
|
if len(inc.Values) > MaxSMAValues {
|
||||||
|
inc.Values = inc.Values[SMAValueTruncateSize:]
|
||||||
|
}
|
||||||
|
|
||||||
inc.EndTime = kLines[index].EndTime
|
inc.EndTime = kLines[index].EndTime
|
||||||
|
|
||||||
inc.EmitUpdate(sma)
|
inc.EmitUpdate(sma)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user