public void TestAdjustKLineDataByTick() { DataReaderFactory fac = ResourceLoader.GetDefaultDataReaderFactory(); IKLineData klineData = fac.KLineDataReader.GetData("m05", 20120104, 20120110, KLinePeriod.KLinePeriod_1Minute); KLineData_RealTime realtimeKLineData = new KLineData_RealTime(klineData); realtimeKLineData.BarPos = TimeIndeierUtils.IndexOfTime_KLine(klineData, 20120104.090000); ITickData tickData = fac.TickDataReader.GetTickData("m05", 20120104); tickData.BarPos = 0; int lastIndex = -1; int currentIndex = 0; tickData.BarPos = currentIndex; KLineBar klineBar = KLineBar.CopyFrom(realtimeKLineData); klineBar.High = klineBar.Start; klineBar.Low = klineBar.Start; klineBar.End = klineBar.Start; klineBar.Mount = 0; klineBar.Money = 0; klineBar.Hold = 0; realtimeKLineData.SetRealTimeData(klineBar); for (int i = 0; i < tickData.Length; i++) { RealTimeDataNavigateUtils.ForwardKLineDataByForwardedTick(realtimeKLineData, tickData, lastIndex, currentIndex, new KLineBar()); Console.WriteLine(realtimeKLineData); lastIndex = currentIndex; currentIndex++; } }
/// <summary> /// 创建 /// </summary> /// <param name="mainKLineData"></param> /// <param name="allKLineData"></param> public KLineDataForward_BigPeriod(KLineData_RealTime mainKLineData, Dictionary <KLinePeriod, KLineData_RealTime> allKLineData) { this.mainKLineData = mainKLineData; this.dic_Period_KLineData = allKLineData; this.forwardPeriod = mainKLineData.Period; InitKLine(); }
private void ForwardToday_KLineData(KLineData_RealTime klineData, KLinePeriod period) { ITickBar nextTickBar = currentTickData.GetBar(currentTickData.BarPos + 1); //日线,肯定不会跳到下一个bar if (period == KLinePeriod.KLinePeriod_1Day) { dic_KLinePeriod_IsEnd[period] = false; klineData.SetRealTimeData(GetKLineBar(klineData, nextTickBar)); return; } double time = nextTickBar.Time; int nextKLineIndex = FindNextKLineIndex(klineData, time); if (nextKLineIndex == klineData.BarPos) { dic_KLinePeriod_IsEnd[period] = false; klineData.SetRealTimeData(GetKLineBar(klineData, nextTickBar)); } else { dic_KLinePeriod_IsEnd[period] = true; klineData.SetRealTimeData(GetKLineBar(nextTickBar), nextKLineIndex); } }
public void Change(IKLineData data, double time) { this.klineData = (KLineData_RealTime)data; this.code = data.Code; this.period = data.Period; this.ChangeTime(time); }
private static void Print(KLineDataForward_TickPeriod klineDataForward) { Console.WriteLine("DayEnd:" + klineDataForward.IsDayEnd + "|1MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Minute) + "|5MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_5Minute) + "|15MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_15Minute) + "|DayEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Day)); KLineData_RealTime klineData_1 = (KLineData_RealTime)klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute); Console.WriteLine("tick:" + klineDataForward.GetTickData()); Console.WriteLine("1minute:" + klineData_1); Console.WriteLine("1minute_" + klineData_1.GetCurrentRealBar()); KLineData_RealTime klineData_1Day = (KLineData_RealTime)klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Day); Console.WriteLine("1day:" + klineData_1Day); // //Console.WriteLine("DayEnd:" + klineDataForward.IsDayEnd // + "|1MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Minute) // + "|5MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_5Minute) // + "|15MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_15Minute) // + "|DayEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Day)); //Console.WriteLine("1minute:" + klineData_1); //KLineData_RealTime klineData_5 = (KLineData_RealTime)klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_5Minute); //Console.WriteLine("5minute:" + klineData_5); //Console.WriteLine("5minute_" + klineData_5.GetCurrentRealBar()); }
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.klineData_RealTime = GetKLineData_RealTime(date, time); } else { this.klineData_RealTime = GetKLineData_RealTime(klineData, tickData, time); } }
private void ForwardNextDay_KLine(KLineData_RealTime klineData, KLinePeriod period) { if (period.PeriodType >= KLineTimeType.DAY) { double day = currentTickData.TradingDay; int nextKLineIndex = FindNextKLineIndex(klineData, day); if (nextKLineIndex != klineData.BarPos) { dic_KLinePeriod_IsEnd[period] = true; klineData.SetRealTimeData(GetKLineBar(currentTickData), nextKLineIndex); } else { dic_KLinePeriod_IsEnd[period] = false; klineData.SetRealTimeData(GetKLineBar(klineData, currentTickData)); } return; } ITickBar tickBar = currentTickData.GetCurrentBar(); KLineData_DaySplitter daySplitter = dic_Period_DaySplitter[period]; daySplitter.NextDay(); //klineData.BarPos = daySplitter.CurrentDayKLineIndex; ForwardKLine_NextPeriod(klineData, daySplitter.CurrentDayKLineIndex, tickBar); }
private void ForwardToday() { foreach (KLinePeriod period in dic_Period_KLineData.Keys) { KLineData_RealTime klineData = dic_Period_KLineData[period]; ForwardToday_KLineData(klineData, period); } currentTickData.BarPos++; }
private void Init(DataReaderFactory factory, string code, KLinePeriod period, double time, int startDate, int endDate) { KLineData data = (KLineData)factory.KLineDataReader.GetData(code, startDate, endDate, period); this.klineData = new KLineData_RealTime(data); DataCacheFactory cacheFac = factory.CacheFactory; this.klineChartBuilder = new RealTimeDataBuilder_KLine(klineData, cacheFac.CreateCache_Code(code, startDate, endDate), time); this.CurrentTime = time; }
private void InitDaySplitter(IDataReader dataReader, string code) { ITradingSessionReader_Instrument sessionReader = dataReader.CreateTradingSessionReader(code); this.dic_Period_DaySplitter = new Dictionary <KLinePeriod, KLineData_DaySplitter>(); foreach (KLinePeriod period in dic_Period_KLineData.Keys) { KLineData_RealTime klineData = dic_Period_KLineData[period]; KLineData_DaySplitter daySplitter = new KLineData_DaySplitter(klineData, sessionReader); dic_Period_DaySplitter.Add(period, daySplitter); } }
private void InitKLine() { foreach (KLinePeriod period in dic_Period_KLineData.Keys) { KLineData_RealTime klineData = dic_Period_KLineData[period]; //主K线最后前进 if (klineData == mainKLineData) { continue; } klineData.SetRealTimeData(mainKLineData); } }
private void InitKLine() { currentTickData = dataReader.TickDataReader.GetTickData(code, tradingDays[0]); foreach (KLinePeriod period in dic_Period_KLineData.Keys) { KLineData_RealTime klineData = dic_Period_KLineData[period]; klineData.SetRealTimeData(GetKLineBar(currentTickData)); if (period == forwardPeriod) { mainKlineData = klineData; } } }
private static void AddToList(List <string> list, KLineDataForward_BigPeriod klineDataForward) { IKLineData klineData_1 = klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute); list.Add("DayEnd:" + klineDataForward.IsDayEnd + "|1MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Minute) + "|5MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_5Minute) + "|15MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_15Minute) + "|DayEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Day)); list.Add("1minute:" + klineData_1); KLineData_RealTime klineData_5 = (KLineData_RealTime)klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_5Minute); list.Add("5minute:" + klineData_5); list.Add("5minute_" + klineData_5.GetCurrentRealBar()); }
private void ForwardKLine_NextPeriod(KLineData_RealTime klineData, int newBarPos, ITickBar tickBar) { KLineBar bar = new KLineBar(); bar.Time = tickBar.Time; bar.Start = tickBar.Price; bar.High = tickBar.Price; bar.Low = tickBar.Price; bar.End = tickBar.Price; bar.Money = tickBar.Mount * tickBar.Price; bar.Mount = tickBar.Mount; bar.Hold = tickBar.Hold; klineData.BarPos = newBarPos; klineData.SetRealTimeData(bar); }
private static void Print(KLineDataForward_BigPeriod klineDataForward) { IKLineData klineData_1 = klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute); Console.WriteLine("DayEnd:" + klineDataForward.IsDayEnd + "|1MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Minute) + "|5MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_5Minute) + "|15MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_15Minute) + "|DayEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Day)); Console.WriteLine("1minute:" + klineData_1); KLineData_RealTime klineData_5 = (KLineData_RealTime)klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_5Minute); Console.WriteLine("5minute:" + klineData_5); Console.WriteLine("5minute_" + klineData_5.GetCurrentRealBar()); }
private IKLineData GetData_Day(KLinePeriod period) { if (period.PeriodType != KLineTimeType.DAY) { return(null); } int beforeStartDate = dataReader.TradingDayReader.GetPrevTradingDay(startDate, beforeBarCount); IKLineData klineData = dataReader.KLineDataReader.GetData(code, beforeStartDate, endDate, period); KLineData_RealTime klineData_RealTime = new KLineData_RealTime(klineData); int index = klineData_RealTime.IndexOfTime(startDate); klineData_RealTime.BarPos = index; return(klineData_RealTime); }
public void TestForwardKLineDataToNextDayOpenTime() { string code = "m05"; DataReaderFactory dataReaderFactory = ResourceLoader.GetDefaultDataReaderFactory(); IKLineData klineData = dataReaderFactory.KLineDataReader.GetData("m05", 20120104, 20120110, KLinePeriod.KLinePeriod_1Minute); KLineData_RealTime realtimeKLineData = new KLineData_RealTime(klineData); ITickData nextDayTickData = dataReaderFactory.TickDataReader.GetTickData(code, 20120105); KLineBar tmpCurrentKLineBar = new KLineBar(); //Console.WriteLine(realtimeKLineData); Assert.AreEqual("20120104.09,2936,2938,2933,2935,2508,0,341690", realtimeKLineData.ToString()); RealTimeDataNavigateUtils.ForwardKLineDataToNextDayOpenTime(realtimeKLineData, 20120105, nextDayTickData, dataReaderFactory, tmpCurrentKLineBar); //Console.WriteLine(realtimeKLineData); Assert.AreEqual("20120105.085901,2928,2928,2928,2928,6,17568,318690", realtimeKLineData.ToString()); }
private static KLineDataForward_BigPeriod GetDataForward(string code, int start, int endDate) { KLineData_RealTime klineData_1Minute = CommonData.GetKLineData_RealTime(code, start, endDate, KLinePeriod.KLinePeriod_1Minute); KLineData_RealTime klineData_5Minute = CommonData.GetKLineData_RealTime(code, start, endDate, KLinePeriod.KLinePeriod_5Minute); KLineData_RealTime klineData_15Minute = CommonData.GetKLineData_RealTime(code, start, endDate, KLinePeriod.KLinePeriod_15Minute); KLineData_RealTime klineData_1Day = CommonData.GetKLineData_RealTime(code, start, endDate, KLinePeriod.KLinePeriod_1Day); Dictionary <KLinePeriod, KLineData_RealTime> dic = new Dictionary <KLinePeriod, KLineData_RealTime>(); dic.Add(KLinePeriod.KLinePeriod_1Minute, klineData_1Minute); dic.Add(KLinePeriod.KLinePeriod_5Minute, klineData_5Minute); dic.Add(KLinePeriod.KLinePeriod_15Minute, klineData_15Minute); dic.Add(KLinePeriod.KLinePeriod_1Day, klineData_1Day); KLineDataForward_BigPeriod klineDataForward = new KLineDataForward_BigPeriod(klineData_1Minute, dic, CommonData.GetDataReader().CreateTradingSessionReader(code)); return(klineDataForward); }
private bool ForwardNextDay() { TickData tickData = ForwardTickData(); if (tickData == null) { isEnd = true; return(false); } currentTickData = tickData; foreach (KLinePeriod period in dic_Period_KLineData.Keys) { KLineData_RealTime klineData = dic_Period_KLineData[period]; ForwardNextDay_KLine(klineData, period); } return(true); }
private IKLineData GetData_Minute(KLinePeriod period) { if (period.PeriodType != KLineTimeType.MINUTE) { return(null); } int day = beforeBarCount * period.Period / 225; int beforeStartDate = dataReader.TradingDayReader.GetPrevTradingDay(startDate, day); IKLineData klineData = dataReader.KLineDataReader.GetData(code, beforeStartDate, endDate, period); KLineData_RealTime klineData_RealTime = new KLineData_RealTime(klineData); TradingSession session = tradingSessionReader.GetTradingSession(startDate); int index = klineData_RealTime.IndexOfTime(session.StartTime); klineData_RealTime.BarPos = index; return(klineData_RealTime); }
private int FindNextKLineIndex(KLineData_RealTime klineData, double time) { int barPos = klineData.BarPos; while (barPos < klineData.Length && klineData.Arr_Time[barPos] < time) { barPos++; } if (barPos >= klineData.Length) { return(barPos - 1); } if (barPos > 0 && klineData.Arr_Time[barPos] != time) { barPos--; } return(barPos < 0 ? 0 : barPos); }
private void ForwardBar_CurrentPeriod(KLineData_RealTime klineData, IKLineBar klineBar) { double time = klineBar.Time; IKLineBar oldbar = klineData.GetBar(klineData.BarPos); KLineBar bar = new KLineBar(); bar.Time = klineBar.Time; bar.Start = oldbar.Start; bar.High = klineBar.High > oldbar.High ? klineBar.High : oldbar.High; bar.Low = klineBar.Low < oldbar.Low ? klineBar.Low : oldbar.Low; bar.End = klineBar.End; bar.Mount = oldbar.Mount + klineBar.Mount; bar.Money = oldbar.Money + klineBar.Money; bar.Hold = klineBar.Hold; klineData.SetRealTimeData(bar); }
private static KLineDataForward_TickPeriod GetKLineDataForward(string code, int start, int endDate) { KLineData_RealTime klineData_1Minute = CommonData.GetKLineData_RealTime(code, start, endDate, KLinePeriod.KLinePeriod_1Minute); KLineData_RealTime klineData_5Minute = CommonData.GetKLineData_RealTime(code, start, endDate, KLinePeriod.KLinePeriod_5Minute); KLineData_RealTime klineData_15Minute = CommonData.GetKLineData_RealTime(code, start, endDate, KLinePeriod.KLinePeriod_15Minute); KLineData_RealTime klineData_1Day = CommonData.GetKLineData_RealTime(code, start, endDate, KLinePeriod.KLinePeriod_1Day); Dictionary <KLinePeriod, KLineData_RealTime> dic = new Dictionary <KLinePeriod, KLineData_RealTime>(); IList <int> tradingDays = CommonData.GetDataReader().TradingDayReader.GetTradingDays(start, endDate); dic.Add(KLinePeriod.KLinePeriod_1Minute, klineData_1Minute); dic.Add(KLinePeriod.KLinePeriod_5Minute, klineData_5Minute); dic.Add(KLinePeriod.KLinePeriod_15Minute, klineData_15Minute); dic.Add(KLinePeriod.KLinePeriod_1Day, klineData_1Day); KLineDataForward_TickPeriod klineDataForward = new KLineDataForward_TickPeriod(dic, CommonData.GetDataReader(), code, tradingDays, KLinePeriod.KLinePeriod_1Minute); return(klineDataForward); }
private KLineData_RealTime GetKLineData_RealTime(IKLineData klineData, ITickData tickData, double time) { KLineData_RealTime klineData_RealTime = new KLineData_RealTime(klineData); int klineIndex = IndexOfTime(klineData_RealTime, klinePeriod, time, date); int tickIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, time, true); double klineTime = klineData_RealTime.Arr_Time[klineIndex]; int startTickIndex; if (klinePeriod.PeriodType == KLineTimeType.DAY) { startTickIndex = 0; } else { startTickIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, klineTime); } KLineBar klineBar = GetKLineBar(tickData, startTickIndex, tickIndex); klineData_RealTime.ChangeCurrentBar(klineBar, klineIndex); return(klineData_RealTime); }
public void Change(string code, double time, KLinePeriod period) { if (this.code == code && this.period.Equals(period) && IsInCurrentKLineData(time)) { ChangeTime(time); return; } dataCache_Code = dataCacheFac.CreateCache_Code(code); int extendBefore = 30; int extendAfter = 30; if (period.PeriodType == KLineTimeType.MINUTE) { extendBefore = 30; extendAfter = 30; } else if (period.PeriodType == KLineTimeType.HOUR) { extendBefore = 100; extendAfter = 100; } else if (period.PeriodType == KLineTimeType.DAY) { extendBefore = 2000; extendAfter = 2000; } int date = (int)time; int start = (int)TimeUtils.AddDays(date, -extendBefore); int end = (int)TimeUtils.AddDays(date, extendAfter); KLineData data = (KLineData)dataReaderFac.KLineDataReader.GetData(code, start, end, period); this.klineData = new KLineData_RealTime(data); this.code = code; this.period = period; ChangeTime(time); }
public void TestAdjustKLineDataByKLineData() { DataReaderFactory fac = ResourceLoader.GetDefaultDataReaderFactory(); IKLineData klineData_1Minute = fac.KLineDataReader.GetData("m05", 20120104, 20120110, KLinePeriod.KLinePeriod_1Minute); KLineData_RealTime realtimeKLineData_1Minute = new KLineData_RealTime(klineData_1Minute); IKLineData klineData_15Minute = fac.KLineDataReader.GetData("m05", 20120104, 20120110, KLinePeriod.KLinePeriod_15Minute); KLineData_RealTime realtimeKLineData_15Minute = new KLineData_RealTime(klineData_15Minute); realtimeKLineData_1Minute.BarPos = TimeIndeierUtils.IndexOfTime_KLine(klineData_1Minute, 20120104.090000); realtimeKLineData_15Minute.BarPos = TimeIndeierUtils.IndexOfTime_KLine(klineData_1Minute, 20120104.090000); int lastBarPos = realtimeKLineData_1Minute.BarPos; int currentBarPos = lastBarPos + 2; realtimeKLineData_1Minute.BarPos = currentBarPos; Console.WriteLine(realtimeKLineData_15Minute); RealTimeDataNavigateUtils.ForwardKLineDataByForwardedKLineData(realtimeKLineData_1Minute, realtimeKLineData_15Minute, lastBarPos, currentBarPos); Console.WriteLine(realtimeKLineData_15Minute); }
public RealTimeReader_Strategy(IDataPackage_Code dataPackage, ForwardReferedPeriods referedPeriods, ForwardPeriod forwardPeriod) { this.dataPackage = dataPackage; this.code = dataPackage.Code; this.startDate = dataPackage.StartDate; this.endDate = dataPackage.EndDate; this.referedPeriods = referedPeriods; this.forwardPeriod = forwardPeriod; this.allKLineData = new Dictionary <KLinePeriod, KLineData_RealTime>(); for (int i = 0; i < referedPeriods.UsedKLinePeriods.Count; i++) { KLinePeriod period = referedPeriods.UsedKLinePeriods[i]; IKLineData klineData = dataPackage.GetKLineData(period); KLineData_RealTime klineData_RealTime = new KLineData_RealTime(klineData); allKLineData.Add(period, klineData_RealTime); } IList <int> allTradingDays = dataPackage.GetTradingDays(); if (forwardPeriod.IsTickForward) { this.klineDataForward = new HistoryDataForward_Code_TickPeriod(dataPackage, allKLineData, allTradingDays, forwardPeriod.KlineForwardPeriod); } else { KLinePeriod mainPeriod = forwardPeriod.KlineForwardPeriod; KLineData_RealTime mainKLineData = allKLineData[mainPeriod]; this.klineDataForward = new HistoryDataForward_Code_KLinePeriod(code, mainKLineData, allKLineData); } this.klineDataForward.OnRealTimeChanged += KlineDataForward_OnRealTimeChanged; this.klineDataForward.OnTick += KlineDataForward_OnTick; this.klineDataForward.OnBar += KlineDataForward_OnBar; //this.klineDataForward = HistoryDataForwardFactory.CreateHistoryDataForward_Code(dataPackage, referedPeriods, forwardPeriod); //this.klineDataForward.OnTick += KlineDataForward_OnTick; //this.klineDataForward.OnBar += KlineDataForward_OnBar; }
private void Init(IDataPackage_Code dataPackage, ForwardReferedPeriods referedPeriods, ForwardPeriod forwardPeriod) { this.dataPackage = dataPackage; this.referedPeriods = referedPeriods; this.forwardPeriod = forwardPeriod; Dictionary <KLinePeriod, KLineData_RealTime> allKLineData = new Dictionary <KLinePeriod, KLineData_RealTime>(); for (int i = 0; i < referedPeriods.UsedKLinePeriods.Count; i++) { KLinePeriod period = referedPeriods.UsedKLinePeriods[i]; IKLineData klineData = this.dataPackage.GetKLineData(period); KLineData_RealTime klineData_RealTime = new KLineData_RealTime(klineData); allKLineData.Add(period, klineData_RealTime); } //ITimeLineData timelineData = this.dataReader.TimeLineDataReader.GetData(code, startDate); //this.timeLineData_RealTime = new TimeLineData_RealTime(timelineData); IList <int> allTradingDays = dataPackage.GetTradingDays(); if (forwardPeriod.IsTickForward) { //this.historyDataForward = new HistoryDataForward_Code_TickPeriod(dataReader, code, allKLineData, allTradingDays, forwardPeriod.KlineForwardPeriod); this.historyDataForward = new HistoryDataForward_Code_TickPeriod(dataPackage, allKLineData, allTradingDays, forwardPeriod.KlineForwardPeriod); } else { KLinePeriod mainPeriod = forwardPeriod.KlineForwardPeriod; KLineData_RealTime mainKLineData = allKLineData[mainPeriod]; this.historyDataForward = new HistoryDataForward_Code_KLinePeriod(Code, mainKLineData, allKLineData); } this.historyDataForward.OnRealTimeChanged += HistoryDataForward_OnRealTimeChanged; this.historyDataForward.OnTick += KlineDataForward_OnTick; this.historyDataForward.OnBar += KlineDataForward_OnBar; }
private static void Print(IDataForward_Code klineDataForward) { //Console.WriteLine("DayEnd:" + klineDataForward.IsDayEnd // + "|1MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Minute) // + "|5MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_5Minute) // + "|15MinuteEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_15Minute) // + "|DayEnd:" + klineDataForward.IsPeriodEnd(KLinePeriod.KLinePeriod_1Day)); KLineData_RealTime klineData_1 = (KLineData_RealTime)klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute); Console.WriteLine("tick:" + klineDataForward.GetTickData()); Console.WriteLine("1minute:" + klineData_1); Console.WriteLine("1minute_" + klineData_1.GetCurrentBar_Original()); KLineData_RealTime klineData_1Day = (KLineData_RealTime)klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Day); Console.WriteLine("1day:" + klineData_1Day); ITimeLineData timeLineData = klineDataForward.GetTimeLineData(); Console.WriteLine("timeline:" + timeLineData); Assert.AreEqual(klineData_1.End, timeLineData.Price); Assert.AreEqual(klineData_1.Mount, timeLineData.Mount); Assert.AreEqual(klineData_1.Hold, timeLineData.Hold); }
private void ForwardKLineData(KLineData_RealTime klineData) { IKLineBar nextMainBar = mainKLineData.GetBar(mainKLineData.BarPos + 1); int currentBarPos = klineData.BarPos; int nextBarPos = currentBarPos + 1; if (nextBarPos >= klineData.Length) { ForwardBar_CurrentPeriod(klineData, nextMainBar); } else { double nextTime = klineData.Arr_Time[nextBarPos]; double nextMainTime = mainKLineData.Arr_Time[mainKLineData.BarPos + 1]; if (nextMainTime >= nextTime) { ForwardBar_NextPeriod(klineData, nextMainBar); } else { ForwardBar_CurrentPeriod(klineData, nextMainBar); } } }