Example #1
0
        public void GetKeltnerTest()
        {
            int emaPeriod      = 20;
            int multiplier     = 2;
            int atrPeriod      = 10;
            int lookbackPeriod = Math.Max(emaPeriod, atrPeriod);
            IEnumerable <KeltnerResult> results = Indicator.GetKeltner(history, emaPeriod, multiplier, atrPeriod);

            // 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.Centerline != 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());
            Assert.AreEqual(502 - lookbackPeriod + 1, results.Where(x => x.Width != null).Count());

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

            Assert.AreEqual((decimal)262.1873, Math.Round((decimal)r1.UpperBand, 4));
            Assert.AreEqual((decimal)249.3519, Math.Round((decimal)r1.Centerline, 4));
            Assert.AreEqual((decimal)236.5165, Math.Round((decimal)r1.LowerBand, 4));
            Assert.AreEqual((decimal)0.102950, Math.Round((decimal)r1.Width, 6));

            KeltnerResult r2 = results.Where(x => x.Date == DateTime.Parse("12/06/2018")).FirstOrDefault();

            Assert.AreEqual((decimal)275.4260, Math.Round((decimal)r2.UpperBand, 4));
            Assert.AreEqual((decimal)265.4599, Math.Round((decimal)r2.Centerline, 4));
            Assert.AreEqual((decimal)255.4938, Math.Round((decimal)r2.LowerBand, 4));
            Assert.AreEqual((decimal)0.075085, Math.Round((decimal)r2.Width, 6));
        }
Example #2
0
        public void Convergence()
        {
            foreach (int qty in convergeQuantities)
            {
                IEnumerable <Quote>         h = History.GetHistoryLong(200 + qty);
                IEnumerable <KeltnerResult> r = Indicator.GetKeltner(h, 100);

                KeltnerResult l = r.LastOrDefault();
                Console.WriteLine("KC-UP on {0:d} with {1,4} periods: {2:N8}",
                                  l.Date, h.Count(), l.UpperBand);
            }
        }
    public void Keltner()
    {
        foreach (int qty in QuotesQuantities)
        {
            IEnumerable <Quote>         quotes = TestData.GetLongish(qty);
            IEnumerable <KeltnerResult> r      = quotes.GetKeltner(100);

            KeltnerResult l = r.LastOrDefault();
            Console.WriteLine(
                "KC-UP on {0:d} with {1,4} periods: {2:N8}",
                l.Date, quotes.Count(), l.UpperBand);
        }
    }
Example #4
0
    public void Removed()
    {
        int emaPeriods = 20;
        int multiplier = 2;
        int atrPeriods = 10;
        int n          = Math.Max(emaPeriods, atrPeriods);

        List <KeltnerResult> results =
            quotes.GetKeltner(emaPeriods, multiplier, atrPeriods)
            .RemoveWarmupPeriods()
            .ToList();

        // assertions
        Assert.AreEqual(502 - Math.Max(2 * n, n + 100), results.Count);

        KeltnerResult last = results.LastOrDefault();

        Assert.AreEqual(262.1873m, Math.Round((decimal)last.UpperBand, 4));
        Assert.AreEqual(249.3519m, Math.Round((decimal)last.Centerline, 4));
        Assert.AreEqual(236.5165m, Math.Round((decimal)last.LowerBand, 4));
        Assert.AreEqual(0.102950m, Math.Round((decimal)last.Width, 6));
    }
Example #5
0
        public void Standard()
        {
            int emaPeriod  = 20;
            int multiplier = 2;
            int atrPeriod  = 10;

            List <KeltnerResult> results =
                Indicator.GetKeltner(history, emaPeriod, multiplier, atrPeriod)
                .ToList();

            // assertions

            // proper quantities
            // should always be the same number of results as there is history
            Assert.AreEqual(502, results.Count);

            int warmupPeriod = 502 - Math.Max(emaPeriod, atrPeriod) + 1;

            Assert.AreEqual(warmupPeriod, results.Where(x => x.Centerline != null).Count());
            Assert.AreEqual(warmupPeriod, results.Where(x => x.UpperBand != null).Count());
            Assert.AreEqual(warmupPeriod, results.Where(x => x.LowerBand != null).Count());
            Assert.AreEqual(warmupPeriod, results.Where(x => x.Width != null).Count());

            // sample value
            KeltnerResult r1 = results[485];

            Assert.AreEqual(275.4260m, Math.Round((decimal)r1.UpperBand, 4));
            Assert.AreEqual(265.4599m, Math.Round((decimal)r1.Centerline, 4));
            Assert.AreEqual(255.4938m, Math.Round((decimal)r1.LowerBand, 4));
            Assert.AreEqual(0.075085m, Math.Round((decimal)r1.Width, 6));

            KeltnerResult r2 = results[501];

            Assert.AreEqual(262.1873m, Math.Round((decimal)r2.UpperBand, 4));
            Assert.AreEqual(249.3519m, Math.Round((decimal)r2.Centerline, 4));
            Assert.AreEqual(236.5165m, Math.Round((decimal)r2.LowerBand, 4));
            Assert.AreEqual(0.102950m, Math.Round((decimal)r2.Width, 6));
        }