SymbolData ParseData(string symbolStringData) { SymbolData symbolData = new SymbolData(); if (symbolData != null) { dynamic json = JsonConvert.DeserializeObject(symbolStringData); int idx = 0; if (json != null && json.chart != null && json.chart.result != null && json.chart.result[0] != null && json.chart.result[0].indicators != null && json.chart.result[0].indicators.quote[0] != null && json.chart.result[0].indicators.quote[0].high != null) { foreach (var item in json.chart.result[0].indicators.quote[0].high) { symbolData.allVolumeData.Add((double?)json.chart.result[0].indicators.quote[0].volume[idx]); symbolData.allPriceData.Add((double?)json.chart.result[0].indicators.quote[0].high[idx]); ++idx; } } } return(symbolData); }
SymbolData ConsolidateData(SymbolData symbolData, int Interval) { symbolData.allVolumeData.RemoveAll(x => x == null); symbolData.allPriceData.RemoveAll(x => x == null); symbolData.Volume = symbolData.allVolumeData.Sum(); double?temp = 0; int idx = 0; foreach (var item in symbolData.allPriceData) { if (idx == 0) { temp = item; symbolData.PriceData.Add(temp); temp = 0; } else if (idx % Interval == 0) { symbolData.PriceData.Add(temp / (Interval - 1)); temp = 0; } else { temp += item; } ++idx; } if (temp != 0) { symbolData.PriceData.Add(temp / ((symbolData.allPriceData.Count % Interval != 0 ? symbolData.allPriceData.Count % Interval : Interval) - 1)); temp = 0; } return(symbolData); }