コード例 #1
0
        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());
        }
コード例 #2
0
        public void CanGetFirstAGL()
        {
            AvgGainLossPair value =
                RSICalculator.GetFirstAGL(_period, _shortPrices);

            Assert.IsTrue(value.AvgGain.AlmostEqual(0.24));
            Assert.IsTrue(value.AvgLoss.AlmostEqual(0.10));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        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());
        }
コード例 #6
0
 public void CanCalculateRSI()
 {
     RSICalculator.CalculateRsi(RSICalculator.Period, _shortPrices.ToArray());
 }
コード例 #7
0
        public void CanGetRS()
        {
            double rs = RSICalculator.GetRS(37.77);

            Assert.IsTrue(rs.AlmostEqual(0.61));
        }