mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
Kraken wsCancelAllOrders added, fix bugs in wsAddOrder, added new API endpoint CancelBatchOrders (#596)
* GetClosedOrder implemented for Kraken and Binance, fixed Binance MARKET order creaton, added rate, fee and cost fileds on SubmitOrder responce * return Trades on Binance SubmitOrder, new validation methods on Binance and kraken GetClosedOrderInfo * removed the Binance extra method GetClosedOrder * func description corrected * removed price, fee and cost from SimulateOrder response, as we get all necessary info in response to calculate them on client side * GetClosedOrder implementation moved to GetOrderInfo * changed GetOrderInfo params * removed Canceled order.Type used for Kraken * update QueryOrder in gctscript * add missed params to QueryOrder validator (gctscript) * fixed testing issues * GetClosedOrder implemented for Kraken and Binance, fixed Binance MARKET order creaton, added rate, fee and cost fileds on SubmitOrder responce * return Trades on Binance SubmitOrder, new validation methods on Binance and kraken GetClosedOrderInfo * removed the Binance extra method GetClosedOrder * func description corrected * removed price, fee and cost from SimulateOrder response, as we get all necessary info in response to calculate them on client side * GetClosedOrder implementation moved to GetOrderInfo * changed GetOrderInfo params * removed Canceled order.Type used for Kraken * update QueryOrder in gctscript * add missed params to QueryOrder validator (gctscript) * fixed testing issues * pull previous changes * linter issues fix * updated query_order exmple in gctscript, fixed params check * removed orderPair unnecessary conversion * added wsCancelAllOrders, fixed bugs * fixed Kraken wsAddOrder method * cleanup * CancelBatchOrders implementation * changed CancelBatchOrders signature * fixed tests and wrappers * btcmarkets_test fix * cleanup * cleanup * changed CancelBatchOrders signature * fmt * Update configtest.json * Update configtest.json * rollback configtest * refactored Kraken wsHandleData to allow tests * removed unnecessary error test in TestWsAddOrderJSON * dependencies updates Co-authored-by: Vazha Bezhanishvili <vazha.bezhanishvili@elegro.eu>
This commit is contained in:
@@ -133,6 +133,9 @@ func (h *FakePassingExchange) SubmitOrder(_ *order.Submit) (order.SubmitResponse
|
||||
}
|
||||
func (h *FakePassingExchange) ModifyOrder(_ *order.Modify) (string, error) { return "", nil }
|
||||
func (h *FakePassingExchange) CancelOrder(_ *order.Cancel) error { return nil }
|
||||
func (h *FakePassingExchange) CancelBatchOrders(_ []order.Cancel) (order.CancelBatchResponse, error) {
|
||||
return order.CancelBatchResponse{}, nil
|
||||
}
|
||||
func (h *FakePassingExchange) CancelAllOrders(_ *order.Cancel) (order.CancelAllResponse, error) {
|
||||
return order.CancelAllResponse{}, nil
|
||||
}
|
||||
|
||||
@@ -1020,9 +1020,65 @@ func (s *RPCServer) CancelOrder(_ context.Context, r *gctrpc.CancelOrderRequest)
|
||||
Data: fmt.Sprintf("order %s cancelled", r.OrderId)}, nil
|
||||
}
|
||||
|
||||
// CancelBatchOrders cancels an orders specified by exchange, currency pair and asset type
|
||||
func (s *RPCServer) CancelBatchOrders(_ context.Context, r *gctrpc.CancelBatchOrdersRequest) (*gctrpc.CancelBatchOrdersResponse, error) {
|
||||
exch := s.GetExchangeByName(r.Exchange)
|
||||
if exch == nil {
|
||||
return nil, errExchangeNotLoaded
|
||||
}
|
||||
|
||||
pair, err := currency.NewPairFromStrings(r.Pair.Base, r.Pair.Quote)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
assetType, err := asset.New(r.AssetType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
status := make(map[string]string)
|
||||
var request []order.Cancel
|
||||
orders := strings.Split(r.OrdersId, ",")
|
||||
for _, orderID := range orders {
|
||||
status[orderID] = order.Cancelled.String()
|
||||
request = append(request, order.Cancel{
|
||||
AccountID: r.AccountId,
|
||||
ID: orderID,
|
||||
Side: order.Side(r.Side),
|
||||
WalletAddress: r.WalletAddress,
|
||||
Pair: pair,
|
||||
AssetType: assetType,
|
||||
})
|
||||
}
|
||||
|
||||
_, err = exch.CancelBatchOrders(request)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &gctrpc.CancelBatchOrdersResponse{
|
||||
Orders: []*gctrpc.CancelBatchOrdersResponse_Orders{{
|
||||
OrderStatus: status,
|
||||
}},
|
||||
}, nil
|
||||
}
|
||||
|
||||
// CancelAllOrders cancels all orders, filterable by exchange
|
||||
func (s *RPCServer) CancelAllOrders(_ context.Context, r *gctrpc.CancelAllOrdersRequest) (*gctrpc.CancelAllOrdersResponse, error) {
|
||||
return &gctrpc.CancelAllOrdersResponse{}, common.ErrNotYetImplemented
|
||||
exch := s.GetExchangeByName(r.Exchange)
|
||||
if exch == nil {
|
||||
return &gctrpc.CancelAllOrdersResponse{}, errExchangeNotLoaded
|
||||
}
|
||||
|
||||
resp, err := exch.CancelAllOrders(nil)
|
||||
if err != nil {
|
||||
return &gctrpc.CancelAllOrdersResponse{}, err
|
||||
}
|
||||
|
||||
return &gctrpc.CancelAllOrdersResponse{
|
||||
Count: resp.Count, // count of deleted orders
|
||||
}, nil
|
||||
}
|
||||
|
||||
// GetEvents returns the stored events list
|
||||
|
||||
Reference in New Issue
Block a user