Exemplo n.º 1
0
        public void GetBollingerBandsTest()
        {
            int lookbackPeriod     = 20;
            int standardDeviations = 2;

            IEnumerable <BollingerBandsResult> results = Indicator.GetBollingerBands(history, lookbackPeriod, standardDeviations);

            // assertions

            // proper quantities
            // should always be the same number of results as there is history
            Assert.AreEqual(502, results.Count());
            Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.Sma != null).Count());
            Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.UpperBand != null).Count());
            Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.LowerBand != null).Count());

            // sample value
            BollingerBandsResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault();

            Assert.AreEqual((decimal)251.8600, Math.Round((decimal)result.Sma, 4));
            Assert.AreEqual((decimal)273.7004, Math.Round((decimal)result.UpperBand, 4));
            Assert.AreEqual((decimal)230.0196, Math.Round((decimal)result.LowerBand, 4));
            Assert.AreEqual((decimal) - 0.602552, Math.Round((decimal)result.ZScore, 6));
            Assert.AreEqual((decimal)0.173433, Math.Round((decimal)result.Width, 6));
            Assert.AreEqual(false, result.IsDiverging);
        }
        public void GetBollingerBandsTest()
        {
            int lookbackPeriod     = 20;
            int standardDeviations = 2;

            IEnumerable <BollingerBandsResult> results = Indicator.GetBollingerBands(history, lookbackPeriod, standardDeviations);

            // assertions

            // proper quantities
            // should always be the same number of results as there is history
            Assert.AreEqual(502, results.Count());
            Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.Sma != null).Count());
            Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.UpperBand != null).Count());
            Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.LowerBand != null).Count());

            // sample value
            BollingerBandsResult r = results.Where(x => x.Index == 502).FirstOrDefault();

            Assert.AreEqual(251.8600m, Math.Round((decimal)r.Sma, 4));
            Assert.AreEqual(273.7004m, Math.Round((decimal)r.UpperBand, 4));
            Assert.AreEqual(230.0196m, Math.Round((decimal)r.LowerBand, 4));
            Assert.AreEqual(-0.602552m, Math.Round((decimal)r.ZScore, 6));
            Assert.AreEqual(0.173433m, Math.Round((decimal)r.Width, 6));
        }
    public void Removed()
    {
        List <BollingerBandsResult> results =
            quotes.GetBollingerBands(20, 2)
            .RemoveWarmupPeriods()
            .ToList();

        // assertions
        Assert.AreEqual(502 - 19, results.Count);

        BollingerBandsResult last = results.LastOrDefault();

        Assert.AreEqual(251.8600m, Math.Round((decimal)last.Sma, 4));
        Assert.AreEqual(273.7004m, Math.Round((decimal)last.UpperBand, 4));
        Assert.AreEqual(230.0196m, Math.Round((decimal)last.LowerBand, 4));
        Assert.AreEqual(0.349362, Math.Round((double)last.PercentB, 6));
        Assert.AreEqual(-0.602552, Math.Round((double)last.ZScore, 6));
        Assert.AreEqual(0.173433, Math.Round((double)last.Width, 6));
    }
        public void GetBollingerBands()
        {
            int lookbackPeriod     = 20;
            int standardDeviations = 2;

            List <BollingerBandsResult> results =
                Indicator.GetBollingerBands(history, lookbackPeriod, standardDeviations)
                .ToList();

            // assertions

            // proper quantities
            // should always be the same number of results as there is history
            Assert.AreEqual(502, results.Count);
            Assert.AreEqual(483, results.Where(x => x.Sma != null).Count());
            Assert.AreEqual(483, results.Where(x => x.UpperBand != null).Count());
            Assert.AreEqual(483, results.Where(x => x.LowerBand != null).Count());
            Assert.AreEqual(483, results.Where(x => x.PercentB != null).Count());
            Assert.AreEqual(483, results.Where(x => x.ZScore != null).Count());
            Assert.AreEqual(483, results.Where(x => x.Width != null).Count());


            // sample values
            BollingerBandsResult r1 = results[501];

            Assert.AreEqual(251.8600m, Math.Round((decimal)r1.Sma, 4));
            Assert.AreEqual(273.7004m, Math.Round((decimal)r1.UpperBand, 4));
            Assert.AreEqual(230.0196m, Math.Round((decimal)r1.LowerBand, 4));
            Assert.AreEqual(0.349362m, Math.Round((decimal)r1.PercentB, 6));
            Assert.AreEqual(-0.602552m, Math.Round((decimal)r1.ZScore, 6));
            Assert.AreEqual(0.173433m, Math.Round((decimal)r1.Width, 6));

            BollingerBandsResult r2 = results[249];

            Assert.AreEqual(255.5500m, Math.Round((decimal)r2.Sma, 4));
            Assert.AreEqual(259.5642m, Math.Round((decimal)r2.UpperBand, 4));
            Assert.AreEqual(251.5358m, Math.Round((decimal)r2.LowerBand, 4));
            Assert.AreEqual(0.803923m, Math.Round((decimal)r2.PercentB, 6));
            Assert.AreEqual(1.215692m, Math.Round((decimal)r2.ZScore, 6));
            Assert.AreEqual(0.031416m, Math.Round((decimal)r2.Width, 6));
        }
    public void Standard()
    {
        List <BollingerBandsResult> results =
            quotes.GetBollingerBands(20, 2)
            .ToList();

        // assertions

        // proper quantities
        // should always be the same number of results as there is quotes
        Assert.AreEqual(502, results.Count);
        Assert.AreEqual(483, results.Where(x => x.Sma != null).Count());
        Assert.AreEqual(483, results.Where(x => x.UpperBand != null).Count());
        Assert.AreEqual(483, results.Where(x => x.LowerBand != null).Count());
        Assert.AreEqual(483, results.Where(x => x.PercentB != null).Count());
        Assert.AreEqual(483, results.Where(x => x.ZScore != null).Count());
        Assert.AreEqual(483, results.Where(x => x.Width != null).Count());

        // sample values
        BollingerBandsResult r1 = results[249];

        Assert.AreEqual(255.5500m, Math.Round((decimal)r1.Sma, 4));
        Assert.AreEqual(259.5642m, Math.Round((decimal)r1.UpperBand, 4));
        Assert.AreEqual(251.5358m, Math.Round((decimal)r1.LowerBand, 4));
        Assert.AreEqual(0.803923, Math.Round((double)r1.PercentB, 6));
        Assert.AreEqual(1.215692, Math.Round((double)r1.ZScore, 6));
        Assert.AreEqual(0.031416, Math.Round((double)r1.Width, 6));

        BollingerBandsResult r2 = results[501];

        Assert.AreEqual(251.8600m, Math.Round((decimal)r2.Sma, 4));
        Assert.AreEqual(273.7004m, Math.Round((decimal)r2.UpperBand, 4));
        Assert.AreEqual(230.0196m, Math.Round((decimal)r2.LowerBand, 4));
        Assert.AreEqual(0.349362, Math.Round((double)r2.PercentB, 6));
        Assert.AreEqual(-0.602552, Math.Round((double)r2.ZScore, 6));
        Assert.AreEqual(0.173433, Math.Round((double)r2.Width, 6));
    }
Exemplo n.º 6
0
                }                                                   // Stochastic Indicator

                public Metric()
                {
                    BB   = new BollingerBandsResult();
                    MACD = new MacdResult();
                }