public int LastCross(string seriesName)
        {
            var crossIndex = CrossDataSeries.FindIndex(x => x.Name == seriesName);
            var result     = -1;

            for (int i = 0; i < CrossDataSeries.Count - 1; i++)
            {
                if (CrossDataSeries[crossIndex].GetValueByIndex(i))
                {
                    result = i;
                    break;
                }
            }

            return(result);
        }
        public ICustomData <double, bool> CreateOrUpdateCross(HistoricalData currentData, ICustomData <double, double> a, ReferenceSeries b, CrossDirection direction)
        {
            ICustomData <double, bool> result;
            string name       = direction == CrossDirection.Down ? a.Name + CrossPartialName + b.Name : b.Name + CrossPartialName + a.Name;
            int    findResult = CrossDataSeries.FindIndex(x => x.Name == name);

            if (findResult != -1)
            {
                CrossDataSeries[findResult].GetValue(b.Value);
                result = CrossDataSeries[findResult];
            }
            else
            {
                result = CreateAndFillCross(currentData, a, b, direction);
            }

            return(result);
        }