예제 #1
0
        public async Task <IActionResult> Post([FromBody] OrderModel orderModel)
        {
            if (string.IsNullOrEmpty(orderModel?.ExchangeName) ||
                string.IsNullOrEmpty(orderModel.Instrument) ||
                orderModel.Volume == 0)
            {
                return(BadRequest("Bad model"));
            }

            if (!(_exchangeCache.Get(orderModel.ExchangeName)?.AcceptOrder ?? true))
            {
                return(BadRequest($"AcceptOrder is false for {orderModel.ExchangeName}"));
            }

            var quote = _quoteService.Get(orderModel.ExchangeName, orderModel.Instrument);

            var result = await _tradingService.CreateOrder(
                orderModel.ExchangeName,
                orderModel.Instrument,
                orderModel.TradeType,
                orderModel.Price ?? (orderModel.TradeType == TradeType.Buy ? quote?.Ask : quote?.Bid) ?? 0,
                orderModel.Volume);

            if (result == null)
            {
                return(BadRequest("No such exchange in config"));
            }

            return(Ok(result));
        }