From ddd063cce34d492dc895d4861bbd6f171b668a71 Mon Sep 17 00:00:00 2001 From: Dave Skender <8432125+DaveSkender@users.noreply.github.com> Date: Sun, 5 Jul 2020 21:45:59 -0400 Subject: [PATCH] chores: cleanup (#50) * fix typos * make test file names consistent * use consistent aliases in tests --- Indicators/HeikinAshi/README.md | 6 +++--- Indicators/Obv/Obv.cs | 2 +- Indicators/Obv/README.md | 8 +++++--- Indicators/ParabolicSar/README.md | 2 +- Indicators/{Ulcer => UlcerIndex}/README.md | 0 Indicators/{Ulcer => UlcerIndex}/Ulcer.Models.cs | 0 Indicators/{Ulcer => UlcerIndex}/Ulcer.cs | 0 IndicatorsTests/Test.Aroon.cs | 8 ++++---- .../{Test.Adx.cs => Test.AvgDirectional.cs} | 10 +++++----- .../{Test.Atr.cs => Test.AvgTrueRange.cs} | 10 +++++----- IndicatorsTests/Test.Beta.cs | 10 ++++------ IndicatorsTests/Test.BollingerBands.cs | 14 +++++++------- IndicatorsTests/Test.Cci.cs | 4 ++-- IndicatorsTests/Test.ChaikinOscillator.cs | 1 + IndicatorsTests/Test.Correlation.cs | 5 ++--- IndicatorsTests/Test.Ema.cs | 4 ++-- IndicatorsTests/Test.HeikinAshi.cs | 14 +++++++------- IndicatorsTests/Test.Macd.cs | 12 ++++++------ IndicatorsTests/Test.Obv.cs | 5 ++--- IndicatorsTests/Test.ParabolicSar.cs | 8 ++++---- IndicatorsTests/Test.Rsi.cs | 7 +++---- IndicatorsTests/Test.Sma.cs | 10 +++++----- .../{Test.StdDev.cs => Test.StandardDev.cs} | 8 ++++---- .../{Test.Stoch.cs => Test.Stochastic.cs} | 10 +++++----- .../{Test.StochRsi.cs => Test.StochasticRsi.cs} | 8 ++++---- IndicatorsTests/Test.UlcerIndex.cs | 4 ++-- README.md | 2 +- 27 files changed, 85 insertions(+), 87 deletions(-) rename Indicators/{Ulcer => UlcerIndex}/README.md (100%) rename Indicators/{Ulcer => UlcerIndex}/Ulcer.Models.cs (100%) rename Indicators/{Ulcer => UlcerIndex}/Ulcer.cs (100%) rename IndicatorsTests/{Test.Adx.cs => Test.AvgDirectional.cs} (87%) rename IndicatorsTests/{Test.Atr.cs => Test.AvgTrueRange.cs} (84%) rename IndicatorsTests/{Test.StdDev.cs => Test.StandardDev.cs} (87%) rename IndicatorsTests/{Test.Stoch.cs => Test.Stochastic.cs} (90%) rename IndicatorsTests/{Test.StochRsi.cs => Test.StochasticRsi.cs} (86%) diff --git a/Indicators/HeikinAshi/README.md b/Indicators/HeikinAshi/README.md index e9f9a7847..8701b45a4 100644 --- a/Indicators/HeikinAshi/README.md +++ b/Indicators/HeikinAshi/README.md @@ -21,7 +21,7 @@ IEnumerable The first period will have `null` values since there's not enough data to calculate. We always return the same number of elements as there are in the historical quotes. -### HeikinResult +### HeikinAshiResult | name | type | notes | -- |-- |-- @@ -46,9 +46,9 @@ IEnumerable results = Indicator.GetHeikinAshi(history); // use results as needed DateTime evalDate = DateTime.Parse("12/31/2018"); HeikinAshiResult result = results.Where(x=>x.Date==evalDate).FirstOrDefault(); -Console.WriteLine("HeikinAshi open price on {0} was ${1}", result.Date, result.Open); +Console.WriteLine("Heikin-Ashi open price on {0} was ${1}", result.Date, result.Open); ``` ```bash -HeikinAshi open price on 12/31/2018 was $241.3 +Heikin-Ashi open price on 12/31/2018 was $241.3 ``` diff --git a/Indicators/Obv/Obv.cs b/Indicators/Obv/Obv.cs index 135f4a9c8..40dd4b40a 100644 --- a/Indicators/Obv/Obv.cs +++ b/Indicators/Obv/Obv.cs @@ -59,7 +59,7 @@ private static void ValidateObv(IEnumerable history) int minHistory = 2; if (qtyHistory < minHistory) { - throw new BadHistoryException("Insufficient history provided for Heikin-Ashi. " + + throw new BadHistoryException("Insufficient history provided for On-balance Volume. " + string.Format("You provided {0} periods of history when at least {1} is required.", qtyHistory, minHistory)); } diff --git a/Indicators/Obv/README.md b/Indicators/Obv/README.md index f55e5437d..f898340ca 100644 --- a/Indicators/Obv/README.md +++ b/Indicators/Obv/README.md @@ -27,13 +27,15 @@ The first period OBV will have `0` value since there's not enough data to calcul | -- |-- |-- | `Index` | int | Sequence of dates | `Date` | DateTime | Date -| `Obv` | long | On-balance Volume. Warning: absolute values in OBV are somewhat meaningless, so use with caution. +| `Obv` | long | On-balance Volume + +**Warning**: absolute values in OBV are somewhat meaningless, so use with caution. ## Example ```csharp // fetch historical quotes from your favorite feed, in Quote format -IEnumerable history = GetHistoryFromFeed("MSFT"); +IEnumerable history = GetHistoryFromFeed("SPY"); // calculate IEnumerable results = Indicator.GetObv(history); @@ -41,7 +43,7 @@ IEnumerable results = Indicator.GetObv(history); // use results as needed DateTime evalDate = DateTime.Parse("12/31/2018"); ObvResult result = results.Where(x=>x.Date==evalDate).FirstOrDefault(); -Console.WriteLine("OBV on {0} was {1}", result.Date, result.Open); +Console.WriteLine("OBV on {0} was {1}", result.Date, result.Obv); ``` ```bash diff --git a/Indicators/ParabolicSar/README.md b/Indicators/ParabolicSar/README.md index 2db23af14..7fb10775e 100644 --- a/Indicators/ParabolicSar/README.md +++ b/Indicators/ParabolicSar/README.md @@ -1,6 +1,6 @@ # Parabolic SAR -Parabolic SAR is a price-time based indicator. +Parabolic SAR (stop and reverse) is a price-time based indicator. [More info ...](https://school.stockcharts.com/doku.php?id=technical_indicators:parabolic_sar) ```csharp diff --git a/Indicators/Ulcer/README.md b/Indicators/UlcerIndex/README.md similarity index 100% rename from Indicators/Ulcer/README.md rename to Indicators/UlcerIndex/README.md diff --git a/Indicators/Ulcer/Ulcer.Models.cs b/Indicators/UlcerIndex/Ulcer.Models.cs similarity index 100% rename from Indicators/Ulcer/Ulcer.Models.cs rename to Indicators/UlcerIndex/Ulcer.Models.cs diff --git a/Indicators/Ulcer/Ulcer.cs b/Indicators/UlcerIndex/Ulcer.cs similarity index 100% rename from Indicators/Ulcer/Ulcer.cs rename to Indicators/UlcerIndex/Ulcer.cs diff --git a/IndicatorsTests/Test.Aroon.cs b/IndicatorsTests/Test.Aroon.cs index b01d29060..4c1d48347 100644 --- a/IndicatorsTests/Test.Aroon.cs +++ b/IndicatorsTests/Test.Aroon.cs @@ -24,10 +24,10 @@ public void GetAroonTest() Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.AroonUp != null).Count()); // sample value - AroonResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)28.0000, Math.Round((decimal)result.AroonUp, 4)); - Assert.AreEqual((decimal)88.0000, Math.Round((decimal)result.AroonDown, 4)); - Assert.AreEqual((decimal)-60.0000, Math.Round((decimal)result.Oscillator, 4)); + AroonResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)28.0000, Math.Round((decimal)r.AroonUp, 4)); + Assert.AreEqual((decimal)88.0000, Math.Round((decimal)r.AroonDown, 4)); + Assert.AreEqual((decimal)-60.0000, Math.Round((decimal)r.Oscillator, 4)); } diff --git a/IndicatorsTests/Test.Adx.cs b/IndicatorsTests/Test.AvgDirectional.cs similarity index 87% rename from IndicatorsTests/Test.Adx.cs rename to IndicatorsTests/Test.AvgDirectional.cs index 799854a2c..7d56b16b8 100644 --- a/IndicatorsTests/Test.Adx.cs +++ b/IndicatorsTests/Test.AvgDirectional.cs @@ -7,7 +7,7 @@ namespace StockIndicators.Tests { [TestClass] - public class AdxTests : TestBase + public class AvgDirectionalTests : TestBase { [TestMethod()] @@ -24,10 +24,10 @@ public void GetAdxTest() Assert.AreEqual(502 - 2 * lookbackPeriod + 1, results.Where(x => x.Adx != null).Count()); // sample value - AdxResult atr = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)17.7565, Math.Round((decimal)atr.Pdi, 4)); - Assert.AreEqual((decimal)31.1510, Math.Round((decimal)atr.Mdi, 4)); - Assert.AreEqual((decimal)34.2987, Math.Round((decimal)atr.Adx, 4)); + AdxResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)17.7565, Math.Round((decimal)r.Pdi, 4)); + Assert.AreEqual((decimal)31.1510, Math.Round((decimal)r.Mdi, 4)); + Assert.AreEqual((decimal)34.2987, Math.Round((decimal)r.Adx, 4)); } diff --git a/IndicatorsTests/Test.Atr.cs b/IndicatorsTests/Test.AvgTrueRange.cs similarity index 84% rename from IndicatorsTests/Test.Atr.cs rename to IndicatorsTests/Test.AvgTrueRange.cs index c0e9dfab7..023f67d16 100644 --- a/IndicatorsTests/Test.Atr.cs +++ b/IndicatorsTests/Test.AvgTrueRange.cs @@ -7,7 +7,7 @@ namespace StockIndicators.Tests { [TestClass] - public class AtrTests : TestBase + public class AvgTrueRangeTests : TestBase { [TestMethod()] @@ -24,10 +24,10 @@ public void GetAtrTest() Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.Atr != null).Count()); // sample value - AtrResult atr = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)2.67, Math.Round((decimal)atr.Tr, 4)); - Assert.AreEqual((decimal)6.1497, Math.Round((decimal)atr.Atr, 4)); - Assert.AreEqual((decimal)2.5072, Math.Round((decimal)atr.Atrp, 4)); + AtrResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)2.67, Math.Round((decimal)r.Tr, 4)); + Assert.AreEqual((decimal)6.1497, Math.Round((decimal)r.Atr, 4)); + Assert.AreEqual((decimal)2.5072, Math.Round((decimal)r.Atrp, 4)); } diff --git a/IndicatorsTests/Test.Beta.cs b/IndicatorsTests/Test.Beta.cs index 831c2eec8..17676e975 100644 --- a/IndicatorsTests/Test.Beta.cs +++ b/IndicatorsTests/Test.Beta.cs @@ -14,7 +14,6 @@ public class BetaTests : TestBase public void GetBetaTest() { int lookbackPeriod = 20; - IEnumerable results = Indicator.GetBeta(history, historyOther, lookbackPeriod); // assertions @@ -25,8 +24,8 @@ public void GetBetaTest() Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.Beta != null).Count()); // sample value - BetaResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)1.6759, Math.Round((decimal)result.Beta, 4)); + BetaResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)1.6759, Math.Round((decimal)r.Beta, 4)); } @@ -35,7 +34,6 @@ public void GetBetaSameTest() { // Beta should be 1 if evaluating against self int lookbackPeriod = 20; - IEnumerable results = Indicator.GetBeta(history, history, lookbackPeriod); // assertions @@ -46,8 +44,8 @@ public void GetBetaSameTest() Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.Beta != null).Count()); // sample value - BetaResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual(1, Math.Round((decimal)result.Beta, 4)); + BetaResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual(1, Math.Round((decimal)r.Beta, 4)); } diff --git a/IndicatorsTests/Test.BollingerBands.cs b/IndicatorsTests/Test.BollingerBands.cs index 495968bfb..eef488e18 100644 --- a/IndicatorsTests/Test.BollingerBands.cs +++ b/IndicatorsTests/Test.BollingerBands.cs @@ -28,14 +28,14 @@ public void GetBollingerBandsTest() 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(); + BollingerBandsResult r = 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); + Assert.AreEqual((decimal)251.8600, Math.Round((decimal)r.Sma, 4)); + Assert.AreEqual((decimal)273.7004, Math.Round((decimal)r.UpperBand, 4)); + Assert.AreEqual((decimal)230.0196, Math.Round((decimal)r.LowerBand, 4)); + Assert.AreEqual((decimal)-0.602552, Math.Round((decimal)r.ZScore, 6)); + Assert.AreEqual((decimal)0.173433, Math.Round((decimal)r.Width, 6)); + Assert.AreEqual(false, r.IsDiverging); } diff --git a/IndicatorsTests/Test.Cci.cs b/IndicatorsTests/Test.Cci.cs index b35811ff9..64fa3d6bf 100644 --- a/IndicatorsTests/Test.Cci.cs +++ b/IndicatorsTests/Test.Cci.cs @@ -25,8 +25,8 @@ public void GetCciTest() Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.Cci != null).Count()); // sample value - CciResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)-52.9946, Math.Round((decimal)result.Cci, 4)); + CciResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)-52.9946, Math.Round((decimal)r.Cci, 4)); } diff --git a/IndicatorsTests/Test.ChaikinOscillator.cs b/IndicatorsTests/Test.ChaikinOscillator.cs index 201357b0f..e969ef31d 100644 --- a/IndicatorsTests/Test.ChaikinOscillator.cs +++ b/IndicatorsTests/Test.ChaikinOscillator.cs @@ -26,6 +26,7 @@ public void GetChaikinOscTest() // sample value ChaikinOscResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)3439986548.42, Math.Round(r.Adl, 2)); Assert.AreEqual((decimal)-19135200.72, Math.Round((decimal)r.Oscillator, 2)); } diff --git a/IndicatorsTests/Test.Correlation.cs b/IndicatorsTests/Test.Correlation.cs index 45efc3b74..2c9b476ab 100644 --- a/IndicatorsTests/Test.Correlation.cs +++ b/IndicatorsTests/Test.Correlation.cs @@ -14,7 +14,6 @@ public class CorrelationTests : TestBase public void GetCorrelationTest() { int lookbackPeriod = 20; - IEnumerable results = Indicator.GetCorrelation(history, historyOther, lookbackPeriod); // assertions @@ -25,8 +24,8 @@ public void GetCorrelationTest() Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.Correlation != null).Count()); // sample value - CorrResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)0.8460, Math.Round((decimal)result.Correlation, 4)); + CorrResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)0.8460, Math.Round((decimal)r.Correlation, 4)); } diff --git a/IndicatorsTests/Test.Ema.cs b/IndicatorsTests/Test.Ema.cs index 0ac179798..ba9135937 100644 --- a/IndicatorsTests/Test.Ema.cs +++ b/IndicatorsTests/Test.Ema.cs @@ -24,8 +24,8 @@ public void GetEmaTest() Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.Ema != null).Count()); // sample value - EmaResult ema = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)249.3519, Math.Round((decimal)ema.Ema, 4)); + EmaResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)249.3519, Math.Round((decimal)r.Ema, 4)); } diff --git a/IndicatorsTests/Test.HeikinAshi.cs b/IndicatorsTests/Test.HeikinAshi.cs index d6d39ed6a..7e403f90a 100644 --- a/IndicatorsTests/Test.HeikinAshi.cs +++ b/IndicatorsTests/Test.HeikinAshi.cs @@ -22,13 +22,13 @@ public void GetHeikinAshiTest() Assert.AreEqual(502, results.Count()); // sample value - HeikinAshiResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)241.3018, Math.Round(result.Open, 4)); - Assert.AreEqual((decimal)245.54, Math.Round(result.High, 4)); - Assert.AreEqual((decimal)241.3018, Math.Round(result.Low, 4)); - Assert.AreEqual((decimal)244.6525, Math.Round(result.Close, 4)); - Assert.AreEqual(true, result.IsBullish); - Assert.AreEqual(0, Math.Round(result.Weakness, 4)); + HeikinAshiResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)241.3018, Math.Round(r.Open, 4)); + Assert.AreEqual((decimal)245.54, Math.Round(r.High, 4)); + Assert.AreEqual((decimal)241.3018, Math.Round(r.Low, 4)); + Assert.AreEqual((decimal)244.6525, Math.Round(r.Close, 4)); + Assert.AreEqual(true, r.IsBullish); + Assert.AreEqual(0, Math.Round(r.Weakness, 4)); } diff --git a/IndicatorsTests/Test.Macd.cs b/IndicatorsTests/Test.Macd.cs index c544013a2..39ddba16b 100644 --- a/IndicatorsTests/Test.Macd.cs +++ b/IndicatorsTests/Test.Macd.cs @@ -31,12 +31,12 @@ public void GetMacdTest() Assert.AreEqual(502 - slowPeriod - signalPeriod, results.Where(x => x.IsDiverging != null).Count()); // sample value - MacdResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)-6.2198, Math.Round((decimal)result.Macd, 4)); - Assert.AreEqual((decimal)-5.8569, Math.Round((decimal)result.Signal, 4)); - Assert.AreEqual((decimal)-0.3629, Math.Round((decimal)result.Histogram, 4)); - Assert.AreEqual(false, result.IsBullish); - Assert.AreEqual(false, result.IsDiverging); + MacdResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)-6.2198, Math.Round((decimal)r.Macd, 4)); + Assert.AreEqual((decimal)-5.8569, Math.Round((decimal)r.Signal, 4)); + Assert.AreEqual((decimal)-0.3629, Math.Round((decimal)r.Histogram, 4)); + Assert.AreEqual(false, r.IsBullish); + Assert.AreEqual(false, r.IsDiverging); } diff --git a/IndicatorsTests/Test.Obv.cs b/IndicatorsTests/Test.Obv.cs index 3d66d6e3d..b0e00362a 100644 --- a/IndicatorsTests/Test.Obv.cs +++ b/IndicatorsTests/Test.Obv.cs @@ -22,9 +22,8 @@ public void GetObvTest() Assert.AreEqual(502, results.Count()); // sample value - ObvResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - - Assert.AreEqual(539843504, result.Obv); + ObvResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual(539843504, r.Obv); } diff --git a/IndicatorsTests/Test.ParabolicSar.cs b/IndicatorsTests/Test.ParabolicSar.cs index 0fc956f30..527c65a7a 100644 --- a/IndicatorsTests/Test.ParabolicSar.cs +++ b/IndicatorsTests/Test.ParabolicSar.cs @@ -26,10 +26,10 @@ public void GetParabolicSarTest() Assert.AreEqual(501, results.Where(x => x.Sar != null).Count()); // sample value - ParabolicSarResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)229.7662, Math.Round((decimal)result.Sar, 4)); - Assert.AreEqual(true, result.IsRising); - Assert.AreEqual(false, result.IsReversal); + ParabolicSarResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)229.7662, Math.Round((decimal)r.Sar, 4)); + Assert.AreEqual(true, r.IsRising); + Assert.AreEqual(false, r.IsReversal); } diff --git a/IndicatorsTests/Test.Rsi.cs b/IndicatorsTests/Test.Rsi.cs index d1625b07b..5062b6c16 100644 --- a/IndicatorsTests/Test.Rsi.cs +++ b/IndicatorsTests/Test.Rsi.cs @@ -14,7 +14,6 @@ public class RsiTests : TestBase public void GetRsiTest() { int lookbackPeriod = 14; - IEnumerable results = Indicator.GetRsi(history, lookbackPeriod); // assertions @@ -26,9 +25,9 @@ public void GetRsiTest() Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.IsIncreasing != null).Count()); // sample value - RsiResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)42.0773, Math.Round((decimal)result.Rsi, 4)); - Assert.AreEqual(true, result.IsIncreasing); + RsiResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)42.0773, Math.Round((decimal)r.Rsi, 4)); + Assert.AreEqual(true, r.IsIncreasing); } diff --git a/IndicatorsTests/Test.Sma.cs b/IndicatorsTests/Test.Sma.cs index 4720a978e..0dfeb5981 100644 --- a/IndicatorsTests/Test.Sma.cs +++ b/IndicatorsTests/Test.Sma.cs @@ -24,11 +24,11 @@ public void GetSmaTest() Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.Sma != null).Count()); // sample value - SmaResult sma = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)251.86, sma.Sma); - Assert.AreEqual((decimal)9.45, sma.Mad); - Assert.AreEqual((double)119.2510, Math.Round((double)sma.Mse, 4)); - Assert.AreEqual((double)0.037637, Math.Round((double)sma.Mape, 6)); + SmaResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)251.86, r.Sma); + Assert.AreEqual((decimal)9.45, r.Mad); + Assert.AreEqual((double)119.2510, Math.Round((double)r.Mse, 4)); + Assert.AreEqual((double)0.037637, Math.Round((double)r.Mape, 6)); } diff --git a/IndicatorsTests/Test.StdDev.cs b/IndicatorsTests/Test.StandardDev.cs similarity index 87% rename from IndicatorsTests/Test.StdDev.cs rename to IndicatorsTests/Test.StandardDev.cs index d19bc4463..348636cac 100644 --- a/IndicatorsTests/Test.StdDev.cs +++ b/IndicatorsTests/Test.StandardDev.cs @@ -7,7 +7,7 @@ namespace StockIndicators.Tests { [TestClass] - public class StdDevTests : TestBase + public class StandardDevTests : TestBase { [TestMethod()] @@ -24,10 +24,10 @@ public void GetStdDevTest() Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.StdDev != null).Count()); // sample value - StdDevResult sd = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + StdDevResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)5.4738, Math.Round((decimal)sd.StdDev, 4)); - Assert.AreEqual((decimal)0.524312, Math.Round((decimal)sd.ZScore, 6)); + Assert.AreEqual((decimal)5.4738, Math.Round((decimal)r.StdDev, 4)); + Assert.AreEqual((decimal)0.524312, Math.Round((decimal)r.ZScore, 6)); } diff --git a/IndicatorsTests/Test.Stoch.cs b/IndicatorsTests/Test.Stochastic.cs similarity index 90% rename from IndicatorsTests/Test.Stoch.cs rename to IndicatorsTests/Test.Stochastic.cs index 8411d3810..9fbeb298e 100644 --- a/IndicatorsTests/Test.Stoch.cs +++ b/IndicatorsTests/Test.Stochastic.cs @@ -7,7 +7,7 @@ namespace StockIndicators.Tests { [TestClass] - public class StochTests : TestBase + public class StochasticTests : TestBase { [TestMethod()] @@ -28,10 +28,10 @@ public void GetStochTest() Assert.AreEqual(502 - lookbackPeriod + 1 - smoothPeriod - signalPeriod, results.Where(x => x.Signal != null).Count()); // sample value - StochResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)43.1354, Math.Round((decimal)result.Oscillator, 4)); - Assert.AreEqual((decimal)35.5674, Math.Round((decimal)result.Signal, 4)); - Assert.AreEqual(true, result.IsIncreasing); + StochResult r1 = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)43.1354, Math.Round((decimal)r1.Oscillator, 4)); + Assert.AreEqual((decimal)35.5674, Math.Round((decimal)r1.Signal, 4)); + Assert.AreEqual(true, r1.IsIncreasing); // no signal period IEnumerable results2 = Indicator.GetStoch(history, 5, 1); diff --git a/IndicatorsTests/Test.StochRsi.cs b/IndicatorsTests/Test.StochasticRsi.cs similarity index 86% rename from IndicatorsTests/Test.StochRsi.cs rename to IndicatorsTests/Test.StochasticRsi.cs index 8f16590a6..6cd8f5fe5 100644 --- a/IndicatorsTests/Test.StochRsi.cs +++ b/IndicatorsTests/Test.StochasticRsi.cs @@ -7,7 +7,7 @@ namespace StockIndicators.Tests { [TestClass] - public class StochRsiTests : TestBase + public class StochasticRsiTests : TestBase { [TestMethod()] @@ -28,9 +28,9 @@ public void GetStochRsiTest() Assert.AreEqual(502 - 2 * lookbackPeriod + 1 - 4, results.Where(x => x.IsIncreasing != null).Count()); // sample value - StochRsiResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)0.9752, Math.Round((decimal)result.StochRsi, 4)); - Assert.AreEqual(true, result.IsIncreasing); + StochRsiResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)0.9752, Math.Round((decimal)r.StochRsi, 4)); + Assert.AreEqual(true, r.IsIncreasing); } diff --git a/IndicatorsTests/Test.UlcerIndex.cs b/IndicatorsTests/Test.UlcerIndex.cs index e183900d9..4db259841 100644 --- a/IndicatorsTests/Test.UlcerIndex.cs +++ b/IndicatorsTests/Test.UlcerIndex.cs @@ -25,8 +25,8 @@ public void GetUlcerIndexTest() Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.UI != null).Count()); // sample value - UlcerIndexResult result = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); - Assert.AreEqual((decimal)5.7255, Math.Round((decimal)result.UI, 4)); + UlcerIndexResult r = results.Where(x => x.Date == DateTime.Parse("12/31/2018")).FirstOrDefault(); + Assert.AreEqual((decimal)5.7255, Math.Round((decimal)r.UI, 4)); } diff --git a/README.md b/README.md index 3fa28e544..fda3c27af 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ IEnumerable results = Indicator.GetSma(history,20); - [Standard Deviation](/Indicators/StandardDev/README.md) - [Stochastic Oscillator](/Indicators/Stochastic/README.md) - [Stochastic RSI](/Indicators/StochasticRsi/README.md) -- [Ulcer Index](/Indicators/Ulcer/README.md) +- [Ulcer Index](/Indicators/UlcerIndex/README.md) ## Prerequisite data