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); } }
private double GetEndTime(IKLineData_RealTime klineData, int barPos) { double endTime = klineData.GetEndTime(barPos); if (barPos < klineData.Length - 1 && klineData.IsTradingTimeEnd(barPos)) { endTime = (endTime + klineData.Arr_Time[barPos + 1]) / 2; } return(endTime); }
private static double GetEndTime(IKLineData_RealTime klineData, int barPos) { if (klineData.Period.PeriodType >= KLineTimeType.DAY) { return(klineData.Time); } double endTime = klineData.GetEndTime(barPos); if (barPos < klineData.Length - 1 && klineData.IsTradingTimeEnd(barPos)) { endTime = (endTime + klineData.Arr_Time[barPos + 1]) / 2; } return(endTime); }