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 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); } }