コード例 #1
0
        public void GetRocWithSma()
        {
            int lookbackPeriod       = 20;
            int smaPeriod            = 5;
            List <RocResult> results = Indicator.GetRoc(history, lookbackPeriod, smaPeriod).ToList();

            // assertions

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

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

            Assert.AreEqual(-8.2482m, Math.Round((decimal)r1.Roc, 4));
            Assert.AreEqual(-8.4828m, Math.Round((decimal)r1.Sma, 4));

            RocResult r2 = results[29];

            Assert.AreEqual(3.2936m, Math.Round((decimal)r2.Roc, 4));
            Assert.AreEqual(2.1558m, Math.Round((decimal)r2.Sma, 4));
        }
コード例 #2
0
    public void WithSma()
    {
        int lookbackPeriods = 20;
        int smaPeriods      = 5;

        List <RocResult> results = Indicator.GetRoc(quotes, lookbackPeriods, smaPeriods)
                                   .ToList();

        // assertions

        // proper quantities
        // should always be the same number of results as there is quotes
        Assert.AreEqual(502, results.Count);
        Assert.AreEqual(482, results.Where(x => x.Roc != null).Count());
        Assert.AreEqual(478, results.Where(x => x.RocSma != null).Count());

        // sample values
        RocResult r1 = results[29];

        Assert.AreEqual(3.2936, Math.Round((double)r1.Roc, 4));
        Assert.AreEqual(2.1558, Math.Round((double)r1.RocSma, 4));

        RocResult r2 = results[501];

        Assert.AreEqual(-8.2482, Math.Round((double)r2.Roc, 4));
        Assert.AreEqual(-8.4828, Math.Round((double)r2.RocSma, 4));
    }
コード例 #3
0
        public void Standard()
        {
            int lookbackPeriod = 20;

            List <RocResult> results = Indicator.GetRoc(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.Roc != null).Count());
            Assert.AreEqual(false, results.Any(x => x.RocSma != null));

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

            Assert.AreEqual(2.4827m, Math.Round((decimal)r1.Roc, 4));
            Assert.AreEqual(null, r1.RocSma);

            RocResult r2 = results[501];

            Assert.AreEqual(-8.2482m, Math.Round((decimal)r2.Roc, 4));
            Assert.AreEqual(null, r2.RocSma);
        }
コード例 #4
0
    public void Removed()
    {
        List <RocResult> results = quotes.GetRoc(20)
                                   .RemoveWarmupPeriods()
                                   .ToList();

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

        RocResult last = results.LastOrDefault();

        Assert.AreEqual(-8.2482, Math.Round((double)last.Roc, 4));
        Assert.AreEqual(null, last.RocSma);
    }
コード例 #5
0
ファイル: Pmo.cs プロジェクト: Drenalol/Stock.Indicators
    // internals
    private static List <PmoResult> CalcPmoRocEma <TQuote>(
        IEnumerable <TQuote> quotes,
        int timePeriods)
        where TQuote : IQuote
    {
        // initialize
        double           smoothingMultiplier = 2d / timePeriods;
        double?          lastRocEma          = null;
        List <RocResult> roc     = GetRoc(quotes, 1).ToList();
        List <PmoResult> results = new();

        int startIndex = timePeriods + 1;

        for (int i = 0; i < roc.Count; i++)
        {
            RocResult r     = roc[i];
            int       index = i + 1;

            PmoResult result = new()
            {
                Date = r.Date
            };

            if (index > startIndex)
            {
                result.RocEma = (r.Roc * smoothingMultiplier) + (lastRocEma * (1 - smoothingMultiplier));
            }
            else if (index == startIndex)
            {
                double?sumRoc = 0;
                for (int p = index - timePeriods; p < index; p++)
                {
                    RocResult d = roc[p];
                    sumRoc += d.Roc;
                }

                result.RocEma = sumRoc / timePeriods;
            }

            lastRocEma     = result.RocEma;
            result.RocEma *= 10;
            results.Add(result);
        }

        return(results);
    }
コード例 #6
0
        public void GetRocTest()
        {
            int lookbackPeriod = 20;
            IEnumerable <RocResult> results = Indicator.GetRoc(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, results.Where(x => x.Roc != null).Count());

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

            Assert.AreEqual(-8.2482m, Math.Round((decimal)r.Roc, 4));
        }
コード例 #7
0
        public void GetRocTest()
        {
            int lookbackPeriod = 20;
            IEnumerable <RocResult> results = Indicator.GetRoc(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, results.Where(x => x.Roc != null).Count());

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

            Assert.AreEqual((decimal) - 8.2482, Math.Round((decimal)r.Roc, 4));
        }
コード例 #8
0
    public void Standard()
    {
        List <RocResult> results = quotes.GetRoc(20).ToList();

        // assertions

        // proper quantities
        // should always be the same number of results as there is quotes
        Assert.AreEqual(502, results.Count);
        Assert.AreEqual(482, results.Where(x => x.Roc != null).Count());
        Assert.AreEqual(false, results.Any(x => x.RocSma != null));

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

        Assert.AreEqual(2.4827, Math.Round((double)r1.Roc, 4));
        Assert.AreEqual(null, r1.RocSma);

        RocResult r2 = results[501];

        Assert.AreEqual(-8.2482, Math.Round((double)r2.Roc, 4));
        Assert.AreEqual(null, r2.RocSma);
    }
コード例 #9
0
        public void GetRocTest()
        {
            int lookbackPeriod = 20;
            IEnumerable <RocResult> results = Indicator.GetRoc(history, lookbackPeriod);

            // 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.Roc != null).Count());
            Assert.AreEqual(false, results.Any(x => x.Sma != null));

            // sample values
            RocResult r1 = results.Where(x => x.Index == 502).FirstOrDefault();

            Assert.AreEqual(-8.2482m, Math.Round((decimal)r1.Roc, 4));
            Assert.AreEqual(null, r1.Sma);

            RocResult r2 = results.Where(x => x.Index == 250).FirstOrDefault();

            Assert.AreEqual(2.4827m, Math.Round((decimal)r2.Roc, 4));
            Assert.AreEqual(null, r2.Sma);
        }