Example #1
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 #2
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 #3
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 #4
0
        /// <summary>
        /// 得到当前BarPos所在的交易周期
        /// </summary>
        public double[] GetTradingPeriods()
        {
            ITradingTime tradingTime = GetTradingTime();

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