private static int IndexOfTime(IKLineData_RealTime klineData, KLinePeriod klinePeriod, double time, int date)
 {
     if (klinePeriod.PeriodType == KLineTimeType.DAY)
     {
         return(TimeIndeierUtils.IndexOfTime_KLine(klineData.GetKLineData_Original(), date));
     }
     else
     {
         int index = TimeIndeierUtils.IndexOfTime_KLine(klineData, time);
         if (klineData.IsTradingTimeEnd(index))
         {
             double endTime = klineData.GetEndTime(index);
             if (index >= klineData.Length - 1)
             {
                 return(index);
             }
             double nextStartTime = klineData.Arr_Time[index + 1];
             double middleTime    = (endTime + nextStartTime) / 2;
             if (time < middleTime)
             {
                 return(index);
             }
             return(index + 1);
         }
         return(index);
     }
 }
Example #2
0
        private void Index()
        {
            IKLineData_RealTime mainKLineData = data.GetMainKLineData();
            IKLineData_Extend   klineData     = mainKLineData.GetKLineData_Original();

            for (int i = klineData.BarPos + 1; i < klineData.Length; i++)
            {
                if (i == klineData.Length - 1)
                {
                    IndexEndBarPos();
                    continue;
                }
                double time = klineData.Arr_Time[i];
                IndexKLineData(i, time);
            }
        }