public void ChangeTime(double time) { if (this.time == time) { return; } this.time = time; int date = this.sessionReader.GetTradingDay(time); if (date < 0) { date = this.sessionReader.GetRecentTradingDay(time); } if (this.date != date) { this.date = date; this.timeLineData_RealTime = GetTimeLineData_RealTime(date, time); } else { this.timeLineData_RealTime = GetTimeLineData_RealTime(timeLineData, tickData, time); } }
private void ForwardToday_TimeLineData(TimeLineData_RealTime timeLineData) { if (timeLineData == null) { return; } ITickBar nextTickBar = currentTickData.GetBar(currentTickData.BarPos + 1); int nextTimeLineBarPos = timeLineData.BarPos + 1; if (nextTimeLineBarPos >= timeLineData.Length) { TimeLineBar timeLineBar = GetTimeLineBar(timeLineData, nextTickBar, lastEndPrice); timeLineData.ChangeCurrentBar(timeLineBar, timeLineData.BarPos); return; } else { double nextTime = timeLineData.Arr_Time[nextTimeLineBarPos]; TimeLineBar timeLineBar; if (nextTickBar.Time >= nextTime) { timeLineBar = GetTimeLineBar(nextTickBar, lastEndPrice); timeLineData.ChangeCurrentBar(timeLineBar, nextTimeLineBarPos); } else { timeLineBar = GetTimeLineBar(timeLineData, nextTickBar, lastEndPrice); timeLineData.ChangeCurrentBar(timeLineBar, timeLineData.BarPos); } } }
private void InitData() { int currentTradingDay = tradingDays[0]; this.currentTickData = dataPackage.GetTickData(currentTradingDay); foreach (KLinePeriod period in dic_Period_KLineData.Keys) { IKLineData_RealTime klineData = dic_Period_KLineData[period]; klineData.ChangeCurrentBar(GetKLineBar(currentTickData)); if (period == forwardPeriod.KlineForwardPeriod) { mainKlineData = klineData; } } //初始化分时线 //int lastTradingDay = dataReader.TradingDayReader.GetPrevTradingDay(currentTradingDay); //IKLineData lastDayklineData = dataReader.KLineDataReader.GetData(code, lastTradingDay, lastTradingDay, KLinePeriod.KLinePeriod_1Day); //if (lastDayklineData.Length == 0) // lastEndPrice = currentTickData.Arr_Price[0]; //else // lastEndPrice = lastDayklineData.End; this.lastEndPrice = dataPackage.GetLastEndPrice(currentTradingDay); if (useTimeLineData) { ITimeLineData timeLineData = dataPackage.GetTimeLineData(currentTradingDay); if (timeLineData != null) { this.currentTimeLineData = new TimeLineData_RealTime(timeLineData); this.currentTimeLineData.ChangeCurrentBar(GetTimeLineBar(currentTickData, lastEndPrice)); } } }
private TimeLineData_RealTime GetTimeLineData_RealTime(TimeLineData timeLineData, ITickData tickData, double time) { this.timeLineData_RealTime = new TimeLineData_RealTime(this.timeLineData); int timeLineIndex = TimeIndeierUtils.IndexOfTime_TimeLine(this.timeLineData, time); //this.timeLineData_RealTime.IndexOfTime(time); int tickIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, time); double klineTime = timeLineData_RealTime.Arr_Time[timeLineIndex]; int startTickIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, klineTime); //IKLineData klineData = dataPackage.GetKLineData(date, date, 1, 0, KLinePeriod.KLinePeriod_1Day); float lastEndPrice = dataPackage.GetLastEndPrice(date); TimeLineBar klineBar = GetTimeLineBar(tickData, startTickIndex, tickIndex, lastEndPrice); timeLineData_RealTime.ChangeCurrentBar(klineBar, timeLineIndex); return(timeLineData_RealTime); }
private void ForwardNextDay_TimeLine() { if (!useTimeLineData) { return; } int currentTradingDay = currentTickData.TradingDay; TimeLineData timeLineData = (TimeLineData)dataPackage.GetTimeLineData(currentTradingDay); if (timeLineData == null) { return; } float lastEndPrice = this.currentTimeLineData.Arr_Price[currentTimeLineData.Length - 1]; TimeLineData_RealTime timeLineData_RealTime = new TimeLineData_RealTime(timeLineData); timeLineData_RealTime.ChangeCurrentBar(GetTimeLineBar(currentTickData, lastEndPrice)); this.currentTimeLineData = timeLineData_RealTime; }