Example #1
0
        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;
        }
Example #2
0
        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;
        }