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)); }
} // Stochastic Indicator public Metric() { BB = new BollingerBandsResult(); MACD = new MacdResult(); }