示例#1
0
 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.IsTradingPeriodEnd(index))
         {
             if (klineData.IsDayEnd(index))
             {
                 return(index);
             }
             double endTime = klineData.GetKLinePeriodEndTime(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);
     }
 }
示例#2
0
        private static double GetEndTime(IKLineData_RealTime klineData, int barPos)
        {
            if (klineData.Period.PeriodType >= KLineTimeType.DAY)
            {
                return(klineData.Time);
            }
            double endTime = klineData.GetKLinePeriodEndTime(barPos);

            if (barPos < klineData.Length - 1 && klineData.IsTradingPeriodEnd(barPos))
            {
                endTime = (endTime + klineData.Arr_Time[barPos + 1]) / 2;
            }
            return(endTime);
        }