Skip to content

Commit

Permalink
Merge pull request #1461 from c9s/c9s/fix-xdepthmaker
Browse files Browse the repository at this point in the history
FIX: [xdepthmaker] fix double binding
  • Loading branch information
c9s authored Dec 18, 2023
2 parents 49896bf + 47b12ed commit 083f626
Showing 1 changed file with 5 additions and 27 deletions.
32 changes: 5 additions & 27 deletions pkg/strategy/xdepthmaker/strategy.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,6 @@ func init() {
bbgo.RegisterStrategy(ID, &Strategy{})
}

func notifyTrade(trade types.Trade, _, _ fixedpoint.Value) {
bbgo.Notify(trade)
}

type CrossExchangeMarketMakingStrategy struct {
ctx, parent context.Context
cancel context.CancelFunc
Expand Down Expand Up @@ -133,10 +129,12 @@ func (s *CrossExchangeMarketMakingStrategy) Initialize(
// bbgo.Sync(ctx, s)
})

// global order store
s.orderStore = core.NewOrderStore(s.Position.Symbol)
s.orderStore.BindStream(hedgeSession.UserDataStream)
s.orderStore.BindStream(makerSession.UserDataStream)

// global trade collector
s.tradeCollector = core.NewTradeCollector(symbol, s.Position, s.orderStore)
s.tradeCollector.OnTrade(func(trade types.Trade, profit, netProfit fixedpoint.Value) {
c := trade.PositionChange()
Expand All @@ -152,24 +150,9 @@ func (s *CrossExchangeMarketMakingStrategy) Initialize(
// TODO: make this atomic
s.CoveredPosition = s.CoveredPosition.Add(c)
}

s.ProfitStats.AddTrade(trade)

if profit.Compare(fixedpoint.Zero) == 0 {
s.Environ.RecordPosition(s.Position, trade, nil)
} else {
log.Infof("%s generated profit: %v", symbol, profit)

p := s.Position.NewProfit(trade, profit, netProfit)
bbgo.Notify(&p)
s.ProfitStats.AddProfit(p)

s.Environ.RecordPosition(s.Position, trade, &p)
}
})
s.tradeCollector.BindStream(s.hedgeSession.UserDataStream)
s.tradeCollector.BindStream(s.makerSession.UserDataStream)

return nil
}

Expand Down Expand Up @@ -344,21 +327,15 @@ func (s *Strategy) CrossRun(
return err
}

log.Infof("makerSession: %s hedgeSession: %s", makerSession.Name, hedgeSession.Name)

if err := s.CrossExchangeMarketMakingStrategy.Initialize(ctx, s.Environment, makerSession, hedgeSession, s.Symbol, ID, s.InstanceID()); err != nil {
return err
}

s.pricingBook = types.NewStreamBook(s.Symbol)
s.pricingBook.BindStream(s.hedgeSession.MarketDataStream)

if s.NotifyTrade {
s.tradeCollector.OnTrade(notifyTrade)
}

s.tradeCollector.OnPositionUpdate(func(position *types.Position) {
bbgo.Notify(position)
})

s.stopC = make(chan struct{})

if s.RecoverTrade {
Expand Down Expand Up @@ -485,6 +462,7 @@ func (s *Strategy) CrossRun(
log.WithError(err).Errorf("graceful cancel %s order error", s.Symbol)
}

bbgo.Sync(ctx, s)
bbgo.Notify("%s: %s position", ID, s.Symbol, s.Position)
})

Expand Down

0 comments on commit 083f626

Please sign in to comment.