private TimeSeries GetEqualSeries(TimeSeries values1, TimeSeries values2) { TimeSeries timeSeries = new TimeSeries(); for (int index = 0; index < values2.Count; ++index) { DateTime dateTime = values1.GetDateTime(index); if (values2.Contains(dateTime)) timeSeries.Add(dateTime, values1[index]); } return timeSeries; }
public Cross Crosses(TimeSeries series, DateTime dateTime) { int num = this.IndexOf(dateTime, SearchOption.Exact); int num2 = series.IndexOf(dateTime, SearchOption.Exact); if (num <= 0 || num >= this.items.Count) { return Cross.None; } if (num2 <= 0 || num2 >= series.Count) { return Cross.None; } DateTime dateTime2 = this.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; }