public Indicator AnalyzeData(DataState state) { double[] closePrices = _analyseRepo.LoadClosePriceBySymbol(state.Symbol, true).ToArray(); double[] RsiValues = RSICalculator.CalculateRsi(RSICalculator.Period, closePrices); if (RsiValues.Length == 0) { return(null); } var cont = new ContinuousCalculator(RsiValues, r => r > 50.0); RSI value = new RSI(); value.Symbol = state.Symbol; value.Date = state.Last.Value; value.Avg = RsiValues.Average(); value.LastRSI = AlgorithmHelper.GetLast(RsiValues); value.PercentGT50 = RsiValues.Where(r => r > 50).Count() * 100 / RsiValues.Count(); value.TotalDays = RsiValues.Count(); value.MaxContGT50Days = cont.TrueMax; value.MaxContLT50Days = cont.FalseMax; value.AvgContGT50Days = cont.TrueAvg; value.AvgContLT50Days = cont.FalseAvg; value.LastContDays = cont.LastCont; return(value.ToIndicator()); }
public void CanGetFirstAGL() { AvgGainLossPair value = RSICalculator.GetFirstAGL(_period, _shortPrices); Assert.IsTrue(value.AvgGain.AlmostEqual(0.24)); Assert.IsTrue(value.AvgLoss.AlmostEqual(0.10)); }
public void CanGetAGL() { AvgGainLossPair value = RSICalculator.GetAGL(_period, 15, _shortPrices); Assert.IsTrue(value.AvgGain.AlmostEqual(0.22)); Assert.IsTrue(value.AvgLoss.AlmostEqual(0.11)); value = RSICalculator.GetAGL(_period, 32, _shortPrices); Assert.IsTrue(value.AvgGain.AlmostEqual(0.18)); Assert.IsTrue(value.AvgLoss.AlmostEqual(0.30)); }
public Indicator AnalyzeData(DataState state) { List <double> closePrices = _analyseRepo.LoadClosePriceBySymbol(state.Symbol, true).ToList(); RSIPredict value = new RSIPredict(); value.Symbol = state.Symbol; value.Date = state.Last.Value; value.PredictRsi30Price = RSICalculator.PredictPrice(RSICalculator.Period, 30, closePrices); value.PredictRsi50Price = RSICalculator.PredictPrice(RSICalculator.Period, 50, closePrices); value.PredictRsi70Price = RSICalculator.PredictPrice(RSICalculator.Period, 70, closePrices); return(value.ToIndicator()); }
public Indicator AnalyzeData(DataState state) { List <double> closePrices = _analyseRepo.LoadClosePriceBySymbol(state.Symbol, true).ToList(); RSIRangeData range = RSICalculator.GetRSIRange(RSICalculator.Period, closePrices); if (range == null) { return(null); } RSIRange value = new RSIRange(); value.Symbol = state.Symbol; value.Date = state.Last.Value; value.Min = range.Min; value.Max = range.Max; value.L5 = range.L5; value.H5 = range.H5; value.L10 = range.L10; value.H10 = range.H10; value.L15 = range.L15; value.H15 = range.H15; return(value.ToIndicator()); }
public void CanCalculateRSI() { RSICalculator.CalculateRsi(RSICalculator.Period, _shortPrices.ToArray()); }
public void CanGetRS() { double rs = RSICalculator.GetRS(37.77); Assert.IsTrue(rs.AlmostEqual(0.61)); }