public void ShouldConvertRetrievedDataToUppercase() { // given var storageBrokerMock = new Mock <IStorageBroker>(); var returnedDataFiller = new Filler <string>(); List <string> returnedData = returnedDataFiller.Create(10).ToList(); List <string> expectedResult = returnedData.Select(item => item.ToUpper()) .ToList(); storageBrokerMock.Setup(broker => broker.GetAllData()) .Returns(returnedData); // when var dataProcessorService = new DataProcessorService(storageBrokerMock.Object); List <string> actualResult = dataProcessorService.ProcessData(); // then storageBrokerMock.Verify(broker => broker.GetAllData(), Times.Once, "Storage broker should be called at least once for data processing."); actualResult.Should().BeEquivalentTo( expectedResult, because: "Returned lists should be both uppercase."); }
public void ShouldReturnUpperCaseData() { // given var storageBrokerMock = new Mock <IStorageBroker>(); var storageDataFiller = new Filler <string>(); List <string> storageData = storageDataFiller.Create(10).ToList(); storageBrokerMock.Setup(broker => broker.GetAllData()) .Returns(storageData); List <string> expectedResult = storageData.Select(data => data.ToUpper()).ToList(); // when var dataProcessorService = new DataProcessorService(storageBrokerMock.Object); List <string> actualResult = dataProcessorService.ProcessData(); // then // Verify broker was called Only once during test storageBrokerMock.Verify(broker => broker.GetAllData(), Times.Once, "Storage broker should be called at least once for data processing"); actualResult.Should().BeEquivalentTo( expectedResult, because: "Returned items in list should be uppercase."); }
private List <AnnDataPoint> Normalize(IList <AnnDataPoint> data) { var result = new List <AnnDataPoint>(); var numberOfInputs = data.First().Inputs.Length; var numberOfOutputs = data.First().Outputs.Length; foreach (var annPoint in data) { result.Add(new AnnDataPoint { Date = annPoint.Date, Inputs = Enumerable.Range(0, numberOfInputs).Select(i => DataProcessorService.Normalize(annPoint.Inputs[i], TrainingMeansInput[i], TrainingStdDevsInput[i])).ToArray(), Outputs = Enumerable.Range(0, numberOfOutputs).Select(i => DataProcessorService.Normalize(annPoint.Outputs[i], TrainingMeansOutput[i], TrainingStdDevsOutput[i])).ToArray() }); } return(result); }
protected override IList <AnnDataPoint> GetRawAnnDataPoints(Stock stock, HistoricalData historicalData) { var result = new List <AnnDataPoint>(); lock (Locker) { if (!data.ContainsKey(historicalData)) { data.Add(historicalData, Data.GetData(stock, DownloaderService, historicalData)); } } var movingAverageFast = DataProcessorService.CalculateMovingAverage(data[historicalData].Quotes, Settings.MovingAverageCloseFast); var cci = DataProcessorService.CalculateCci(data[historicalData].Quotes, Settings.CCI); var rsi = DataProcessorService.CalculateRsi(data[historicalData].Quotes, Settings.RSI); var macD = DataProcessorService.CalculateMacd(data[historicalData].Quotes, Settings.MacdFast, Settings.MacdSlow, Settings.MacdSignal); var atr = DataProcessorService.CalculateAtr(data[historicalData].Quotes, Settings.Atr); var ema = DataProcessorService.CalculateEMA(data[historicalData].Quotes, Settings.Ema); var obv = DataProcessorService.CalculateObv(data[historicalData].Quotes, Settings.Obv); var crsi = DataProcessorService.CalculateConnorsRsi(data[historicalData].Quotes, Settings.ConnorsRsi); var pmo = DataProcessorService.CalculatePmo(data[historicalData].Quotes, Settings.Pmo); var roc = DataProcessorService.CalculateRoc(data[historicalData].Quotes, Settings.Roc); int fwdDays = Settings.FwdDays; int yesterdayStep = 1; for (int i = 0; i < historicalData.Quotes.Values.Count; i++) { var fwdDate = i + fwdDays >= historicalData.Quotes.Values.Count ? historicalData.Quotes.Values.Count - 1 : i + fwdDays; var yesterdayIndex = i - yesterdayStep >= 0 ? i - yesterdayStep : 0; var yesterday = historicalData.Quotes.Values[yesterdayIndex]; var today = historicalData.Quotes.Values[i]; var future = historicalData.Quotes.Values[fwdDate]; var percentageChange = (future.Close - today.Close) / today.Close * 100d; var annDataPoint = new AnnDataPoint { Date = today.Date, Inputs = new[] { today.Close, today.High, today.Volume, Compare(today.Close, yesterday.Close), Compare(today.High, yesterday.High), Compare(today.Volume, yesterday.Volume), (double)movingAverageFast.Single(x => x.Date.Date == today.Date.Date).Sma.GetValueOrDefault(), (double)ema.Single(x => x.Date.Date == today.Date.Date).Ema.GetValueOrDefault(), (double)cci.Single(x => x.Date.Date == today.Date.Date).Cci.GetValueOrDefault(), (double)rsi.Single(x => x.Date.Date == today.Date.Date).Rsi.GetValueOrDefault(), (double)atr.Single(x => x.Date.Date == today.Date.Date).Atrp.GetValueOrDefault(), (double)macD.Single(x => x.Date.Date == today.Date.Date).Macd.GetValueOrDefault(), (double)obv.Single(x => x.Date.Date == today.Date.Date).Obv, (double)crsi.Single(x => x.Date.Date == today.Date.Date).ConnorsRsi.GetValueOrDefault(), (double)pmo.Single(x => x.Date.Date == today.Date.Date).Pmo.GetValueOrDefault(), (double)roc.Single(x => x.Date.Date == today.Date.Date).Roc.GetValueOrDefault() }, Outputs = new[] { percentageChange > Settings.PercentageChangeHigh ? 1d : percentageChange < Settings.PercentageChangeLow ? -1d : 0d } }; result.Add(annDataPoint); } return(result); }