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); }
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); }
// 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); }
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)); }
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)); }
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)); }