FastQuant.TimeSeries.Crosses C# (CSharp) Method

Crosses() public method

public Crosses ( TimeSeries series, System.DateTime dateTime ) : Cross
series TimeSeries
dateTime System.DateTime
return Cross
        public Cross Crosses(TimeSeries series, DateTime dateTime)
        {
            var num = IndexOf(dateTime);
            var num2 = series.IndexOf(dateTime);
            if (num <= 0 || num >= this.series.Count)
            {
                return Cross.None;
            }
            if (num2 > 0 && num2 < series.Count)
            {
                DateTime dateTime2 = GetDateTime(num - 1);
                DateTime dateTime3 = series.GetDateTime(num2 - 1);
                if (dateTime2 == dateTime3)
                {
                    if (this.GetValue(num - 1) <= series.GetValue(num2 - 1) && this.GetValue(num) > series.GetValue(num2))
                    {
                        return Cross.Above;
                    }
                    if (this.GetValue(num - 1) >= series.GetValue(num2 - 1) && this.GetValue(num) < series.GetValue(num2))
                    {
                        return Cross.Below;
                    }
                }
                else
                {
                    double value;
                    double value2;
                    if (dateTime2 < dateTime3)
                    {
                        DateTime dateTime4 = this.GetDateTime(num - 1);
                        value = this.GetValue(num - 1);
                        if (series.IndexOf(dateTime4, SearchOption.Next) != num2)
                        {
                            value2 = series.GetValue(series.IndexOf(dateTime4, SearchOption.Next));
                        }
                        else
                        {
                            value2 = series.GetValue(series.IndexOf(dateTime4, SearchOption.Prev));
                        }
                    }
                    else
                    {
                        DateTime dateTime5 = series.GetDateTime(num2 - 1);
                        value2 = series.GetValue(num2 - 1);
                        if (this.IndexOf(dateTime5, SearchOption.Prev) != num)
                        {
                            value = this.GetValue(this.IndexOf(dateTime5, SearchOption.Next));
                        }
                        else
                        {
                            value = this.GetValue(this.IndexOf(dateTime5, SearchOption.Prev));
                        }
                    }
                    if (value <= value2 && this.GetValue(num) > series.GetValue(num2))
                    {
                        return Cross.Above;
                    }
                    if (value >= value2 && this.GetValue(num) < series.GetValue(num2))
                    {
                        return Cross.Below;
                    }
                }
                return Cross.None;
            }
            return Cross.None;
        }

Same methods

TimeSeries::Crosses ( double level, int index ) : Cross