mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-25 16:25:16 +00:00
Merge pull request #1153 from c9s/grid2/feature/move-metrics
FEATURE: move metrics to defer funciton
This commit is contained in:
commit
a06ed9e5af
|
@ -14,6 +14,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *Strategy) recoverByScanningTrades(ctx context.Context, session *bbgo.ExchangeSession) error {
|
func (s *Strategy) recoverByScanningTrades(ctx context.Context, session *bbgo.ExchangeSession) error {
|
||||||
|
defer func() {
|
||||||
|
s.updateGridNumOfOrdersMetricsWithLock()
|
||||||
|
s.updateOpenOrderPricesMetrics(s.orderExecutor.ActiveMakerOrders().Orders())
|
||||||
|
}()
|
||||||
|
|
||||||
historyService, implemented := session.Exchange.(types.ExchangeTradeHistoryService)
|
historyService, implemented := session.Exchange.(types.ExchangeTradeHistoryService)
|
||||||
// if the exchange doesn't support ExchangeTradeHistoryService, do not run recover
|
// if the exchange doesn't support ExchangeTradeHistoryService, do not run recover
|
||||||
if !implemented {
|
if !implemented {
|
||||||
|
@ -64,8 +69,6 @@ func (s *Strategy) recoverByScanningTrades(ctx context.Context, session *bbgo.Ex
|
||||||
debugGrid(s.logger, s.grid, s.orderExecutor.ActiveMakerOrders())
|
debugGrid(s.logger, s.grid, s.orderExecutor.ActiveMakerOrders())
|
||||||
// emit ready after recover
|
// emit ready after recover
|
||||||
s.EmitGridReady()
|
s.EmitGridReady()
|
||||||
s.updateGridNumOfOrdersMetricsWithLock()
|
|
||||||
s.updateOpenOrderPricesMetrics(s.orderExecutor.ActiveMakerOrders().Orders())
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -79,14 +82,12 @@ func (s *Strategy) recoverWithOpenOrdersByScanningTrades(ctx context.Context, hi
|
||||||
grid := s.newGrid()
|
grid := s.newGrid()
|
||||||
s.setGrid(grid)
|
s.setGrid(grid)
|
||||||
|
|
||||||
// add open orders to active order book
|
|
||||||
s.addOrdersToActiveOrderBook(openOrdersOnGrid)
|
|
||||||
|
|
||||||
expectedNumOfOrders := s.GridNum - 1
|
expectedNumOfOrders := s.GridNum - 1
|
||||||
numGridOpenOrders := int64(len(openOrdersOnGrid))
|
numGridOpenOrders := int64(len(openOrdersOnGrid))
|
||||||
s.debugLog("open orders nums: %d, expected nums: %d", numGridOpenOrders, expectedNumOfOrders)
|
s.debugLog("open orders nums: %d, expected nums: %d", numGridOpenOrders, expectedNumOfOrders)
|
||||||
if expectedNumOfOrders == numGridOpenOrders {
|
if expectedNumOfOrders == numGridOpenOrders {
|
||||||
// no need to recover
|
// no need to recover, only need to add open orders back to active order book
|
||||||
|
s.addOrdersToActiveOrderBook(openOrdersOnGrid)
|
||||||
return nil
|
return nil
|
||||||
} else if expectedNumOfOrders < numGridOpenOrders {
|
} else if expectedNumOfOrders < numGridOpenOrders {
|
||||||
return fmt.Errorf("amount of grid's open orders should not > amount of expected grid's orders")
|
return fmt.Errorf("amount of grid's open orders should not > amount of expected grid's orders")
|
||||||
|
@ -121,9 +122,11 @@ func (s *Strategy) recoverWithOpenOrdersByScanningTrades(ctx context.Context, hi
|
||||||
return errors.Wrapf(err, "verify grid with error")
|
return errors.Wrapf(err, "verify grid with error")
|
||||||
}
|
}
|
||||||
|
|
||||||
s.debugOrders("emit filled orders", filledOrders)
|
// 5. add open orders to active order book.
|
||||||
|
s.addOrdersToActiveOrderBook(openOrdersOnGrid)
|
||||||
|
|
||||||
// 5. emit the filled orders
|
// 6. emit the filled orders
|
||||||
|
s.debugOrders("emit filled orders", filledOrders)
|
||||||
activeOrderBook := s.orderExecutor.ActiveMakerOrders()
|
activeOrderBook := s.orderExecutor.ActiveMakerOrders()
|
||||||
for _, filledOrder := range filledOrders {
|
for _, filledOrder := range filledOrders {
|
||||||
activeOrderBook.EmitFilled(filledOrder)
|
activeOrderBook.EmitFilled(filledOrder)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user