private static int IndexOfTime(IKLineData_RealTime klineData, KLinePeriod klinePeriod, double time, int date) { if (klinePeriod.PeriodType == KLineTimeType.DAY) { return(TimeIndeierUtils.IndexOfTime_KLine(klineData.GetKLineData_Original(), date)); } else { int index = TimeIndeierUtils.IndexOfTime_KLine(klineData, time); if (klineData.IsTradingTimeEnd(index)) { double endTime = klineData.GetEndTime(index); if (index >= klineData.Length - 1) { return(index); } double nextStartTime = klineData.Arr_Time[index + 1]; double middleTime = (endTime + nextStartTime) / 2; if (time < middleTime) { return(index); } return(index + 1); } return(index); } }
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 static int GetTimeLineIndex(ITimeLineData_RealTime timeLineData, double time) { if (time < timeLineData.Arr_Time[0]) { return(0); } return(TimeIndeierUtils.IndexOfTime_TimeLine(timeLineData, time)); }
private int FindEndBarPos(ITickData tickData, ITradingTime tradingTime, int periodIndex) { double endTime = tradingTime.GetPeriodTime(periodIndex)[1]; double nextStartTime = tradingTime.GetPeriodTime(periodIndex + 1)[0]; endTime = (endTime + nextStartTime) / 2; return(TimeIndeierUtils.IndexOfTime_Tick(tickData, endTime)); }
public static void ChangeTime_TickData(ITickData_Extend tickData, double time) { if (tickData.Time == time) { return; } int index = TimeIndeierUtils.IndexOfTime_Tick(tickData, time, true); tickData.BarPos = index < 0 ? 0 : index; }
private int IndexOfTime(IKLineData klineData, KLinePeriod klinePeriod, double time, int date) { if (klinePeriod.PeriodType == KLineTimeType.DAY) { return(TimeIndeierUtils.IndexOfTime_KLine(klineData, date)); } else { return(TimeIndeierUtils.IndexOfTime_KLine(klineData, time)); } }
public static void ChangeTime_TimeLineData(ITimeLineData_RealTime timeLineData, double time, ITickData_Extend tickData) { //if (timeLineData.Time == time) // return; int timeLineIndex = GetTimeLineIndex(timeLineData, time); int tickIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, time); double klineTime = timeLineData.Arr_Time[timeLineIndex]; int startTickIndex = GetStartTickIndex(timeLineData, tickData, timeLineIndex); TimeLineBar klineBar = GetTimeLineBar(tickData, startTickIndex, tickIndex, timeLineData.YesterdayEnd); timeLineData.ChangeCurrentBar(klineBar, timeLineIndex); }
private GraphicDrawer_TimeLine InitGraphicDrawer_TimeLine() { this.drawer_TimeLine = new GraphicDrawer_TimeLine(); ITimeLineData timeLineData = compDataController.CurrentRealTimeDataReader_Code.GetTimeLineData(); int barPos = TimeIndeierUtils.IndexOfTime_TimeLine(timeLineData, compData.Time); timeLineData.BarPos = barPos; this.graphicData_TimeLine = GraphicDataFactory.CreateGraphicData_TimeLine(timeLineData); drawer_TimeLine.DataProvider = graphicData_TimeLine; return(this.drawer_TimeLine); }
private PriceShape_Point GetPoint(double time, float price) { if (graphicData is IGraphicData_Candle) { IGraphicData_Candle candleData = (IGraphicData_Candle)graphicData; IKLineData klineData = candleData.GetKLineData(); int index = TimeIndeierUtils.IndexOfTime_KLine(klineData, time); return(new PriceShape_Point(index, price)); } else if (graphicData is IGraphicData_TimeLine) { } return(null); }
private void CheckError(ITickData tickData, IKLineData klineData) { List <int[]> indeies = new List <int[]>(); for (int i = 0; i < klineData.Length; i++) { double startTime = klineData.Arr_Time[i]; double endTime = TimeUtils.AddMinutes(startTime, 1); int startIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, startTime); int endIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, endTime); indeies.Add(new int[] { startIndex, endIndex }); } CheckIndexArr(tickData, indeies); }
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); }
public void ChangeTime(double time) { if (this.currentTime == time) { return; } this.currentTime = time; double splitTime = Math.Round(currentTime, 4); int splitIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, splitTime); int currentTickIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, currentTime); tickData.BarPos = currentTickIndex; currentChart.Time = splitTime; ModifyChart(currentChart, splitIndex, currentTickIndex); }
private static int GetStartTickIndex(ITimeLineData_RealTime timeLineData, ITickData_Extend tickData, int timeLineIndex) { double klineTime = timeLineData.BarPos == timeLineIndex?timeLineData.GetCurrentBar_Original().Time : timeLineData.Arr_Time[timeLineIndex]; int startTickIndex; startTickIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, klineTime, true); if (timeLineData.IsTradingTimeStart(timeLineIndex)) { while (!tickData.IsTradingTimeStart(startTickIndex)) { startTickIndex--; } } return(startTickIndex); }
public static void ChangeTime_KLineData(IKLineData_RealTime klineData_RealTime, int date, double time, ITickData_Extend tickData) { KLinePeriod klinePeriod = klineData_RealTime.Period; int klineIndex = IndexOfTime(klineData_RealTime, klinePeriod, time, date); //if(tickData.TradingDay !=date) // tickData = int tickIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, time, true); if (IsPeriodEnd(klineData_RealTime, klineIndex, tickData, tickIndex)) { klineData_RealTime.BarPos = klineIndex; klineData_RealTime.ResetCurrentBar(); return; } int startTickIndex = GetStartTickIndex(klineData_RealTime, tickData, klinePeriod, klineIndex); KLineBar klineBar = GetKLineBar(tickData, startTickIndex, tickIndex); klineData_RealTime.ChangeCurrentBar(klineBar, klineIndex); }
//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 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 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 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.tickData = dataPackage.GetTickData(date); } int index = TimeIndeierUtils.IndexOfTime_Tick(tickData, time, true); tickData.BarPos = index < 0 ? 0 : index; }
private static int GetStartTickIndex(IKLineData_RealTime klineData_RealTime, ITickData_Extend tickData, KLinePeriod klinePeriod, int klineIndex) { int startTickIndex; if (klinePeriod.PeriodType == KLineTimeType.DAY) { startTickIndex = 0; } else { double klineTime = klineData_RealTime.BarPos == klineIndex?klineData_RealTime.GetCurrentBar_Original().Time : klineData_RealTime.Arr_Time[klineIndex]; startTickIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, klineTime, true); if (klineData_RealTime.IsTradingTimeStart(klineIndex)) { while (!tickData.IsTradingTimeStart(startTickIndex)) { startTickIndex--; } } } return(startTickIndex); }
public int IndexOfTime(double time) { return(TimeIndeierUtils.IndexOfTime_KLine(this, time)); }