示例#1
0
    public void Standard()
    {
        List <AdlResult> results = quotes.GetAdl().ToList();

        // assertions

        // should always be the same number of results as there is quotes
        Assert.AreEqual(502, results.Count);
        Assert.AreEqual(502, results.Where(x => x.AdlSma == null).Count());

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

        Assert.AreEqual(0.7778, Math.Round(r1.MoneyFlowMultiplier, 4));
        Assert.AreEqual(36433792.89, Math.Round(r1.MoneyFlowVolume, 2));
        Assert.AreEqual(3266400865.74, Math.Round(r1.Adl, 2));
        Assert.AreEqual(null, r1.AdlSma);

        AdlResult r2 = results[501];

        Assert.AreEqual(0.8052, Math.Round(r2.MoneyFlowMultiplier, 4));
        Assert.AreEqual(118396116.25, Math.Round(r2.MoneyFlowVolume, 2));
        Assert.AreEqual(3439986548.42, Math.Round(r2.Adl, 2));
        Assert.AreEqual(null, r2.AdlSma);
    }
示例#2
0
        public void GetAdlTest()
        {
            IEnumerable <AdlResult> results = Indicator.GetAdl(history);

            // assertions

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

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

            Assert.AreEqual(0.8052m, Math.Round(r1.MoneyFlowMultiplier, 4));
            Assert.AreEqual(118396116.25m, Math.Round(r1.MoneyFlowVolume, 2));
            Assert.AreEqual(3439986548.42m, Math.Round(r1.Adl, 2));
            Assert.AreEqual(null, r1.Sma);

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

            Assert.AreEqual(0.7778m, Math.Round(r2.MoneyFlowMultiplier, 4));
            Assert.AreEqual(36433792.89m, Math.Round(r2.MoneyFlowVolume, 2));
            Assert.AreEqual(3266400865.74m, Math.Round(r2.Adl, 2));
            Assert.AreEqual(null, r2.Sma);
        }
示例#3
0
    // CHAIKIN MONEY FLOW
    /// <include file='./info.xml' path='indicator/*' />
    ///
    public static IEnumerable <CmfResult> GetCmf <TQuote>(
        this IEnumerable <TQuote> quotes,
        int lookbackPeriods = 20)
        where TQuote : IQuote
    {
        // convert quotes
        List <BasicD> bdList = quotes.ConvertToBasic(CandlePart.Volume);

        // check parameter arguments
        ValidateCmf(lookbackPeriods);

        // initialize
        List <CmfResult> results    = new(bdList.Count);
        List <AdlResult> adlResults = GetAdl(quotes).ToList();

        // roll through quotes
        for (int i = 0; i < adlResults.Count; i++)
        {
            AdlResult r     = adlResults[i];
            int       index = i + 1;

            CmfResult result = new()
            {
                Date = r.Date,
                MoneyFlowMultiplier = r.MoneyFlowMultiplier,
                MoneyFlowVolume     = r.MoneyFlowVolume
            };

            if (index >= lookbackPeriods)
            {
                double sumMfv = 0;
                double sumVol = 0;

                for (int p = index - lookbackPeriods; p < index; p++)
                {
                    BasicD q = bdList[p];
                    sumVol += q.Value;

                    AdlResult d = adlResults[p];
                    sumMfv += (double)d.MoneyFlowVolume;
                }

                double avgMfv = sumMfv / lookbackPeriods;
                double avgVol = sumVol / lookbackPeriods;

                if (avgVol != 0)
                {
                    result.Cmf = avgMfv / avgVol;
                }
            }

            results.Add(result);
        }

        return(results);
    }
示例#4
0
        public void GetAdlTest()
        {
            IEnumerable <AdlResult> results = Indicator.GetAdl(history);

            // assertions

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

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

            Assert.AreEqual((decimal)0.8052, Math.Round(r.MoneyFlowMultiplier, 4));
            Assert.AreEqual((decimal)118396116.25, Math.Round(r.MoneyFlowVolume, 2));
            Assert.AreEqual((decimal)3439986548.42, Math.Round(r.Adl, 2));
        }
示例#5
0
        public void GetAdlTest()
        {
            IEnumerable <AdlResult> results = Indicator.GetAdl(history);

            // assertions

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

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

            Assert.AreEqual(0.8052m, Math.Round(r.MoneyFlowMultiplier, 4));
            Assert.AreEqual(118396116.25m, Math.Round(r.MoneyFlowVolume, 2));
            Assert.AreEqual(3439986548.42m, Math.Round(r.Adl, 2));
        }
示例#6
0
    public void WithSma()
    {
        List <AdlResult> results = Indicator.GetAdl(quotes, 20).ToList();

        // assertions

        // should always be the same number of results as there is quotes
        Assert.AreEqual(502, results.Count);
        Assert.AreEqual(483, results.Where(x => x.AdlSma != null).Count());

        // sample value
        AdlResult r = results[501];

        Assert.AreEqual(0.8052, Math.Round(r.MoneyFlowMultiplier, 4));
        Assert.AreEqual(118396116.25, Math.Round(r.MoneyFlowVolume, 2));
        Assert.AreEqual(3439986548.42, Math.Round(r.Adl, 2));
        Assert.AreEqual(3595352721.16, Math.Round((double)r.AdlSma, 2));
    }