Beispiel #1
0
        public async Task <ResponseModel <LimitOrderResponseModel> > PlaceStopLimitOrderAsync(
            string clientId, AssetPair assetPair, OrderAction orderAction, decimal volume,
            decimal?lowerPrice, decimal?lowerLimitPrice, decimal?upperPrice, decimal?upperLimitPrice, bool cancelPreviousOrders = false)
        {
            var requestId = GetNextRequestId();

            var fees = _calculateOrderFees
                ? await _feeCalculator.GetLimitOrderFees(clientId, assetPair, orderAction)
                : Array.Empty <LimitOrderFeeModel>();

            var order = new StopLimitOrderModel
            {
                Id                   = requestId.ToString(),
                AssetPairId          = assetPair.Id,
                ClientId             = clientId,
                LowerPrice           = (double?)lowerPrice,
                LowerLimitPrice      = (double?)lowerLimitPrice,
                UpperPrice           = (double?)upperPrice,
                UpperLimitPrice      = (double?)upperLimitPrice,
                CancelPreviousOrders = cancelPreviousOrders,
                Volume               = (double)Math.Abs(volume),
                OrderAction          = orderAction.ToMeOrderAction(),
                Fees                 = fees
            };

            var response = await _matchingEngineClient.PlaceStopLimitOrderAsync(order);

            CheckResponseAndThrowIfNull(response);

            var result = new LimitOrderResponseModel
            {
                Id = requestId
            };

            return(ConvertToApiModel(response.Status, result));
        }
Beispiel #2
0
        public async Task <ResponseModel <MarketOrderResponseModel> > PlaceMarketOrderAsync(string clientId, AssetPair assetPair, OrderAction orderAction, decimal volume,
                                                                                            bool straight, double?reservedLimitVolume = null)
        {
            var fees = _calculateOrderFees
                ? await _feeCalculator.GetMarketOrderFees(clientId, assetPair, orderAction)
                : Array.Empty <MarketOrderFeeModel>();

            var order = new MarketOrderModel
            {
                Id                  = GetNextRequestId().ToString(),
                AssetPairId         = assetPair.Id,
                ClientId            = clientId,
                ReservedLimitVolume = reservedLimitVolume,
                Straight            = straight,
                Volume              = (double)Math.Abs(volume),
                OrderAction         = orderAction.ToMeOrderAction(),
                Fees                = fees
            };

            var response = await _matchingEngineClient.HandleMarketOrderAsync(order);

            CheckResponseAndThrowIfNull(response);

            var result = new MarketOrderResponseModel
            {
                Price = response.Price
            };

            return(ConvertToApiModel(response.Status, result));
        }