Merge pull request #1465 from c9s/narumi/rebalance/fix-position-and-profit

FIX: [rebalance] fix position map and profit stats map
This commit is contained in:
なるみ 2023-12-20 23:59:05 +08:00 committed by GitHub
commit 7f8a331373
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 4 deletions

View File

@ -11,8 +11,8 @@ type MultiMarketStrategy struct {
Environ *bbgo.Environment
Session *bbgo.ExchangeSession
PositionMap PositionMap `persistence:"positionMap"`
ProfitStatsMap ProfitStatsMap `persistence:"profitStatsMap"`
PositionMap PositionMap `persistence:"position_map"`
ProfitStatsMap ProfitStatsMap `persistence:"profit_stats_map"`
OrderExecutorMap GeneralOrderExecutorMap
parent, ctx context.Context

View File

@ -54,6 +54,10 @@ func (s *Strategy) Defaults() error {
}
func (s *Strategy) Initialize() error {
if s.MultiMarketStrategy == nil {
s.MultiMarketStrategy = &MultiMarketStrategy{}
}
for currency := range s.TargetWeights {
if currency == s.QuoteCurrency {
continue
@ -105,11 +109,13 @@ func (s *Strategy) Run(ctx context.Context, _ bbgo.OrderExecutor, session *bbgo.
s.markets[symbol] = market
}
s.MultiMarketStrategy = &MultiMarketStrategy{}
s.MultiMarketStrategy.Initialize(ctx, s.Environment, session, s.markets, ID)
s.activeOrderBook = bbgo.NewActiveOrderBook("")
s.activeOrderBook.BindStream(session.UserDataStream)
s.activeOrderBook.OnFilled(func(order types.Order) {
s.rebalance(ctx)
})
session.UserDataStream.OnStart(func() {
if s.OnStart {
@ -134,7 +140,7 @@ func (s *Strategy) Run(ctx context.Context, _ bbgo.OrderExecutor, session *bbgo.
func (s *Strategy) rebalance(ctx context.Context) {
// cancel active orders before rebalance
if err := s.Session.Exchange.CancelOrders(ctx, s.activeOrderBook.Orders()...); err != nil {
if err := s.activeOrderBook.GracefulCancel(ctx, s.Session.Exchange); err != nil {
log.WithError(err).Errorf("failed to cancel orders")
}