static async Task GetDailyCandles(string server) { string url = $"http://{server}/api/forexdailyrealprices"; string urlpost = $"http://{server}/api/forexdailyprices"; while (true) { try { var currTime = DateTime.Now; string currDay = currTime.ToString("yyyyMMdd"); DateTime currDayDate = DateTime.ParseExact(currDay, "yyyyMMdd", CultureInfo.InvariantCulture); foreach (var pair in pairs) { var urlgetpair = $"{url}/{pair}/{currDay}"; var prices = await GetAsync <ForexPricesDTO>(urlgetpair); if (prices.priceDTOs.Count() > 0) { var dailycandle = new ForexDailyPriceDTO() { Pair = pair, Open = prices.priceDTOs.First().Ask, High = prices.priceDTOs.Select(x => x.Ask).Max(), Low = prices.priceDTOs.Select(x => x.Ask).Min(), Close = prices.priceDTOs.Last().Ask, Date = currDay, Datetime = currDayDate }; var listCandles = new List <ForexDailyPriceDTO>(); listCandles.Add(dailycandle); var responsePOST = await PostAsync <List <ForexDailyPriceDTO> >(listCandles, urlpost); Console.WriteLine("Daily Candle updated"); } } } catch (Exception e) { Console.WriteLine(e.Message); } await Task.Delay(1000 * 20); } }
public async Task AddDailyPrice(ForexDailyPriceDTO item) { var dailyPriceLatest = _mapper.Map <ForexDailyPriceMongo>(item); dailyPriceLatest.Id = item.Pair + item.Date; var findDailyPrice = await _context.DailyPrices.FindAsync(x => x.Id == dailyPriceLatest.Id); if (findDailyPrice != null) { await _context.DailyPrices.DeleteOneAsync(x => x.Id == dailyPriceLatest.Id); await _context.DailyPrices.InsertOneAsync(dailyPriceLatest); } else { await _context.DailyPrices.InsertOneAsync(dailyPriceLatest); } }