public void DeleteLimitOrderValidOrder() { var orderId = "wrongOrderId"; Step("Make StopLimitOrderRequest and get valid orderId", () => { var model = new StopLimitOrderRequest { AssetPairId = "BTCUSD", LowerLimitPrice = 100, LowerPrice = 150, OrderAction = OrderAction.Sell, UpperLimitPrice = 500, UpperPrice = 450, Volume = 0.1 }; var response = apiV2.Orders.PostOrdersStopLimit(model, token); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.Created)); orderId = response.Content.Replace("\"", ""); }); Step($"Make DELETE /api/orders/limit/{orderId}", () => { var response = apiV2.Orders.DeleteOrdersLimitOrder(orderId, token); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK)); }); }
public void PostOrdersStopLimit() { Step("Make POST /api/orders/stoplimit and validate response", () => { var model = new StopLimitOrderRequest { AssetPairId = "BTCUSD", LowerLimitPrice = 100, LowerPrice = 150, OrderAction = OrderAction.Sell, UpperLimitPrice = 500, UpperPrice = 450, Volume = 0.1 }; var response = apiV2.Orders.PostOrdersStopLimit(model, token); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.Created)); }); }
public async Task <IActionResult> PlaceStopLimitOrder([FromBody] StopLimitOrderRequest request) { var id = Guid.NewGuid(); var pair = _assetsServiceClient.AssetPairs.Get(request.AssetPairId); if (pair == null) { return(NotFound($"Asset pair '{request.AssetPairId}' not found.")); } if (pair.IsDisabled) { return(BadRequest($"Asset pair '{request.AssetPairId}' disabled.")); } var baseAsset = _assetsServiceClient.Assets.Get(pair.BaseAssetId); var quotingAsset = _assetsServiceClient.Assets.Get(pair.QuotingAssetId); var tradingSession = await _clientSessionsClient.GetTradingSession(_requestContext.SessionId); var confirmationRequired = _baseSettings.EnableSessionValidation && !(tradingSession?.Confirmed ?? false); if (confirmationRequired) { return(BadRequest("Session confirmation is required")); } var command = new CreateStopLimitOrderCommand { AssetPair = new AssetPairModel { Id = request.AssetPairId, BaseAsset = ConvertAssetToAssetModel(baseAsset), QuotingAsset = ConvertAssetToAssetModel(quotingAsset), MinVolume = pair.MinVolume, MinInvertedVolume = pair.MinInvertedVolume }, Volume = Math.Abs(request.Volume), LowerLimitPrice = request.LowerLimitPrice, LowerPrice = request.LowerPrice, UpperLimitPrice = request.UpperLimitPrice, UpperPrice = request.UpperPrice, OrderAction = request.OrderAction == OrderAction.Buy ? Lykke.Service.Operations.Contracts.Orders.OrderAction.Buy : Lykke.Service.Operations.Contracts.Orders.OrderAction.Sell, Client = await GetClientModel(), GlobalSettings = GetGlobalSettings() }; try { await _operationsClient.PlaceStopLimitOrder(id, command); } catch (HttpOperationException e) { if (e.Response.StatusCode == HttpStatusCode.BadRequest) { return(BadRequest(JObject.Parse(e.Response.Content))); } throw; } return(Created(Url.Action("Get", "Operations", new { id }), id)); }
public IResponse PostOrdersStopLimit(StopLimitOrderRequest model, string token) { return(Request.Post("/orders/stoplimit").AddJsonBody(model).WithBearerToken(token).Build().Execute()); }