Пример #1
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++;
            }
        }
Пример #2
0
 /// <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();
 }
Пример #3
0
        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);
            }
        }
Пример #4
0
 public void Change(IKLineData data, double time)
 {
     this.klineData = (KLineData_RealTime)data;
     this.code      = data.Code;
     this.period    = data.Period;
     this.ChangeTime(time);
 }
Пример #5
0
        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());
        }
Пример #6
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.klineData_RealTime = GetKLineData_RealTime(date, time);
            }
            else
            {
                this.klineData_RealTime = GetKLineData_RealTime(klineData, tickData, time);
            }
        }
Пример #7
0
        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);
        }
Пример #8
0
 private void ForwardToday()
 {
     foreach (KLinePeriod period in dic_Period_KLineData.Keys)
     {
         KLineData_RealTime klineData = dic_Period_KLineData[period];
         ForwardToday_KLineData(klineData, period);
     }
     currentTickData.BarPos++;
 }
Пример #9
0
        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;
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
 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);
     }
 }
Пример #12
0
 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;
         }
     }
 }
Пример #13
0
        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());
        }
Пример #14
0
        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);
        }
Пример #15
0
        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());
        }
Пример #16
0
        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);
        }
Пример #17
0
        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());
        }
Пример #18
0
        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);
        }
Пример #19
0
        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);
        }
Пример #20
0
        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);
        }
Пример #21
0
        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);
        }
Пример #22
0
        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);
        }
Пример #23
0
        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);
        }
Пример #24
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);
        }
Пример #25
0
        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);
        }
Пример #26
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);
        }
Пример #27
0
        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;
        }
Пример #28
0
        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);
        }
Пример #30
0
        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);
                }
            }
        }