mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-31 15:10:42 +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:
@@ -360,6 +360,11 @@ func ({{.Variable}} *{{.CapitalName}}) CancelOrder(ord *order.Cancel) error {
|
||||
return common.ErrNotYetImplemented
|
||||
}
|
||||
|
||||
// CancelBatchOrders cancels orders by their corresponding ID numbers
|
||||
func ({{.Variable}} *{{.CapitalName}}) CancelBatchOrders(orders []order.Cancel) (order.CancelBatchResponse, error) {
|
||||
return order.CancelBatchResponse{}, common.ErrNotYetImplemented
|
||||
}
|
||||
|
||||
// CancelAllOrders cancels all orders associated with a currency pair
|
||||
func ({{.Variable}} *{{.CapitalName}}) CancelAllOrders(orderCancellation *order.Cancel) (order.CancelAllResponse, error) {
|
||||
// if err := orderCancellation.Validate(); err != nil {
|
||||
|
||||
@@ -147,6 +147,11 @@ func testWrappers(e exchange.IBotExchange) []string {
|
||||
funcs = append(funcs, "CancelOrder")
|
||||
}
|
||||
|
||||
_, err = e.CancelBatchOrders(nil)
|
||||
if err == common.ErrNotYetImplemented {
|
||||
funcs = append(funcs, "CancelBatchOrders")
|
||||
}
|
||||
|
||||
_, err = e.CancelAllOrders(nil)
|
||||
if err == common.ErrNotYetImplemented {
|
||||
funcs = append(funcs, "CancelAllOrders")
|
||||
|
||||
@@ -587,6 +587,28 @@ func testWrappers(e exchange.IBotExchange, base *exchange.Base, config *Config)
|
||||
Response: jsonifyInterface([]interface{}{nil}),
|
||||
})
|
||||
|
||||
var request []order.Cancel
|
||||
request = append(request, order.Cancel{
|
||||
Side: testOrderSide,
|
||||
Pair: p,
|
||||
ID: config.OrderSubmission.OrderID,
|
||||
AssetType: assetTypes[i],
|
||||
})
|
||||
|
||||
var CancelBatchOrdersResponse order.CancelBatchResponse
|
||||
CancelBatchOrdersResponse, err = e.CancelBatchOrders(request)
|
||||
msg = ""
|
||||
if err != nil {
|
||||
msg = err.Error()
|
||||
responseContainer.ErrorCount++
|
||||
}
|
||||
responseContainer.EndpointResponses = append(responseContainer.EndpointResponses, EndpointResponse{
|
||||
SentParams: jsonifyInterface([]interface{}{cancelRequest}),
|
||||
Function: "CancelBatchOrders",
|
||||
Error: msg,
|
||||
Response: jsonifyInterface([]interface{}{CancelBatchOrdersResponse}),
|
||||
})
|
||||
|
||||
var cancellAllOrdersResponse order.CancelAllResponse
|
||||
cancellAllOrdersResponse, err = e.CancelAllOrders(&cancelRequest)
|
||||
msg = ""
|
||||
|
||||
@@ -1832,6 +1832,152 @@ func cancelOrder(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
var cancelBatchOrdersCommand = cli.Command{
|
||||
Name: "cancelbatchorders",
|
||||
Usage: "cancel batch orders cancels a list of exchange orders (comma separated)",
|
||||
ArgsUsage: "<exchange> <account_id> <order_ids> <pair> <asset> <wallet_address> <side>",
|
||||
Action: cancelBatchOrders,
|
||||
Flags: []cli.Flag{
|
||||
cli.StringFlag{
|
||||
Name: "exchange",
|
||||
Usage: "the exchange to cancel the order for",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "account_id",
|
||||
Usage: "the account id",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "order_ids",
|
||||
Usage: "the comma separated orders id-s",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "pair",
|
||||
Usage: "the currency pair to cancel the order for",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "asset",
|
||||
Usage: "the asset type",
|
||||
},
|
||||
cli.Float64Flag{
|
||||
Name: "wallet_address",
|
||||
Usage: "the wallet address",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "side",
|
||||
Usage: "the order side",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
func cancelBatchOrders(c *cli.Context) error {
|
||||
if c.NArg() == 0 && c.NumFlags() == 0 {
|
||||
return cli.ShowCommandHelp(c, "cancelbatchorders")
|
||||
}
|
||||
|
||||
var exchangeName string
|
||||
var accountID string
|
||||
var orderID string
|
||||
var currencyPair string
|
||||
var assetType string
|
||||
var walletAddress string
|
||||
var orderSide string
|
||||
|
||||
if c.IsSet("exchange") {
|
||||
exchangeName = c.String("exchange")
|
||||
} else {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("account_id") {
|
||||
accountID = c.String("account_id")
|
||||
} else {
|
||||
accountID = c.Args().Get(1)
|
||||
}
|
||||
|
||||
if c.IsSet("order_ids") {
|
||||
orderID = c.String("order_ids")
|
||||
} else {
|
||||
orderID = c.Args().Get(2)
|
||||
}
|
||||
|
||||
if orderID == "" {
|
||||
return errors.New("an order ID must be set")
|
||||
}
|
||||
|
||||
if c.IsSet("pair") {
|
||||
currencyPair = c.String("pair")
|
||||
} else {
|
||||
currencyPair = c.Args().Get(3)
|
||||
}
|
||||
|
||||
if c.IsSet("asset") {
|
||||
assetType = c.String("asset")
|
||||
} else {
|
||||
assetType = c.Args().Get(4)
|
||||
}
|
||||
|
||||
assetType = strings.ToLower(assetType)
|
||||
if !validAsset(assetType) {
|
||||
return errInvalidAsset
|
||||
}
|
||||
|
||||
if c.IsSet("wallet_address") {
|
||||
walletAddress = c.String("wallet_address")
|
||||
} else {
|
||||
walletAddress = c.Args().Get(5)
|
||||
}
|
||||
|
||||
if c.IsSet("side") {
|
||||
orderSide = c.String("side")
|
||||
} else {
|
||||
orderSide = c.Args().Get(6)
|
||||
}
|
||||
|
||||
// pair is optional, but if it's set, do a validity check
|
||||
var p currency.Pair
|
||||
if len(currencyPair) > 0 {
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
var err error
|
||||
p, err = currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.CancelBatchOrders(context.Background(), &gctrpc.CancelBatchOrdersRequest{
|
||||
Exchange: exchangeName,
|
||||
AccountId: accountID,
|
||||
OrdersId: orderID,
|
||||
Pair: &gctrpc.CurrencyPair{
|
||||
Delimiter: p.Delimiter,
|
||||
Base: p.Base.String(),
|
||||
Quote: p.Quote.String(),
|
||||
},
|
||||
AssetType: assetType,
|
||||
WalletAddress: walletAddress,
|
||||
Side: orderSide,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
jsonOutput(result)
|
||||
return nil
|
||||
}
|
||||
|
||||
var cancelAllOrdersCommand = cli.Command{
|
||||
Name: "cancelallorders",
|
||||
Usage: "cancels all orders (all or by exchange name)",
|
||||
|
||||
@@ -122,6 +122,7 @@ func main() {
|
||||
simulateOrderCommand,
|
||||
whaleBombCommand,
|
||||
cancelOrderCommand,
|
||||
cancelBatchOrdersCommand,
|
||||
cancelAllOrdersCommand,
|
||||
getEventsCommand,
|
||||
addEventCommand,
|
||||
|
||||
Reference in New Issue
Block a user