This commit is contained in:
kbearXD 2024-09-04 15:14:50 +08:00 committed by GitHub
commit 67105d0582
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -5,6 +5,9 @@ import "github.com/c9s/bbgo/pkg/types"
const MaxNumOfKLines = 5_000
const MaxNumOfKLinesTruncate = 100
const NumberOfKLinesThreshold = 6_000
const NumberOfTruncatedKLines = 5_000
// MarketDataStore receives and maintain the public market data of a single symbol
//go:generate callbackgen -type MarketDataStore
type MarketDataStore struct {
@ -57,8 +60,13 @@ func (store *MarketDataStore) AddKLine(k types.KLine) {
}
window.Add(k)
if len(*window) > MaxNumOfKLines {
*window = (*window)[MaxNumOfKLinesTruncate-1:]
LenOfWindow := len(*window)
CapOfWindow := cap(*window)
if LenOfWindow == CapOfWindow && CapOfWindow > NumberOfKLinesThreshold {
truncatedWindow := (*window)[LenOfWindow-NumberOfTruncatedKLines:]
copy(*window, truncatedWindow)
*window = (*window)[:len(truncatedWindow)]
}
store.EmitKLineClosed(k)