示例#1
0
        internal static int FindNextTimeLineIndex(ITimeLineData_RealTime timelineData, double time)
        {
            int prevBarPos = timelineData.BarPos;
            int barPos     = prevBarPos;

            if (barPos == timelineData.Length - 1)
            {
                return(barPos);
            }

            while (barPos < timelineData.Length)
            {
                double startTime = timelineData.Arr_Time[barPos];
                if (barPos != 0 && timelineData.IsTradingTimeStart(barPos))
                {
                    startTime = timelineData.Arr_Time[barPos - 1];
                }
                if (startTime > time)
                {
                    return(barPos);
                }
                barPos++;
            }

            return(barPos - 1);
        }
示例#2
0
        private void DataForward_OnTick(object sender, IForwardOnTickArgument argument)
        {
            double time = argument.Time;
            //if (time < 20170601.205900)
            //    return;
            int tradingDay = argument.TickInfo.TickData.TradingDay;

            if (prevTime == time)
            {
                return;
            }
            this.prevTime = time;
            ITickData_Extend tickData = GetTickData(tradingDay);

            //Console.WriteLine(tickData);
            RealTimeDataPackageTimeChangeUtils.ChangeTime_TickData(tickData, time);
            Assert.AreEqual(argument.TickInfo.TickBar.ToString(), tickData.ToString());

            IRealTimeDataReader_Code realTimeData = ((IRealTimeDataReader_Code)sender);

            RealTimeDataPackageTimeChangeUtils.ChangeTime_KLineData(klineData_1Minute, tradingDay, time, tickData);
            Assert.AreEqual(realTimeData.GetKLineData(KLinePeriod.KLinePeriod_1Minute).ToString(), klineData_1Minute.ToString());
            RealTimeDataPackageTimeChangeUtils.ChangeTime_KLineData(klineData_5Minute, tradingDay, time, tickData);
            Assert.AreEqual(realTimeData.GetKLineData(KLinePeriod.KLinePeriod_5Minute).ToString(), klineData_5Minute.ToString());
            RealTimeDataPackageTimeChangeUtils.ChangeTime_KLineData(klineData_15Minute, tradingDay, time, tickData);
            Assert.AreEqual(realTimeData.GetKLineData(KLinePeriod.KLinePeriod_15Minute).ToString(), klineData_15Minute.ToString());
            RealTimeDataPackageTimeChangeUtils.ChangeTime_KLineData(klineData_1Day, tradingDay, time, tickData);
            Assert.AreEqual(realTimeData.GetKLineData(KLinePeriod.KLinePeriod_1Day).ToString(), klineData_1Day.ToString());

            ITimeLineData_RealTime timeLineData = GetTimeLineData(tradingDay);

            RealTimeDataPackageTimeChangeUtils.ChangeTime_TimeLineData(timeLineData, time, tickData);
            Assert.AreEqual(realTimeData.GetTimeLineData().ToString(), timeLineData.ToString());
        }
示例#3
0
        private void ForwardToday_TimeLineData(ITimeLineData_RealTime timeLineData)
        {
            if (timeLineData == null)
            {
                return;
            }
            ITickData_Extend currentTickData = forwardData.CurrentTickData;
            ITickBar         nextTickBar     = currentTickData.GetBar(currentTickData.BarPos + 1);
            int nextTimeLineBarPos           = timeLineData.BarPos + 1;

            if (nextTimeLineBarPos >= timeLineData.Length)
            {
                TimeLineBar timeLineBar = GetTimeLineBar(timeLineData, nextTickBar, timeLineData.YesterdayEnd);
                timeLineData.ChangeCurrentBar(timeLineBar, timeLineData.BarPos);
                return;
            }
            else
            {
                double      nextTime = timeLineData.Arr_Time[nextTimeLineBarPos];
                TimeLineBar timeLineBar;
                if (nextTickBar.Time >= nextTime)
                {
                    timeLineBar = GetTimeLineBar(nextTickBar, timeLineData.YesterdayEnd);
                    timeLineData.ChangeCurrentBar(timeLineBar, nextTimeLineBarPos);
                }
                else
                {
                    timeLineBar = GetTimeLineBar(timeLineData, nextTickBar, timeLineData.YesterdayEnd);
                    timeLineData.ChangeCurrentBar(timeLineBar, timeLineData.BarPos);
                }
            }
        }
示例#4
0
        private void ForwardToday_TimeLineData(int mainBarPosIfFinished)
        {
            if (!dataForForward_Code.UseTimeLineData)
            {
                return;
            }
            ITickBar tickBar = dataForForward_Code.CurrentTickData;
            ITimeLineData_RealTime timeLineData = dataForForward_Code.CurrentTimeLineData;

            //该时段已经结束,跳到下一时段
            if (isTimeLineEnd)
            {
                if (mainBarPosIfFinished > 0)
                {
                    timeLineData.ResetCurrentBar();
                    timeLineData.BarPos = forwardDataIndeier.GetTimeLineBarPosIfFinished(mainBarPosIfFinished);
                    return;
                }
                TimeLineBar timeLineBar2 = TimeLineUtils.GetTimeLineBar(tickBar, timeLineData.YesterdayEnd);
                int         barP         = forwardDataIndeier.GetTimeLineBarPosIfFinished(mainBarPosIfFinished);
                timeLineData.ChangeCurrentBar(timeLineBar2, barP);
                //timeLineData.ChangeCurrentBar(timeLineBar2, timeLineData.BarPos + 1);
                isTimeLineEnd = false;
                return;
            }

            TimeLineBar timeLineBar = TimeLineUtils.GetTimeLineBar(timeLineData, tickBar, timeLineData.YesterdayEnd);

            timeLineData.ChangeCurrentBar(timeLineBar);

            if (mainBarPosIfFinished > 0)
            {
                isTimeLineEnd = true;
            }
        }
 private static int GetTimeLineIndex(ITimeLineData_RealTime timeLineData, double time)
 {
     if (time < timeLineData.Arr_Time[0])
     {
         return(0);
     }
     return(TimeIndeierUtils.IndexOfTime_TimeLine(timeLineData, time));
 }
示例#6
0
 private ITimeLineData_RealTime GetTimeLineData(int date)
 {
     if (timeLineData == null || timeLineData.Date != date)
     {
         timeLineData = new TimeLineDataExtend_RealTime(DataCenter.Default.DataReader.TimeLineDataReader.GetData_Extend(code, date));
     }
     return(timeLineData);
 }
示例#7
0
 /// <summary>
 /// 得到当前的分时线
 /// </summary>
 /// <returns></returns>
 public ITimeLineData GetTimeLineData()
 {
     if (currentTimeLineData == null || currentTimeLineData.Date != tradingDay)
     {
         currentTimeLineData = dataPackage.CreateTimeLineData_RealTime(tradingDay);
     }
     DataNavigate_ChangeTime.ChangeTime_TimeLineData(currentTimeLineData, time, GetTickData());
     return(currentTimeLineData);
 }
示例#8
0
 public ITimeLineData_Extend GetTimeLineData()
 {
     if (currentTimeLineData == null || currentTimeLineData.Date != tradingDay)
     {
         currentTimeLineData = dataPackage_Code.CreateTimeLineData_RealTime(tradingDay);
     }
     RealTimeDataPackageTimeChangeUtils.ChangeTime_TimeLineData(currentTimeLineData, time, GetTickData());
     return(currentTimeLineData);
 }
        public static void ChangeTime_TimeLineData(ITimeLineData_RealTime timeLineData, double time, ITickData_Extend tickData)
        {
            //if (timeLineData.Time == time)
            //    return;
            int    timeLineIndex  = GetTimeLineIndex(timeLineData, time);
            int    tickIndex      = TimeIndeierUtils.IndexOfTime_Tick(tickData, time);
            double klineTime      = timeLineData.Arr_Time[timeLineIndex];
            int    startTickIndex = GetStartTickIndex(timeLineData, tickData, timeLineIndex);

            TimeLineBar klineBar = GetTimeLineBar(tickData, startTickIndex, tickIndex, timeLineData.YesterdayEnd);

            timeLineData.ChangeCurrentBar(klineBar, timeLineIndex);
        }
        private static int GetStartTickIndex(ITimeLineData_RealTime timeLineData, ITickData_Extend tickData, int timeLineIndex)
        {
            double klineTime = timeLineData.BarPos == timeLineIndex?timeLineData.GetCurrentBar_Original().Time : timeLineData.Arr_Time[timeLineIndex];

            int startTickIndex;

            startTickIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, klineTime, true);
            if (timeLineData.IsTradingTimeStart(timeLineIndex))
            {
                while (!tickData.IsTradingTimeStart(startTickIndex))
                {
                    startTickIndex--;
                }
            }
            return(startTickIndex);
        }
示例#11
0
 private void PrepareData()
 {
     this.listenedCodes[0] = this.dataForForward_Code.Code;
     this.dataForForward_Code.TradingDay = dataPackage.StartDate;
     this.forwardDataIndeier             = new ForwardDataIndeier(dataForForward_Code);
     this.onBarArgument = new ForwardOnBarArgument(barFinishedInfos, this);
     foreach (KLinePeriod period in referedPeriods.UsedKLinePeriods)
     {
         IKLineData_RealTime klineData = this.dataForForward_Code.GetKLineData(period);
         klineData.ChangeCurrentBar(KLineUtils.GetKLineBar(dataForForward_Code.CurrentTickData));
     }
     if (dataForForward_Code.UseTimeLineData)
     {
         ITimeLineData_RealTime timeLineData = dataForForward_Code.CurrentTimeLineData;
         timeLineData.ChangeCurrentBar(TimeLineUtils.GetTimeLineBar(dataForForward_Code.CurrentTickData, timeLineData.YesterdayEnd));
     }
 }
示例#12
0
        private void ForwardToday_TimeLine(ITimeLineData_RealTime timeLineData, double time, ITickData tickData, int prevTickIndex)
        {
            if (timeLineData == null)
            {
                return;
            }
            int nextTimeLineIndex = DataForward_Code_Tick.FindNextTimeLineIndex(timeLineData, time);

            if (nextTimeLineIndex == timeLineData.BarPos)
            {
                timeLineData.ChangeCurrentBar(TimeLineUtils.GetTimeLineBar(timeLineData, tickData, prevTickIndex, tickData.BarPos, timeLineData.YesterdayEnd));
            }
            else
            {
                double periodStartTime = timeLineData.Arr_Time[nextTimeLineIndex];
                int    startTickIndex  = FindNextTickIndex(tickData, prevTickIndex, time);
                timeLineData.ChangeCurrentBar(TimeLineUtils.GetTimeLineBar(tickData, startTickIndex, tickData.BarPos, timeLineData.YesterdayEnd), nextTimeLineIndex);
            }
        }
示例#13
0
        private void ForwardTimeLineData()
        {
            if (!navigateData.UseTimeLineData)
            {
                return;
            }
            if (navigateData.CurrentTimeLineData == null)
            {
                return;
            }
            ITimeLineData_RealTime timeLineData = navigateData.CurrentTimeLineData;

            if (navigateData.CurrentTimeLineData.BarPos >= navigateData.CurrentTimeLineData.Length - 1)
            {
                int nextTradingDay = navigateData.GetNextTradingDay();
                if (nextTradingDay < 0)
                {
                    return;
                }
                navigateData.TradingDay          = nextTradingDay;
                navigateData.CurrentTimeLineData = new TimeLineDataExtend_RealTime(DataPackage.GetTimeLineData(navigateData.TradingDay));
            }

            if (mainKLineData.BarPos >= mainKLineData.Length - 1)
            {
                return;
            }
            double nextTime_KLine     = mainKLineData.Arr_Time[mainKLineData.BarPos + 1];
            int    nextTimeLineBarPos = timeLineData.BarPos;
            double nextTime_TimeLine  = timeLineData.Arr_Time[nextTimeLineBarPos];

            while (nextTime_TimeLine < nextTime_KLine && nextTimeLineBarPos < timeLineData.Length - 1)
            {
                nextTimeLineBarPos++;
                nextTime_TimeLine = timeLineData.Arr_Time[nextTimeLineBarPos];
            }
            timeLineData.BarPos = nextTimeLineBarPos;
        }
示例#14
0
        //public static void ForwardToday_KLineData(IKLineData_RealTime klineData, KLinePeriod period, ITickData tickData, int currentTickIndex, int nextTickIndex)
        //{
        //    ITickData_Extend currentTickData = forwardData.CurrentTickData;
        //    ITickBar nextTickBar = currentTickData.GetBar(currentTickData.BarPos + 1);
        //    //日线,肯定不会跳到下一个bar
        //    if (period.Equals(KLinePeriod.KLinePeriod_1Day))
        //    {
        //        dic_KLinePeriod_IsEnd[period] = false;
        //        klineData.ChangeCurrentBar(GetKLineBar(klineData, nextTickBar));
        //        return;
        //    }
        //    double nextTickTime = nextTickBar.Time;
        //    int nextKLineIndex = FindNextKLineIndex(klineData, nextTickTime);
        //    if (nextKLineIndex == klineData.BarPos)
        //    {
        //        dic_KLinePeriod_IsEnd[period] = false;
        //        klineData.ChangeCurrentBar(GetKLineBar(klineData, nextTickBar));
        //    }
        //    else
        //    {
        //        dic_KLinePeriod_IsEnd[period] = true;
        //        klineData.ChangeCurrentBar(GetKLineBar(nextTickBar), nextKLineIndex);
        //    }

        //}

        public static void ForwardToday_TimeLineData(ITimeLineData_RealTime timeLineData, ITickData tickData, int currentTickIndex, int nextTickIndex)
        {
        }