Exemple #1
0
        /// <summary>
        /// Only use this if you missed to fetched some trades on some day. This will not include the trades
        /// </summary>
        public async Task UpdateAllStock()
        {
            var allStocks = await _investagramsApiService.GetAllActiveStockPriceRealTime();

            var charts = new Dictionary <string, ChartHistory>();
            var tasks  = new List <Task>();

            foreach (var stock in allStocks)
            {
                tasks.Add(Task.Run(async() => await _investagramsApiService.GetChartHistoryByDate(stock.StockId, DateTime.Now))
                          .ContinueWith(x => charts.Add(stock.StockCode, x.Result)));
            }

            Task.WaitAll(tasks.ToArray());

            foreach (var chartHistory in charts)
            {
                try
                {
                    var lastDate        = chartHistory.Value.Dates.Last();
                    var allStockHistory = _stockHistoryRepository.Find(x => x.StockCode == chartHistory.Key && x.Date >= lastDate).ToList();

                    var index = 0;
                    foreach (var date in chartHistory.Value.Dates)
                    {
                        var stockHistory = allStockHistory.FirstOrDefault(x => x.Date == date);
                        if (stockHistory == null)
                        {
                            _stockHistoryRepository.Add(new StockHistory
                            {
                                StockCode = chartHistory.Key,
                                Last      = chartHistory.Value.Closes[index],
                                Date      = date,
                                Low       = chartHistory.Value.Lows[index],
                                Open      = chartHistory.Value.Opens[index],
                                High      = chartHistory.Value.Highs[index],
                                Volume    = chartHistory.Value.Volumes[index]
                            });
                        }

                        index++;
                    }

                    _stockHistoryRepository.SaveChanges();
                }
                catch (System.Exception ex)
                {
                    //carry on if something happens from upsert
                }
            }
        }