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); }
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()); }
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); } } }
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)); }
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); }
/// <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); }
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); }
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)); } }
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); } }
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; }
//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) { }