private List <SupportAndResistanceValue> FindGaps(ref List <double> volumeProfile, ref List <double> priceChain) { List <SupportAndResistanceValue> gapSR = new List <SupportAndResistanceValue>(); if (!volumeProfile.Exists(d => d.AlmostEqualRelative(0.0, AbsoluteError))) { return(gapSR); } List <int> gapUp, gapDown; _data.FindGaps(out gapUp, out gapDown); gapSR.AddRange(gapUp.Select(j => { double val = _data.Low[j]; DateTime date = _data.Date[j]; SupportAndResistanceValue srVal = new SupportAndResistanceValue(val, date, SupportAndResistanceValueType.GapSupport); return(srVal); })); gapSR.AddRange(gapDown.Select(j => { double val = _data.High[j]; DateTime date = _data.Date[j]; SupportAndResistanceValue srVal = new SupportAndResistanceValue(val, date, SupportAndResistanceValueType.GapResistance); return(srVal); })); int i = 0; while (i < volumeProfile.Count) { if (volumeProfile[i].AlmostEqualRelative(0.0, AbsoluteError)) { volumeProfile.RemoveAt(i); priceChain.RemoveAt(i); } else { i++; } } return(gapSR); }