public StockData Normalize(InputParams features, StockData minData, StockData maxData) { var normalizedData = new StockData { Date = Date }; if (features.open) { normalizedData.Open = NormalizeData(Open.Value, minData.Open.Value, maxData.Open.Value); } if (features.close) { normalizedData.Close = NormalizeData(Close.Value, minData.Close.Value, maxData.Close.Value); } if (features.high) { normalizedData.High = NormalizeData(High.Value, minData.High.Value, maxData.High.Value); } if (features.low) { normalizedData.Low = NormalizeData(Low.Value, minData.Low.Value, maxData.Low.Value); } return normalizedData; }
private bool NormalizeYahooStockFile(string filePath, string stockSymbol, int linesToSkipInStockFile, int wantedLines) { var allFileLines = File.ReadAllLines(filePath).Skip(linesToSkipInStockFile).ToList(); allFileLines = allFileLines.Take(Math.Min(wantedLines, allFileLines.Count)).ToList(); if (allFileLines.Count < wantedLines) { return false; } var fileFeatures = allFileLines.Select(line => { var stringFeatures = line.Split(','); var stockData = new StockData { Date = stringFeatures[0] }; if (_inputParams.open) { stockData.Open = double.Parse(stringFeatures[1]); } if (_inputParams.high) { stockData.High = double.Parse(stringFeatures[2]); } if (_inputParams.low) { stockData.Low = double.Parse(stringFeatures[3]); } if (_inputParams.close) { stockData.Close = double.Parse(stringFeatures[4]); } return stockData; }).ToList(); allStocksData.Add(stockSymbol,new Stock(stockSymbol,fileFeatures)); var minData = new StockData(); var maxData = new StockData(); if (_inputParams.open) { minData.Open = fileFeatures.Min(stockData => stockData.Open); maxData.Open = fileFeatures.Max(stockData => stockData.Open); } if (_inputParams.high) { minData.High = fileFeatures.Min(stockData => stockData.High); maxData.High = fileFeatures.Max(stockData => stockData.High); } if (_inputParams.low) { minData.Low = fileFeatures.Min(stockData => stockData.Low); maxData.Low = fileFeatures.Max(stockData => stockData.Low); } if (_inputParams.close) { minData.Close = fileFeatures.Min(stockData => stockData.Close); maxData.Close = fileFeatures.Max(stockData => stockData.Close); } var normalizedData = fileFeatures.Select(stockData => stockData.Normalize(_inputParams, minData, maxData)); var normalizedDataLines = normalizedData.Select(stockData => { var stringBuilder = new StringBuilder(); stringBuilder.AppendFormat("{0},", stockData.Date); if (_inputParams.open) { stringBuilder.AppendFormat("{0},", stockData.Open); } if (_inputParams.high) { stringBuilder.AppendFormat("{0},", stockData.High); } if (_inputParams.low) { stringBuilder.AppendFormat("{0},", stockData.Low); } if (_inputParams.close) { stringBuilder.AppendFormat("{0}", stockData.Close); } return stringBuilder.ToString().TrimEnd(','); }); File.WriteAllLines(filePath, normalizedDataLines); return true; }