mirror of
https://github.com/c9s/bbgo.git
synced 2024-09-20 08:11:08 +00:00
Merge pull request #1582 from anywhy/fix_marketactiveorders
Fix: Restore parameters when update active order book
This commit is contained in:
commit
e621938649
|
@ -268,6 +268,10 @@ func (b *ActiveOrderBook) GracefulCancel(ctx context.Context, ex types.Exchange,
|
|||
}
|
||||
|
||||
func (b *ActiveOrderBook) orderUpdateHandler(order types.Order) {
|
||||
if oldOrder, ok := b.Get(order.OrderID); ok {
|
||||
order.Tag = oldOrder.Tag
|
||||
order.GroupID = oldOrder.GroupID
|
||||
}
|
||||
b.Update(order)
|
||||
}
|
||||
|
||||
|
|
|
@ -76,6 +76,59 @@ func TestActiveOrderBook_pendingOrders(t *testing.T) {
|
|||
assert.True(t, filled, "filled event should be fired")
|
||||
}
|
||||
|
||||
func Test_RestoreParametersOnUpdateHandler(t *testing.T) {
|
||||
now := time.Now()
|
||||
t1 := now
|
||||
t2 := now.Add(time.Millisecond)
|
||||
ob := NewActiveOrderBook("BTCUSDT")
|
||||
|
||||
var updatedOrder types.Order
|
||||
ob.OnFilled(func(o types.Order) {
|
||||
updatedOrder = o
|
||||
})
|
||||
quantity := Number("0.01")
|
||||
orderUpdate1 := types.Order{
|
||||
OrderID: 99,
|
||||
SubmitOrder: types.SubmitOrder{
|
||||
Symbol: "BTCUSDT",
|
||||
Side: types.SideTypeBuy,
|
||||
Type: types.OrderTypeLimit,
|
||||
Quantity: quantity,
|
||||
Price: Number(19000.0),
|
||||
AveragePrice: fixedpoint.Zero,
|
||||
StopPrice: fixedpoint.Zero,
|
||||
Tag: "tag1",
|
||||
GroupID: uint32(1),
|
||||
},
|
||||
ExecutedQuantity: Number(0.0),
|
||||
Status: types.OrderStatusNew,
|
||||
CreationTime: types.Time(t1),
|
||||
UpdateTime: types.Time(t1),
|
||||
}
|
||||
|
||||
orderUpdate2 := types.Order{
|
||||
OrderID: 99,
|
||||
SubmitOrder: types.SubmitOrder{
|
||||
Symbol: "BTCUSDT",
|
||||
Side: types.SideTypeBuy,
|
||||
Type: types.OrderTypeLimit,
|
||||
Quantity: quantity,
|
||||
Price: Number(19000.0),
|
||||
AveragePrice: fixedpoint.Zero,
|
||||
StopPrice: fixedpoint.Zero,
|
||||
},
|
||||
ExecutedQuantity: quantity,
|
||||
Status: types.OrderStatusFilled,
|
||||
CreationTime: types.Time(t1),
|
||||
UpdateTime: types.Time(t2),
|
||||
}
|
||||
ob.add(orderUpdate1)
|
||||
ob.orderUpdateHandler(orderUpdate2)
|
||||
assert.Equal(t, "tag1", updatedOrder.Tag)
|
||||
assert.Equal(t, uint32(1), updatedOrder.GroupID)
|
||||
|
||||
}
|
||||
|
||||
func Test_isNewerUpdate(t *testing.T) {
|
||||
a := types.Order{
|
||||
Status: types.OrderStatusPartiallyFilled,
|
||||
|
|
Loading…
Reference in New Issue
Block a user