Example #1
0
        /// <summary>
        /// 得到指定BarPos所在的交易周期
        /// </summary>
        public double[] GetTradingPeriods(int barPos)
        {
            ITradingTime tradingTime = GetTradingTime(barPos);
            int          periodIndex = GetTradingPeriodsByBarPos(barPos).PeriodIndex;

            return(tradingTime.TradingPeriods[periodIndex]);
        }
Example #2
0
        private void Init(IKLineData klineData, IList <ITradingTime> tradingTimes)
        {
            int currentKLineBarPos = 0;

            for (int i = 0; i < tradingTimes.Count; i++)
            {
                ITradingTime tradingTime = tradingTimes[i];
                KLineDataTradingTimeInfo_Day timeInfo = CalcKLineTimeInfo_Day(tradingTime, klineData, currentKLineBarPos);
                if (timeInfo == null)
                {
                    continue;
                }
                this.dic_TradingDay_KLineTimeInfo.Add(timeInfo.TradingDay, timeInfo);
                this.timeInfo_DayList.Add(timeInfo);
                currentKLineBarPos = timeInfo.EndPos;
                tradingDays.Add(tradingTime.TradingDay);
            }

            for (int i = 1; i < timeInfo_DayList.Count; i++)
            {
                int lastTradingDay = timeInfo_DayList[i - 1].TradingDay;
                KLineDataTradingTimeInfo_Day tradingTimeInfo_Day = (KLineDataTradingTimeInfo_Day)timeInfo_DayList[i];
                int currentTradingDay = tradingTimeInfo_Day.TradingDay;
                tradingTimeInfo_Day.holidayCount = TimeUtils.Substract(currentTradingDay, lastTradingDay).Days - 1;
            }
        }
Example #3
0
        private List <ITradingTime> GetTradingSessionDataResult(IList <ITradingTime> updatedTradingSessionList, IList <ITradingTime> updateTradingSessionList)
        {
            HashSet <int>       set_TradingDay = new HashSet <int>();
            List <ITradingTime> result         = new List <ITradingTime>();

            if (updatedTradingSessionList != null)
            {
                for (int i = 0; i < updatedTradingSessionList.Count; i++)
                {
                    ITradingTime session = updatedTradingSessionList[i];
                    if (set_TradingDay.Contains(session.TradingDay))
                    {
                        continue;
                    }
                    set_TradingDay.Add(session.TradingDay);
                    result.Add(session);
                }
            }
            if (updateTradingSessionList == null)
            {
                return(result);
            }
            for (int i = 0; i < updateTradingSessionList.Count; i++)
            {
                ITradingTime session = updateTradingSessionList[i];
                if (set_TradingDay.Contains(session.TradingDay))
                {
                    continue;
                }
                set_TradingDay.Add(session.TradingDay);
                result.Add(session);
            }
            return(result);
        }
Example #4
0
        private int FindEndBarPos(ITickData tickData, ITradingTime tradingTime, int periodIndex)
        {
            double endTime       = tradingTime.GetPeriodTime(periodIndex)[1];
            double nextStartTime = tradingTime.GetPeriodTime(periodIndex + 1)[0];

            endTime = (endTime + nextStartTime) / 2;
            return(TimeIndeierUtils.IndexOfTime_Tick(tickData, endTime));
        }
Example #5
0
        public ITickData_Extend GetTickData_Extend(string code, int date)
        {
            ITickData tickData = GetTickData(code, date);

            if (tickData == null)
            {
                return(null);
            }
            ITradingTime tradingTime = this.dataReader.CreateTradingTimeReader(code).GetTradingTime(date);

            return(new TickData_Extend(tickData, tradingTime));
        }
Example #6
0
 public TickData_Extend(ITickData tickData, ITradingTime tradingTime)
 {
     this.tickData = tickData;
     for (int i = 0; i < tradingTime.PeriodCount - 1; i++)
     {
         int barPos = FindEndBarPos(tickData, tradingTime, i);
         tradingTimeEndBarPoses.Add(barPos);
         set_TradingTimeEndBar.Add(barPos);
     }
     tradingTimeEndBarPoses.Add(tickData.Length - 1);
     set_TradingTimeEndBar.Add(tickData.Length - 1);
 }
Example #7
0
        private bool IsTimeInTradingSession(int tradingDay, double time)
        {
            if (tradingDay < 0)
            {
                return(false);
            }
            ITradingTime tradingSession = GetTradingTime(tradingDay);

            if (tradingSession == null)
            {
                return(false);
            }
            return(time >= tradingSession.OpenTime && time <= tradingSession.CloseTime);
        }
Example #8
0
 private void Init_Day(IKLineData klineData, IList <ITradingTime> tradingTimes)
 {
     for (int i = 0; i < tradingTimes.Count; i++)
     {
         ITradingTime tradingTime = tradingTimes[i];
         int          tradingDay  = (int)klineData.GetBar(i).Time;
         KLineDataTradingTimeInfo_Day timeInfo = new KLineDataTradingTimeInfo_Day(tradingDay);
         timeInfo.StartPos = i;
         timeInfo.EndPos   = i;
         this.dic_TradingDay_KLineTimeInfo.Add(timeInfo.TradingDay, timeInfo);
         this.timeInfo_DayList.Add(timeInfo);
         tradingDays.Add(tradingTime.TradingDay);
     }
 }
Example #9
0
 public KLineData_Extend(IKLineData klineData, IList <ITradingTime> tradingTimes)
 {
     if (klineData == null)
     {
         return;
     }
     this.klineData    = klineData;
     this.tradingTimes = tradingTimes;
     for (int i = 0; i < tradingTimes.Count; i++)
     {
         ITradingTime tradingTime = tradingTimes[i];
         dic_TradingDay_TradingTime.Add(tradingTime.TradingDay, tradingTime);
     }
     this.klineTimeInfo         = new KLineDataTradingTimeInfo(klineData, tradingTimes);
     this.currentTradingPeriods = klineTimeInfo.GetTradingPeriodsByBarPos(klineData.BarPos);
 }
Example #10
0
 public CacheUtils_TradingTime(string instrumentId, IList <ITradingTime> tradingSessionList)
 {
     this.instrumentId                  = instrumentId;
     this.tradingSessionList            = tradingSessionList;
     this.tradingDays                   = new List <int>(tradingSessionList.Count);
     this.startTimes                    = new List <double>(tradingSessionList.Count);
     this.dic_TradingDay_TradingSession = new Dictionary <int, ITradingTime>(tradingSessionList.Count);
     this.dic_StartTime_TradingDay      = new Dictionary <double, int>(tradingSessionList.Count);
     for (int i = 0; i < tradingSessionList.Count; i++)
     {
         ITradingTime tradingSession = tradingSessionList[i];
         this.tradingDays.Add(tradingSession.TradingDay);
         this.startTimes.Add(tradingSession.OpenTime);
         this.dic_TradingDay_TradingSession.Add(tradingSession.TradingDay, tradingSession);
         this.dic_StartTime_TradingDay.Add(tradingSession.OpenTime, tradingSession.TradingDay);
     }
 }
Example #11
0
        private IList <double[]> GetTradingTime(string code, int date)
        {
            IList <ITradingTime> tradingTime = GetTradingTime(code);

            if (tradingTime != null)
            {
                for (int i = 0; i < tradingTime.Count; i++)
                {
                    ITradingTime tt = tradingTime[i];
                    if (tt.TradingDay == date)
                    {
                        return(tt.TradingPeriods);
                    }
                }
            }
            return(null);
        }
Example #12
0
        public ITradingTime GetTradingTime(string code, int date)
        {
            if (dic_Code_TradingTimeCache.ContainsKey(code))
            {
                return(dic_Code_TradingTimeCache[code][date]);
            }
            IList <ITradingTime>           tradingTimes = updatedDataLoader.GetTradingTime(code);
            Dictionary <int, ITradingTime> dic          = new Dictionary <int, ITradingTime>();

            for (int i = 0; i < tradingTimes.Count; i++)
            {
                ITradingTime tradingTime = tradingTimes[i];
                dic.Add(tradingTime.TradingDay, tradingTime);
            }
            dic_Code_TradingTimeCache.Add(code, dic);
            return(dic[date]);
        }
Example #13
0
        private IList <double[]>[] GetPeriodArr(string code, int startDate, int endDate, KLinePeriod klinePeriod)
        {
            ITradingTimeReader_Code tradingTimeReader_Code = this.dataReader.CreateTradingTimeReader(code);
            List <int>            allTradingDays           = klineDataStore.GetAllTradingDay(code, klinePeriod);
            CacheUtils_TradingDay cache       = new CacheUtils_TradingDay(allTradingDays);
            IList <int>           tradingDays = cache.GetTradingDays(startDate, endDate);

            IList <double[]>[] periodArr = new List <double[]> [tradingDays.Count];
            for (int i = 0; i < tradingDays.Count; i++)
            {
                int              tradingDay = tradingDays[i];
                ITradingTime     time       = tradingTimeReader_Code.GetTradingTime(tradingDay);
                IList <double[]> periods    = time.TradingPeriods;
                periodArr[i] = periods;
            }

            return(periodArr);
        }
Example #14
0
        public double GetRecentTradingTime(double time, bool findForward)
        {
            int tradingDay = GetRecentTradingDay(time, findForward);

            if (tradingDay < 0)
            {
                return(-1);
            }
            ITradingTime tradingTime = GetTradingTime(tradingDay);

            if (tradingTime.OpenTime <= time && tradingTime.CloseTime >= time)
            {
                double[] timeArr = tradingTime.GetPeriodTime(0);
                if (timeArr[0] <= time && timeArr[1] >= time)
                {
                    return(time);
                }
                for (int i = 1; i < tradingTime.PeriodCount; i++)
                {
                    timeArr = tradingTime.GetPeriodTime(i);
                    if (timeArr[0] > time)
                    {
                        return(tradingTime.GetPeriodTime(i - 1)[1]);
                    }
                    if (timeArr[0] <= time && timeArr[1] >= time)
                    {
                        return(time);
                    }
                }
                return(tradingTime.CloseTime);
            }
            else
            {
                if (findForward)
                {
                    return(tradingTime.OpenTime);
                }
                else
                {
                    return(tradingTime.CloseTime);
                }
            }
        }
Example #15
0
        private KLineDataTradingTimeInfo_Day CalcKLineTimeInfo_Day(ITradingTime tradingTime, IKLineData klineData, int currentBarPos)
        {
            if (tradingTime.PeriodCount == 0)
            {
                return(null);
            }
            KLineDataTradingTimeInfo_Day klineTimeInfo_Day = new KLineDataTradingTimeInfo_Day(tradingTime.TradingDay);

            for (int i = 0; i < tradingTime.PeriodCount; i++)
            {
                double[] periodTime = tradingTime.GetPeriodTime(i);
                int      startPos   = CalcEndBarPos(klineData, periodTime[0], currentBarPos);
                int      endPos     = CalcEndBarPos(klineData, periodTime[1], startPos + 1);
                currentBarPos = endPos + 1;
                KLineDataTradingTimeInfo_Periods timeInfo = new KLineDataTradingTimeInfo_Periods(i, startPos, endPos);
                klineTimeInfo_Day.AddTradingPeriods(timeInfo);
            }
            int dayStartPos = klineTimeInfo_Day.TradingPeriods[0].StartPos;
            int dayEndPos   = klineTimeInfo_Day.TradingPeriods[klineTimeInfo_Day.TradingPeriods.Count - 1].EndPos;

            klineTimeInfo_Day.StartPos = dayStartPos;
            klineTimeInfo_Day.EndPos   = dayEndPos;
            return(klineTimeInfo_Day);
        }
Example #16
0
 public KLineData_ExtendBak(IKLineData klineData, ITradingTime tradingTime)
 {
 }
Example #17
0
        public int GetRecentTradingDay(double time, bool findForward)
        {
            if (dic_StartTime_TradingDay.ContainsKey(time))
            {
                return(dic_StartTime_TradingDay[time]);
            }
            int tradingDay = (int)time;

            if (this.tradingDays.Count == 0)
            {
                return(tradingDay);
            }
            if (tradingDay > this.tradingDays.Last <int>() && !findForward)
            {
                return(this.tradingDays[tradingDays.Count - 1]);
            }
            if (tradingDay < this.tradingDays[0] && findForward)
            {
                return(this.tradingDays[0]);
            }
            ITradingTime tradingTime = GetTradingTime(tradingDay);

            if (tradingTime != null)
            {
                if (time >= tradingTime.OpenTime && time <= tradingTime.CloseTime)
                {
                    return(tradingDay);
                }
                if (time > tradingTime.CloseTime)
                {
                    int          nTradingDay  = GetTradingDayCache().GetNextTradingDay(tradingDay);
                    ITradingTime ntradingTime = GetTradingTime(nTradingDay);
                    if (ntradingTime != null && time >= ntradingTime.OpenTime && time <= ntradingTime.CloseTime)
                    {
                        return(nTradingDay);
                    }
                }

                if (findForward)
                {
                    if (time > tradingTime.CloseTime)
                    {
                        return(GetTradingDayCache().GetNextTradingDay(tradingDay));
                    }
                    return(tradingDay);
                }
                else
                {
                    if (time < tradingTime.OpenTime)
                    {
                        return(GetTradingDayCache().GetPrevTradingDay(tradingDay));
                    }
                    return(tradingDay);
                }
            }

            if (findForward)
            {
                return(GetTradingDayCache().GetNextTradingDay(tradingDay));
            }

            int nextTradingDay = GetTradingDayCache().GetNextTradingDay(tradingDay);

            if (IsTimeInThisDay(nextTradingDay, time))
            {
                return(nextTradingDay);
            }

            return(GetTradingDayCache().GetPrevTradingDay(tradingDay));
        }
Example #18
0
 /// <summary>
 /// 获得交易时间
 /// </summary>
 /// <param name="tradingTime"></param>
 /// <param name="klinePeriod"></param>
 /// <returns></returns>
 public static IList <double[]> GetKLineTimeList(ITradingTime tradingTime, KLinePeriod klinePeriod)
 {
     return(GetKLineTimeList(tradingTime.TradingPeriods, klinePeriod));
 }
Example #19
0
        /// <summary>
        /// 得到当前BarPos所在的交易周期
        /// </summary>
        public double[] GetTradingPeriods()
        {
            ITradingTime tradingTime = GetTradingTime();

            return(tradingTime.GetPeriodTime(currentTradingPeriods.PeriodIndex));
        }