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_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 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++; } }
//private KLineDataIndeier klineDataIndeier; public void ChangeTime(double time) { if (this.time == time) { return; } if (!IsInCurrentKLineData(time)) { Change(code, time, period); return; } RefreshChartBuilder(time); this.time = time; this.currentKLineIndex = TimeIndeierUtils.IndexOfTime_KLine(klineData, time); this.chartBuilder.ChangeTime(time); IKLineBar chart = this.chartBuilder.GetCurrentChart(); klineData.SetRealTimeData(chart, currentKLineIndex); }
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 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 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 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 void ForwardBar_NextPeriod(KLineData_RealTime klineData, IKLineBar klineBar) { klineData.BarPos++; klineData.SetRealTimeData(klineBar); }