mirror of
https://github.com/c9s/bbgo.git
synced 2024-09-20 08:11:08 +00:00
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:
commit
7f8a331373
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user