Пример #1
0
        private void IndexKLineData(int mainIndex, double time)
        {
            foreach (KLinePeriod period in data.ReferedKLinePeriods)
            {
                if (period.Equals(data.MainKLinePeriod))
                {
                    continue;
                }

                if (period.PeriodType >= KLineTimeType.DAY)
                {
                    if (period.Period == 1)
                    {
                        IKLineData_Extend mainKlineData = data.GetMainKLineData();
                        //if (mainKlineData.IsDayEnd(mainIndex))
                        if (mainKlineData.IsDayStart(mainIndex))
                        {
                            int currentDayIndex = GetCurrentIndex(period);
                            AddOnBarData(mainIndex - 1, period, currentDayIndex);
                            dic_Period_CurrentIndex[period] = currentDayIndex + 1;
                        }
                    }
                    continue;
                }

                IKLineData_RealTime klineData = data.GetKLineData(period);
                int barIndex = FindBarIndex(klineData, time, GetCurrentIndex(period));
                if (barIndex >= klineData.BarPos)
                {
                    int endBarMainKLineIndex = mainIndex - 1;
                    AddOnBarData(endBarMainKLineIndex, period, barIndex);
                    dic_Period_CurrentIndex[period] = barIndex;
                }
            }
        }
Пример #2
0
        private void RealTimeReader_OnBar(object sender, IForwardOnBarArgument argument)
        {
            OnBar_ReferedStrategies(this.Strategy, argument);
            IKLineData_Extend mainKLineData = argument.MainBar.KLineData;

            if (this.strategyExecutorInfo != null)
            {
                this.strategyExecutorInfo.CurrentKLineData = mainKLineData;
            }
            if (HasBarFinishedEvent())
            {
                if (tempBarFinishedArguments == null)
                {
                    tempBarFinishedArguments = new StrategyBarFinishedArguments(this.strategyExecutorInfo);
                }
                DealBarFinishEvent(tempBarFinishedArguments);
            }
            if (HasDayFinishedEvent() && mainKLineData.IsDayEnd())
            {
                if (tempDayFinishedArguments == null)
                {
                    tempDayFinishedArguments = new StrategyDayFinishedArguments(this.strategyExecutorInfo);
                }
                DealDayFinishEvent(tempDayFinishedArguments);
            }

            this.strategyExecutorInfo.CurrentKLineData = mainKLineData;
            this.strategyExecutorInfo.CurrentDay       = mainKLineData.GetTradingTime().TradingDay;

            if (mainKLineData.IsDayStart())
            {
                this.strategyExecutorInfo.CurrentDayIndex++;
                //this.strategyExecutorInfo.CurrentDay = mainKLineData.GetTradingTime().TradingDay;
            }
        }
Пример #3
0
        public void TestKLineDataExtendDayStart()
        {
            string            code      = "RB1710";
            int               start     = 20170601;
            int               end       = 20170603;
            IKLineData_Extend klineData = DataCenter.Default.DataReader.KLineDataReader.GetData_Extend(code, start, end, KLinePeriod.KLinePeriod_1Minute);
            int               barPos    = klineData.BarPos;

            for (int i = 0; i < klineData.Length; i++)
            {
                Console.WriteLine(i + ":" + klineData.GetBar(i).ToString());
            }

            Assert.IsTrue(klineData.IsDayStart());
            klineData.BarPos += 1;
            Assert.IsFalse(klineData.IsDayStart());
            Assert.IsFalse(klineData.IsDayStart(barPos + 1));

            Assert.IsFalse(klineData.IsDayEnd(12));
            Assert.IsTrue(klineData.IsDayEnd(344));
            Assert.IsTrue(klineData.IsDayStart(345));
        }
Пример #4
0
        public void TestTimeLineToKLine()
        {
            string code  = "RB1710";
            int    start = 20170601;
            int    end   = 20170605;

            IDataPackage_Code datapackage = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, start, end, 0, 0);
            IKLineData_Extend klineData   = datapackage.GetKLineData(KLinePeriod.KLinePeriod_1Minute);
            //IKLineData_Extend klineData = datapackage.GetKLineData(KLinePeriod.KLinePeriod_5Minute);
            IList <int>            tradingDays  = datapackage.GetTradingDays();
            ITimeLineData          timeLineData = datapackage.GetTimeLineData(tradingDays[0]);
            TimeLineToKLineIndeier indeier      = new TimeLineToKLineIndeier(klineData, timeLineData);

            int  tradingDayIndex = 0;
            bool isFirst         = true;

            for (int i = klineData.BarPos; i < klineData.Length; i++)
            {
                if (!isFirst && klineData.IsDayStart(i))
                {
                    tradingDayIndex++;
                    if (tradingDayIndex >= tradingDays.Count)
                    {
                        return;
                    }
                    timeLineData = datapackage.GetTimeLineData(tradingDays[tradingDayIndex]);
                    indeier.ChangeTradingDay(timeLineData);
                }
                isFirst          = false;
                klineData.BarPos = i;
                Console.WriteLine(klineData.Period + ":" + klineData.GetBar(i));
                int barPos = indeier.GetTimeLineBarPosIfFinished(i);
                if (barPos >= 0)
                {
                    timeLineData.BarPos = barPos;
                    Console.WriteLine("分时线:" + timeLineData.GetBar(barPos));
                }
                Assert.AreEqual(klineData.Time, timeLineData.Time);
                Assert.AreEqual(klineData.End, timeLineData.Price);
            }
        }
Пример #5
0
        private void IndexKLineData(int mainIndex, double time)
        {
            foreach (IKLineData kline in indexKLines)
            {
                if (kline.Equals(mainKLine))
                {
                    continue;
                }
                KLinePeriod period = kline.Period;
                if (period.PeriodType >= KLineTimeType.DAY)
                {
                    if (period.Period == 1)
                    {
                        //if (mainKLine.IsDayEnd(mainIndex))
                        if (mainKLine.IsDayStart(mainIndex))
                        {
                            int currentDayIndex = GetCurrentIndex(period);
                            if (currentDayIndex == 0)
                            {
                                currentDayIndex = kline.BarPos;
                            }
                            AddOnBarData(mainIndex - 1, period, currentDayIndex);
                            dic_Period_CurrentIndex[period] = currentDayIndex + 1;
                        }
                    }
                    //TODO
                    continue;
                }

                int barIndex = FindBarIndex(kline, time, GetCurrentIndex(period));
                if (barIndex >= kline.BarPos)
                {
                    int endBarMainKLineIndex = mainIndex - 1;
                    AddOnBarData(endBarMainKLineIndex, period, barIndex);
                    dic_Period_CurrentIndex[period] = barIndex;
                }
            }
        }