コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }