public async Task <List <OrderResBase> > PlaceOrder(LadderOrder order) { List <OrderResBase> results = new List <OrderResBase>(); if (null == order) { return(results); } HttpClient requestClient = ClientTestNet; if (order.MainNet) { requestClient = ClientMainNet; } List <LinearRungs> linearLadder = SharedBusinessLogic.Ladder.Linear(order.StartPrice, order.EndPrice, order.Rungs, order.Quantity); foreach (var(requestMessage, postParams) in from LinearRungs linearRungs in linearLadder.Where(ll => ll.Quantity > 0) let linearOrder = new OrderRequest { ApiKey = order.ApiKey, Sign = order.Sign, Currency = order.Currency, Symbol = order.Symbol, Side = order.Side, OrderSide = order.OrderSide, StartPrice = linearRungs.Price, Quantity = linearRungs.Quantity } let requestMessage = new HttpRequestMessage(HttpMethod.Post, path + BusinessLogic.OrderCreate.GenerateQueryParameters(linearOrder)) let postParams = BusinessLogic.OrderCreate.GenerateFormParameters(linearOrder) select(requestMessage, postParams)) { requestMessage.Content = new StringContent(postParams, Encoding.UTF8, "application/x-www-form-urlencoded"); HttpResponseMessage response = await requestClient.SendAsync(requestMessage).ConfigureAwait(false); response.EnsureSuccessStatusCode(); using (System.IO.Stream responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) { results.Add(await JsonSerializer.DeserializeAsync <OrderResBase>(responseStream)); } Task.Delay(1000).Wait(); } return(results); }
public async Task <ActionResult <List <OrderResBase> > > CreateLadder(LadderOrder order) { return(await ByBitService.PlaceOrder(order).ConfigureAwait(false)); }