private static void CancelOrders()
        {
            var tradeClient = new AlgoOrderClient(Config.AccessKey, Config.SecretKey);

            _logger.Start();
            var request = new CancelOrdersRequest
            {
                clientOrderIds = new string[] { "0922T1753" }
            };

            var response = tradeClient.CancelOrdersAsync(request).Result;

            _logger.StopAndLog();

            if (response.code == (int)ResponseCode.Success)
            {
                foreach (string cid in response.data.accepted)
                {
                    AppLogger.Info($"Cancel algo order successfully, client order id: {cid}");
                }
                foreach (string cid in response.data.rejected)
                {
                    AppLogger.Info($"Cancel algo order fail, client order id: {cid}");
                }
            }
            else
            {
                AppLogger.Info($"Place algo order fail, error code: {response.code}, error message: {response.message}");
            }
        }
        public void CancelOrders(long[] orderIdsToCancel)
        {
            CancelOrdersRequest request = new CancelOrdersRequest();

            request.OrderHandle = orderIdsToCancel;


            CancelOrdersResponse response = _proxy.CancelOrders(request);

            if (response.ReturnStatus.Code != 0)
            {
                throw new Exception(response.ReturnStatus.Description);
            }
        }
Exemplo n.º 3
0
        public void CancelAllOrders(List <string> secName)
        {
            var cancelOrders = new CancelOrdersRequest
            {
                ExpireControl = new RequestExpired
                {
                    Now = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds,
                    Ttl = 30000
                },
            };

            string token = "CancelAllOrders";

            SendAuthMessage(_secKey, token, WsRequestMetaData.WsRequestMsgType.CancelOrders, cancelOrders);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Cancel an algo order by client order Ids
        /// </summary>
        /// <param name="request"></param>
        /// <returns>CancelOrdersResponse</returns>
        public async Task <CancelOrdersResponse> CancelOrdersAsync(CancelOrdersRequest request)
        {
            string url = _urlBuilder.Build(POST_METHOD, $"/v2/algo-orders/cancellation");

            return(await HttpRequest.PostAsync <CancelOrdersResponse>(url, request.ToJson()));
        }
Exemplo n.º 5
0
        public override async Task <CancelOrderResponse> CancelAllOrders(CancelOrdersRequest request, ServerCallContext context)
        {
            var result = await _validationService.ValidateAssetPairAsync(request.AssetPairId);

            if (result != null)
            {
                return(new CancelOrderResponse
                {
                    Error = new Error
                    {
                        Code = (int)result.Code,
                        Message = result.Message
                    }
                });
            }

            bool?isBuy;

            switch (request.Side)
            {
            case Side.Buy:
                isBuy = true;
                break;

            case Side.Sell:
                isBuy = false;
                break;

            default:
                isBuy = null;
                break;
            }

            var model = new LimitOrderMassCancelModel
            {
                Id          = Guid.NewGuid().ToString(),
                AssetPairId = request.AssetPairId,
                ClientId    = context.GetHttpContext().User.GetWalletId(),
                IsBuy       = isBuy
            };

            MeResponseModel response = await _matchingEngineClient.MassCancelLimitOrdersAsync(model);

            if (response == null)
            {
                return(new CancelOrderResponse
                {
                    Error = new Error
                    {
                        Code = (int)HftApiErrorCode.MeRuntime,
                        Message = "ME not available"
                    }
                });
            }

            (HftApiErrorCode code, string message) = response.Status.ToHftApiError();

            if (code == HftApiErrorCode.Success)
            {
                return new CancelOrderResponse
                       {
                           Payload = true
                       }
            }
            ;

            return(new CancelOrderResponse
            {
                Error = new Error
                {
                    Code = (int)code,
                    Message = message
                }
            });
        }
Exemplo n.º 6
0
        public override async Task <CancelOrderResponse> CancelAllOrders(CancelOrdersRequest request, ServerCallContext context)
        {
            MeResponseModel response;

            if (!string.IsNullOrEmpty(request.AssetPairId))
            {
                var result = await _validationService.ValidateAssetPairAsync(request.AssetPairId);

                if (result != null)
                {
                    var res = new CancelOrderResponse
                    {
                        Error = new ErrorResponseBody {
                            Code = ErrorCode.InvalidField, Message = result.Message
                        }
                    };

                    res.Error.Fields.Add(result.FieldName, result.Message);
                }

                bool?isBuy;

                if (request.OptionalSideCase == CancelOrdersRequest.OptionalSideOneofCase.None)
                {
                    isBuy = null;
                }
                else
                {
                    switch (request.Side)
                    {
                    case Side.Buy:
                        isBuy = true;
                        break;

                    case Side.Sell:
                        isBuy = false;
                        break;

                    default:
                        isBuy = null;
                        break;
                    }
                }

                var model = new LimitOrderMassCancelModel
                {
                    Id          = Guid.NewGuid().ToString(),
                    AssetPairId = request.AssetPairId,
                    ClientId    = context.GetClientId(),
                    IsBuy       = isBuy
                };

                response = await _matchingEngineClient.MassCancelLimitOrdersAsync(model);
            }
            else
            {
                var orders = await GetOrders(new LimitOrdersRequest(), context);

                if (orders.Body?.Orders.Any() ?? false)
                {
                    var orderIds = orders.Body.Orders.Select(x => x.Id).ToList();
                    response = await _matchingEngineClient.CancelLimitOrdersAsync(orderIds);
                }
                else
                {
                    response = new MeResponseModel {
                        Status = MeStatusCodes.Ok
                    };
                }
            }

            if (response == null)
            {
                return(new CancelOrderResponse
                {
                    Error = new ErrorResponseBody {
                        Code = ErrorCode.Runtime, Message = ErrorMessages.MeNotAvailable
                    }
                });
            }

            if (response.Status == MeStatusCodes.Ok)
            {
                return new CancelOrderResponse
                       {
                           Body = new CancelOrderResponse.Types.Body
                           {
                               Payload = true
                           }
                       }
            }
            ;

            return(new CancelOrderResponse
            {
                Error = new ErrorResponseBody {
                    Code = ErrorCode.Runtime, Message = response.Message ?? response.Status.ToString()
                }
            });
        }