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);
     }
 }
Esempio n. 2
0
        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));
 }
Esempio n. 4
0
        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;
        }
Esempio n. 6
0
 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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
 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);
 }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 15
0
        //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);
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
        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);
        }
Esempio n. 20
0
 public int IndexOfTime(double time)
 {
     return(TimeIndeierUtils.IndexOfTime_KLine(this, time));
 }