private int GetRecentOpenDate(int date, bool isFindPrev) { if (IsTrade(date)) { return(date); } int firstOpen = FirstTradingDay; if (date < firstOpen) { return(isFindPrev ? -1 : firstOpen); } int lastOpen = LastTradingDay; if (date > lastOpen) { return(isFindPrev ? lastOpen : -1); } int addPeriod = isFindPrev ? -1 : 1; while (!IsTrade(date)) { date = (int)TimeUtils.AddDays(date, addPeriod); } return(date); }
/// <summary> /// 得到当日的所有K线时间列表 /// </summary> /// <param name="openDate">今日</param> /// <param name="lastOpenDate">上一个开盘日</param> /// <param name="tradingSession">交易时段</param> /// <param name="targetPeriod"></param> /// <returns></returns> public static List <double> GetKLineTimeList(int date, int lastOpenDate, List <double[]> tradingSession, KLinePeriod targetPeriod) { bool overNight = IsOverNight(tradingSession); bool isWeekStart = IsWeekStart(date, lastOpenDate); KLineOpenPeriods dayOpenTime = TradingTimeUtils.GetKLineTimeList_DayOpenTime(tradingSession, targetPeriod); List <double> klineFullTimes = new List <double>(dayOpenTime.KlineTimes.Count); List <double> klineTimes = dayOpenTime.KlineTimes; if (overNight) { bool isFistOpenTimeOverNight = IsOpenTimeOverNight(tradingSession[0]); if (isWeekStart) { int firstDate = lastOpenDate; int secondDate = (int)TimeUtils.AddDays(firstDate, 1); AddFullKLineTimes(klineFullTimes, firstDate, klineTimes, 0, dayOpenTime.OverNightIndex - 1); AddFullKLineTimes(klineFullTimes, secondDate, klineTimes, dayOpenTime.OverNightIndex, dayOpenTime.SplitIndeies[1] - 1); AddFullKLineTimes(klineFullTimes, date, klineTimes, dayOpenTime.SplitIndeies[1], dayOpenTime.KlineTimes.Count - 1); } else { int firstDate = lastOpenDate; AddFullKLineTimes(klineFullTimes, firstDate, dayOpenTime.KlineTimes, 0, dayOpenTime.OverNightIndex - 1); AddFullKLineTimes(klineFullTimes, date, dayOpenTime.KlineTimes, dayOpenTime.OverNightIndex, dayOpenTime.KlineTimes.Count - 1); } } else { AddFullKLineTimes(klineFullTimes, date, dayOpenTime.KlineTimes, 0, dayOpenTime.KlineTimes.Count - 1); } return(klineFullTimes); }