package trading import ( "sig-pub/api/pb" "sig-pub/pkg/types" "sig-pub/pkg/types/series" ) type KlineSeries struct { Exchange pb.ExchangeType InstId string Interval types.Interval Ts int64 klines []*types.Kline klineStore KlineStore } func NewKlineSeries(ts int64, interval types.Interval, klineStore KlineStore) KlineSeries { return KlineSeries{ Ts: ts, Interval: interval, klineStore: klineStore, } } // Get // [0]当前k线 func (a KlineSeries) Get(start int16) (kline types.Kline) { ts := a.Interval.MustAddMul(a.Ts, int64(-start)) for _, k := range a.klines { if k.Ts == ts { return *k } } // todo query tsdb return } // Series [start...end] func (a KlineSeries) Series(start, end int16) (klines series.Klines) { endTs := a.Interval.MustAddMul(a.Ts, int64(-start)) startTs := a.Interval.MustAddMul(a.Ts, int64(-end)) _ = endTs _ = startTs // return a.klineStore.GetRange(startTs, endTs) // todo return } func (s *KlineSeries) Update(kline *types.Kline) []types.Kline { s.klines = append(s.klines, kline) // todo copy(s.klines, s.klines[0:1]) set index=20, ts=kline.ts s.Ts = kline.Ts return nil }