void SetStockChartBindingData(CompanyTradingData ctd) { TradingDataViewModel tdvm = null; if (stockChartBindingData.Count > 0) { tdvm = new TradingDataViewModel(stockChartBindingData[stockChartBindingData.Count - 1].TradingData); } else { tdvm = new TradingDataViewModel(); } highestPrice = Math.Max(highestPrice, ctd.High); lowestPrice = Math.Min(lowestPrice, ctd.Low); tdvm.Volume = Math.Round((ctd.Volume / 1000000), 2); tdvm.Close = ctd.Close; tdvm.Low = lowestPrice; tdvm.High = highestPrice; tdvm.Price = ctd.Price; if (stockChartBindingData.Count > 0) { stockChartBindingData[stockChartBindingData.Count - 1] = tdvm; } else { stockChartBindingData.Add(tdvm); } }
void UpdateVolumeDynamicsAsyncCompleted(CompanyStockData[] cd) { foreach (CompanyStockData companynStockData in cd) { try { if (companynStockData.Data.Length == 0) { continue; } DateTime current = dates[currentDate]; CompanyTradingData ctd = GetCompanyTradingData(companynStockData.Data[0], current); CompanyTradingDataViewModel vm = watchLisBindingData.Where(c => c.CompanyName == companynStockData.CompanyName).Select(c => c).FirstOrDefault(); if (vm == null) { continue; } IList <TradingDataViewModel> volDyn = vm.VolumeDynamics as IList <TradingDataViewModel>; if (vm.VolumeDynamics == null || ((IList)vm.VolumeDynamics).Count == 0) { return; } if (tickCount == 2) { ctd.Volume = Math.Round((ctd.Volume / 1000000), 2); volDyn.Add(new TradingDataViewModel(ctd)); } if (tickCount != 2) { TradingDataViewModel tdvm = new TradingDataViewModel(volDyn[volDyn.Count - 1].TradingData); tdvm.Volume = Math.Round((ctd.Volume / 1000000), 2); tdvm.Close = ctd.Close; tdvm.Low = lowestPrice; tdvm.High = highestPrice; tdvm.Price = ctd.Price; volDyn[volDyn.Count - 1] = tdvm; } } catch { currentDate++; UpdateStockChartBindingDataAsync(); } } TryEndUpdateBindingData(); }
void CreateChartBindingData(List <CompanyData> newStockChartData) { TryResetCurrentDate(); int index = 0; DateTime firstDate = newStockChartData[0].Data.Date; DateTime startDate = new DateTime(firstDate.Year, firstDate.Month, 1); foreach (CompanyData candleData in newStockChartData) { CompanyTradingData ctd = new CompanyTradingData(candleData.Data, ""); ctd.Close = candleData.ClosePrice; ctd.Volume = Math.Round(((double)ctd.Volume / 1000000), 2); ctd.Low = lowestPrice = candleData.LowPrice; ctd.High = highestPrice = candleData.HighPrice; TradingDataViewModel viewModel = new TradingDataViewModel(ctd) { Date = startDate }; if (stockChartBindingData.Count < candlesCount) { stockChartBindingData.Add(viewModel); } else { stockChartBindingData[index] = viewModel; } startDate = UpdateDate(startDate, true); index++; } DateTime search = UpdateDate(startDate, false); while (true) { int dateIndex = dates.IndexOf(search); if (dateIndex != -1) { currentDate = dateIndex; break; } search = search.AddDays(-1); } }