예제 #1
0
        public void GetDonchianTest()
        {
            int lookbackPeriod = 20;
            IEnumerable <DonchianResult> results = Indicator.GetDonchian(history, lookbackPeriod);

            // 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
            DonchianResult r1 = results.Where(x => x.Index == 502).FirstOrDefault();

            Assert.AreEqual(251.5050m, Math.Round((decimal)r1.Centerline, 4));
            Assert.AreEqual(273.5900m, Math.Round((decimal)r1.UpperBand, 4));
            Assert.AreEqual(229.4200m, Math.Round((decimal)r1.LowerBand, 4));
            Assert.AreEqual(0.175623m, Math.Round((decimal)r1.Width, 6));

            DonchianResult r2 = results.Where(x => x.Index == 486).FirstOrDefault();

            Assert.AreEqual(265.2300m, Math.Round((decimal)r2.Centerline, 4));
            Assert.AreEqual(274.3900m, Math.Round((decimal)r2.UpperBand, 4));
            Assert.AreEqual(256.0700m, Math.Round((decimal)r2.LowerBand, 4));
            Assert.AreEqual(0.069072m, Math.Round((decimal)r2.Width, 6));
        }
예제 #2
0
        public void GetDonchianTest()
        {
            int lookbackPeriod = 20;
            IEnumerable <DonchianResult> results = Indicator.GetDonchian(history, lookbackPeriod);

            // 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());
            Assert.AreEqual(128, results.Where(x => x.IsDiverging == true).Count());

            // sample value
            DonchianResult r1 = results.Where(x => x.Date == DateTime.ParseExact("12/31/2018", "MM/dd/yyyy", null)).FirstOrDefault();

            Assert.AreEqual((decimal)251.5050, Math.Round((decimal)r1.Centerline, 4));
            Assert.AreEqual((decimal)273.5900, Math.Round((decimal)r1.UpperBand, 4));
            Assert.AreEqual((decimal)229.4200, Math.Round((decimal)r1.LowerBand, 4));
            Assert.AreEqual((decimal)0.175623, Math.Round((decimal)r1.Width, 6));
            Assert.IsNull(r1.IsDiverging);

            DonchianResult r2 = results.Where(x => x.Date == DateTime.ParseExact("12/06/2018", "MM/dd/yyyy", null)).FirstOrDefault();

            Assert.AreEqual((decimal)265.2300, Math.Round((decimal)r2.Centerline, 4));
            Assert.AreEqual((decimal)274.3900, Math.Round((decimal)r2.UpperBand, 4));
            Assert.AreEqual((decimal)256.0700, Math.Round((decimal)r2.LowerBand, 4));
            Assert.AreEqual((decimal)0.069072, Math.Round((decimal)r2.Width, 6));
            Assert.AreEqual(true, r2.IsDiverging);
        }
예제 #3
0
        public void Standard()
        {
            int lookbackPeriod = 20;

            List <DonchianResult> results = Indicator.GetDonchian(history, lookbackPeriod)
                                            .ToList();

            // assertions

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

            // sample values
            DonchianResult r1 = results[19];

            Assert.AreEqual(null, r1.Centerline);
            Assert.AreEqual(null, r1.UpperBand);
            Assert.AreEqual(null, r1.LowerBand);
            Assert.AreEqual(null, r1.Width);

            DonchianResult r2 = results[20];

            Assert.AreEqual(214.2700m, Math.Round((decimal)r2.Centerline, 4));
            Assert.AreEqual(217.0200m, Math.Round((decimal)r2.UpperBand, 4));
            Assert.AreEqual(211.5200m, Math.Round((decimal)r2.LowerBand, 4));
            Assert.AreEqual(0.025669m, Math.Round((decimal)r2.Width, 6));

            DonchianResult r3 = results[249];

            Assert.AreEqual(254.2850m, Math.Round((decimal)r3.Centerline, 4));
            Assert.AreEqual(258.7000m, Math.Round((decimal)r3.UpperBand, 4));
            Assert.AreEqual(249.8700m, Math.Round((decimal)r3.LowerBand, 4));
            Assert.AreEqual(0.034725m, Math.Round((decimal)r3.Width, 6));

            DonchianResult r4 = results[485];

            Assert.AreEqual(265.5350m, Math.Round((decimal)r4.Centerline, 4));
            Assert.AreEqual(274.3900m, Math.Round((decimal)r4.UpperBand, 4));
            Assert.AreEqual(256.6800m, Math.Round((decimal)r4.LowerBand, 4));
            Assert.AreEqual(0.066696m, Math.Round((decimal)r4.Width, 6));

            DonchianResult r5 = results[501];

            Assert.AreEqual(251.5050m, Math.Round((decimal)r5.Centerline, 4));
            Assert.AreEqual(273.5900m, Math.Round((decimal)r5.UpperBand, 4));
            Assert.AreEqual(229.4200m, Math.Round((decimal)r5.LowerBand, 4));
            Assert.AreEqual(0.175623m, Math.Round((decimal)r5.Width, 6));
        }
예제 #4
0
    public void Removed()
    {
        List <DonchianResult> results = quotes.GetDonchian(20)
                                        .RemoveWarmupPeriods()
                                        .ToList();

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

        DonchianResult last = results.LastOrDefault();

        Assert.AreEqual(251.5050m, Math.Round((decimal)last.Centerline, 4));
        Assert.AreEqual(273.5900m, Math.Round((decimal)last.UpperBand, 4));
        Assert.AreEqual(229.4200m, Math.Round((decimal)last.LowerBand, 4));
        Assert.AreEqual(0.175623m, Math.Round((decimal)last.Width, 6));
    }