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)); } } }
public void TestTimeLineToKLine() { string code = "RB1710"; int start = 20170601; int end = 20170605; IDataPackage_Code datapackage = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, start, end, 0, 0); IKLineData_Extend klineData = datapackage.GetKLineData(KLinePeriod.KLinePeriod_1Minute); //IKLineData_Extend klineData = datapackage.GetKLineData(KLinePeriod.KLinePeriod_5Minute); IList <int> tradingDays = datapackage.GetTradingDays(); ITimeLineData timeLineData = datapackage.GetTimeLineData(tradingDays[0]); TimeLineToKLineIndeier indeier = new TimeLineToKLineIndeier(klineData, timeLineData); int tradingDayIndex = 0; bool isFirst = true; for (int i = klineData.BarPos; i < klineData.Length; i++) { if (!isFirst && klineData.IsDayStart(i)) { tradingDayIndex++; if (tradingDayIndex >= tradingDays.Count) { return; } timeLineData = datapackage.GetTimeLineData(tradingDays[tradingDayIndex]); indeier.ChangeTradingDay(timeLineData); } isFirst = false; klineData.BarPos = i; Console.WriteLine(klineData.Period + ":" + klineData.GetBar(i)); int barPos = indeier.GetTimeLineBarPosIfFinished(i); if (barPos >= 0) { timeLineData.BarPos = barPos; Console.WriteLine("分时线:" + timeLineData.GetBar(barPos)); } Assert.AreEqual(klineData.Time, timeLineData.Time); Assert.AreEqual(klineData.End, timeLineData.Price); } }
public DataNavigater_Code_KLinePeriod(IDataPackage_Code dataPackage, IList <KLinePeriod> periods, KLinePeriod mainKLinePeriod, bool useTimeLineData) { this.code = dataPackage.Code; this.periods = periods; this.dataPackage = dataPackage; this.dic_Period_KLineData = this.dataPackage.CreateKLineData_RealTimes(periods); this.mainKLineData = this.dic_Period_KLineData[mainKLinePeriod]; this.currentTradingDay = dataPackage.StartDate; this.useTimeLineData = useTimeLineData; if (useTimeLineData) { this.timeLineData = dataPackage.GetTimeLineData(dataPackage.StartDate); } this.forwardPeriod = new ForwardPeriod(false, mainKLineData.Period); this.onBarArgument = new ForwardOnBarArgument(this.barFinishedInfos); InitKLine(); }
private TimeLineData_RealTime GetTimeLineData_RealTime(int date, double time) { this.tickData = dataPackage.GetTickData(date); this.timeLineData = (TimeLineData)dataPackage.GetTimeLineData(date); return(GetTimeLineData_RealTime(timeLineData, tickData, time)); }