mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-25 08:15:15 +00:00
rename kline store to market data store back
This commit is contained in:
parent
b7a450327c
commit
75115774f6
|
@ -102,7 +102,7 @@ func (environ *Environment) Init(ctx context.Context) (err error) {
|
||||||
|
|
||||||
session.lastPrices[symbol] = currentPrice
|
session.lastPrices[symbol] = currentPrice
|
||||||
|
|
||||||
session.klineStores[symbol] = store.NewMarketDataStore(symbol)
|
session.marketDataStores[symbol] = store.NewMarketDataStore(symbol)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Infof("querying balances...")
|
log.Infof("querying balances...")
|
||||||
|
@ -121,7 +121,7 @@ func (environ *Environment) Init(ctx context.Context) (err error) {
|
||||||
// update last prices
|
// update last prices
|
||||||
stream.OnKLineClosed(func(kline types.KLine) {
|
stream.OnKLineClosed(func(kline types.KLine) {
|
||||||
session.lastPrices[kline.Symbol] = kline.Close
|
session.lastPrices[kline.Symbol] = kline.Close
|
||||||
session.klineStores[kline.Symbol].AddKLine(kline)
|
session.marketDataStores[kline.Symbol].AddKLine(kline)
|
||||||
})
|
})
|
||||||
|
|
||||||
stream.OnTrade(func(trade *types.Trade) {
|
stream.OnTrade(func(trade *types.Trade) {
|
||||||
|
|
|
@ -30,23 +30,23 @@ type ExchangeSession struct {
|
||||||
// map: symbol -> []trade
|
// map: symbol -> []trade
|
||||||
Trades map[string][]types.Trade
|
Trades map[string][]types.Trade
|
||||||
|
|
||||||
klineStores map[string]*store.KLineStore
|
marketDataStores map[string]*store.MarketDataStore
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewExchangeSession(name string, exchange types.Exchange) *ExchangeSession {
|
func NewExchangeSession(name string, exchange types.Exchange) *ExchangeSession {
|
||||||
return &ExchangeSession{
|
return &ExchangeSession{
|
||||||
Name: name,
|
Name: name,
|
||||||
Exchange: exchange,
|
Exchange: exchange,
|
||||||
Subscriptions: make(map[types.Subscription]types.Subscription),
|
Subscriptions: make(map[types.Subscription]types.Subscription),
|
||||||
markets: make(map[string]types.Market),
|
markets: make(map[string]types.Market),
|
||||||
Trades: make(map[string][]types.Trade),
|
Trades: make(map[string][]types.Trade),
|
||||||
lastPrices: make(map[string]float64),
|
lastPrices: make(map[string]float64),
|
||||||
klineStores: make(map[string]*store.KLineStore),
|
marketDataStores: make(map[string]*store.MarketDataStore),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (session *ExchangeSession) KLineStore(symbol string) (s *store.KLineStore, ok bool) {
|
func (session *ExchangeSession) MarketDataStore(symbol string) (s *store.MarketDataStore, ok bool) {
|
||||||
s, ok = session.klineStores[symbol]
|
s, ok = session.marketDataStores[symbol]
|
||||||
return s, ok
|
return s, ok
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type SMA struct {
|
type SMA struct {
|
||||||
store *store.KLineStore
|
store *store.MarketDataStore
|
||||||
Window int
|
Window int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,9 +49,9 @@ func calculateMovingAverage(klines types.KLineWindow, period int) (values []Indi
|
||||||
return values
|
return values
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *SMA) SubscribeStore(store *store.KLineStore) {
|
func (i *SMA) SubscribeStore(store *store.MarketDataStore) {
|
||||||
i.store = store
|
i.store = store
|
||||||
|
|
||||||
// register kline update callback
|
// register kline update callback
|
||||||
store.OnUpdate(i.handleUpdate)
|
// store.OnUpdate(i.handleUpdate)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
// Code generated by "callbackgen -type KLineStore"; DO NOT EDIT.
|
|
||||||
|
|
||||||
package store
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/c9s/bbgo/pkg/types"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (store *KLineStore) OnUpdate(cb func(kline types.KLine)) {
|
|
||||||
store.updateCallbacks = append(store.updateCallbacks, cb)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (store *KLineStore) EmitUpdate(kline types.KLine) {
|
|
||||||
for _, cb := range store.updateCallbacks {
|
|
||||||
cb(kline)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -4,8 +4,8 @@ import (
|
||||||
"github.com/c9s/bbgo/pkg/types"
|
"github.com/c9s/bbgo/pkg/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:generate callbackgen -type KLineStore
|
//go:generate callbackgen -type MarketDataStore
|
||||||
type KLineStore struct {
|
type MarketDataStore struct {
|
||||||
Symbol string
|
Symbol string
|
||||||
|
|
||||||
// KLineWindows stores all loaded klines per interval
|
// KLineWindows stores all loaded klines per interval
|
||||||
|
@ -13,11 +13,11 @@ type KLineStore struct {
|
||||||
|
|
||||||
LastKLine types.KLine
|
LastKLine types.KLine
|
||||||
|
|
||||||
updateCallbacks []func(kline types.KLine)
|
kLineUpdateCallbacks []func(kline types.KLine)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMarketDataStore(symbol string) *KLineStore {
|
func NewMarketDataStore(symbol string) *MarketDataStore {
|
||||||
return &KLineStore{
|
return &MarketDataStore{
|
||||||
Symbol: symbol,
|
Symbol: symbol,
|
||||||
|
|
||||||
// KLineWindows stores all loaded klines per interval
|
// KLineWindows stores all loaded klines per interval
|
||||||
|
@ -25,22 +25,22 @@ func NewMarketDataStore(symbol string) *KLineStore {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (store *KLineStore) BindStream(stream types.Stream) {
|
func (store *MarketDataStore) BindStream(stream types.Stream) {
|
||||||
stream.OnKLineClosed(store.handleKLineClosed)
|
stream.OnKLineClosed(store.handleKLineClosed)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (store *KLineStore) handleKLineClosed(kline types.KLine) {
|
func (store *MarketDataStore) handleKLineClosed(kline types.KLine) {
|
||||||
if kline.Symbol == store.Symbol {
|
if kline.Symbol == store.Symbol {
|
||||||
store.AddKLine(kline)
|
store.AddKLine(kline)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (store *KLineStore) AddKLine(kline types.KLine) {
|
func (store *MarketDataStore) AddKLine(kline types.KLine) {
|
||||||
var interval = types.Interval(kline.Interval)
|
var interval = types.Interval(kline.Interval)
|
||||||
var window = store.KLineWindows[interval]
|
var window = store.KLineWindows[interval]
|
||||||
window.Add(kline)
|
window.Add(kline)
|
||||||
|
|
||||||
store.LastKLine = kline
|
store.LastKLine = kline
|
||||||
|
|
||||||
store.EmitUpdate(kline)
|
store.EmitKLineUpdate(kline)
|
||||||
}
|
}
|
17
pkg/store/marketdatastore_callbacks.go
Normal file
17
pkg/store/marketdatastore_callbacks.go
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
// Code generated by "callbackgen -type MarketDataStore"; DO NOT EDIT.
|
||||||
|
|
||||||
|
package store
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/c9s/bbgo/pkg/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (store *MarketDataStore) OnKLineUpdate(cb func(kline types.KLine)) {
|
||||||
|
store.kLineUpdateCallbacks = append(store.kLineUpdateCallbacks, cb)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store *MarketDataStore) EmitKLineUpdate(kline types.KLine) {
|
||||||
|
for _, cb := range store.kLineUpdateCallbacks {
|
||||||
|
cb(kline)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user