private void IndexKLineData(int mainIndex, double time) { foreach (KLinePeriod period in data.ReferedKLinePeriods) { if (period.Equals(data.MainKLinePeriod)) { continue; } if (period.PeriodType >= KLineTimeType.DAY) { if (period.Period == 1) { IKLineData_Extend mainKlineData = data.GetMainKLineData(); //if (mainKlineData.IsDayEnd(mainIndex)) if (mainKlineData.IsDayStart(mainIndex)) { int currentDayIndex = GetCurrentIndex(period); AddOnBarData(mainIndex - 1, period, currentDayIndex); dic_Period_CurrentIndex[period] = currentDayIndex + 1; } } continue; } IKLineData_RealTime klineData = data.GetKLineData(period); int barIndex = FindBarIndex(klineData, time, GetCurrentIndex(period)); if (barIndex >= klineData.BarPos) { int endBarMainKLineIndex = mainIndex - 1; AddOnBarData(endBarMainKLineIndex, period, barIndex); dic_Period_CurrentIndex[period] = barIndex; } } }
private void RealTimeReader_OnBar(object sender, IForwardOnBarArgument argument) { OnBar_ReferedStrategies(this.Strategy, argument); IKLineData_Extend mainKLineData = argument.MainBar.KLineData; if (this.strategyExecutorInfo != null) { this.strategyExecutorInfo.CurrentKLineData = mainKLineData; } if (HasBarFinishedEvent()) { if (tempBarFinishedArguments == null) { tempBarFinishedArguments = new StrategyBarFinishedArguments(this.strategyExecutorInfo); } DealBarFinishEvent(tempBarFinishedArguments); } if (HasDayFinishedEvent() && mainKLineData.IsDayEnd()) { if (tempDayFinishedArguments == null) { tempDayFinishedArguments = new StrategyDayFinishedArguments(this.strategyExecutorInfo); } DealDayFinishEvent(tempDayFinishedArguments); } this.strategyExecutorInfo.CurrentKLineData = mainKLineData; this.strategyExecutorInfo.CurrentDay = mainKLineData.GetTradingTime().TradingDay; if (mainKLineData.IsDayStart()) { this.strategyExecutorInfo.CurrentDayIndex++; //this.strategyExecutorInfo.CurrentDay = mainKLineData.GetTradingTime().TradingDay; } }
public void TestKLineDataExtendDayStart() { string code = "RB1710"; int start = 20170601; int end = 20170603; IKLineData_Extend klineData = DataCenter.Default.DataReader.KLineDataReader.GetData_Extend(code, start, end, KLinePeriod.KLinePeriod_1Minute); int barPos = klineData.BarPos; for (int i = 0; i < klineData.Length; i++) { Console.WriteLine(i + ":" + klineData.GetBar(i).ToString()); } Assert.IsTrue(klineData.IsDayStart()); klineData.BarPos += 1; Assert.IsFalse(klineData.IsDayStart()); Assert.IsFalse(klineData.IsDayStart(barPos + 1)); Assert.IsFalse(klineData.IsDayEnd(12)); Assert.IsTrue(klineData.IsDayEnd(344)); Assert.IsTrue(klineData.IsDayStart(345)); }
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); } }
private void IndexKLineData(int mainIndex, double time) { foreach (IKLineData kline in indexKLines) { if (kline.Equals(mainKLine)) { continue; } KLinePeriod period = kline.Period; if (period.PeriodType >= KLineTimeType.DAY) { if (period.Period == 1) { //if (mainKLine.IsDayEnd(mainIndex)) if (mainKLine.IsDayStart(mainIndex)) { int currentDayIndex = GetCurrentIndex(period); if (currentDayIndex == 0) { currentDayIndex = kline.BarPos; } AddOnBarData(mainIndex - 1, period, currentDayIndex); dic_Period_CurrentIndex[period] = currentDayIndex + 1; } } //TODO continue; } int barIndex = FindBarIndex(kline, time, GetCurrentIndex(period)); if (barIndex >= kline.BarPos) { int endBarMainKLineIndex = mainIndex - 1; AddOnBarData(endBarMainKLineIndex, period, barIndex); dic_Period_CurrentIndex[period] = barIndex; } } }