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;
 }
Exemple #2
0
 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;
 }