Esempio n. 1
0
        private void AssertForwardData(string code, int start, int end, List <string> list_OnBar)
        {
            IDataPackage_Code  dataPackage      = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, start, end, 0, 0);
            List <KLinePeriod> usedKLinePeriods = new List <KLinePeriod>();

            usedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Minute);
            usedKLinePeriods.Add(KLinePeriod.KLinePeriod_5Minute);
            usedKLinePeriods.Add(KLinePeriod.KLinePeriod_15Minute);
            usedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Hour);
            usedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Day);
            ForwardReferedPeriods referedPeriods = new ForwardReferedPeriods(usedKLinePeriods, true, true);

            DataForForward_Code dataForForward = new DataForForward_Code(dataPackage, referedPeriods);
            List <int>          tradingDays    = dataForForward.TradingDayReader.GetAllTradingDays();

            dataForForward.TradingDay = tradingDays[0];
            ForwardDataIndeier indeier   = new ForwardDataIndeier(dataForForward);
            IKLineData_Extend  klineData = dataForForward.MainKLine;

            int currentBarPos = klineData.BarPos;

            for (int i = 0; i < tradingDays.Count; i++)
            {
                int tradingDay = tradingDays[i];
                dataForForward.TradingDay = tradingDay;
                currentBarPos             = Forward(dataForForward, indeier, tradingDay, currentBarPos, list_OnBar);
            }
        }
Esempio n. 2
0
        private void AssertText(string code, int start, int end, string fileName)
        {
            List <string>      list_OnBar  = new List <string>();
            IDataPackage_Code  datapackage = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, start, end, 0, 0);
            IKLineData_Extend  klineData   = datapackage.GetKLineData(KLinePeriod.KLinePeriod_1Minute);
            ITickData          tickData    = datapackage.GetTickData(start);
            KLineToTickIndeier indeier     = new KLineToTickIndeier(tickData, klineData);

            int lastBarPos;

            for (int i = 0; i < tickData.Length; i++)
            {
                list_OnBar.Add("tick:" + tickData.GetBar(i));
                Console.WriteLine("tick:" + tickData.GetBar(i));
                int pos = indeier.GetKLineBarPosIfFinished(i, out lastBarPos);
                if (pos >= 0)
                {
                    list_OnBar.Add(klineData.Period + ":" + klineData.GetBar(pos));
                    Console.WriteLine(klineData.Period + ":" + klineData.GetBar(pos));
                    for (int m = pos + 1; m <= lastBarPos; m++)
                    {
                        list_OnBar.Add(klineData.Period + ":" + klineData.GetBar(m));
                        Console.WriteLine(klineData.Period + ":" + klineData.GetBar(m));
                        //lastBarPos = 1;
                    }
                }
            }
            AssertUtils.AssertEqual_List(fileName, GetType(), list_OnBar);
        }
Esempio n. 3
0
        private int Forward(DataForForward_Code dataForForward, ForwardDataIndeier indeier, int tradingDay, int klineIndex, List <string> list_OnBar)
        {
            IKLineData_Extend klineData = dataForForward.GetMainKLineData();
            ITickData_Extend  tickData  = dataForForward.CurrentTickData;
            int         lastMainKLineBarPos;
            int         mainBarPos = 0;
            KLinePeriod mainPeriod = dataForForward.MainKLinePeriod;

            for (int i = 0; i < tickData.Length; i++)
            {
                tickData.BarPos = i;
                Console.WriteLine("tick:" + tickData);
                list_OnBar.Add("tick:" + tickData);
                mainBarPos = indeier.GetMainKLineBarPosIfFinished(i, out lastMainKLineBarPos);
                if (mainBarPos < 0)
                {
                    continue;
                }
                PrintData(dataForForward, indeier, klineData, mainBarPos, mainPeriod, list_OnBar);
                if (lastMainKLineBarPos >= 0 && lastMainKLineBarPos != mainBarPos)
                {
                    for (int m = mainBarPos + 1; m <= lastMainKLineBarPos; m++)
                    {
                        PrintData(dataForForward, indeier, klineData, m, mainPeriod, list_OnBar);
                    }
                }
            }
            return(mainBarPos);
        }
Esempio n. 4
0
 private void DealEvent_OnBar()
 {
     if (isDayStart)
     {
         return;
     }
     if (OnBar != null && forwardPeriod.KlineForwardPeriod != null)
     {
         bool isForwardPeriodEnd = dic_KLinePeriod_IsEnd[forwardPeriod.KlineForwardPeriod];
         if (isForwardPeriodEnd)
         {
             barFinishedInfos.Clear();
             for (int i = 0; i < forwardData.ReferedKLinePeriods.Count; i++)
             {
                 KLinePeriod period      = forwardData.ReferedKLinePeriods[i];
                 bool        isPeriodEnd = dic_KLinePeriod_IsEnd[period];
                 if (isPeriodEnd)
                 {
                     IKLineData_Extend klineData = forwardData.GetKLineData(period);
                     int barPos = klineData.BarPos - 1;
                     if (IsDayEnd)
                     {
                         barPos++;
                     }
                     barFinishedInfos.Add(new ForwardOnbar_Info(klineData, barPos));
                 }
             }
             //OnBar(this, mainKlineData, mainKlineData.BarPos);
             OnBar(this, onBarArgument);
         }
     }
 }
Esempio n. 5
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;
            }
        }
Esempio n. 6
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;
                }
            }
        }
Esempio n. 7
0
 public StrategyDrawer(IDataPackage_Code dataPackage, StrategyReferedPeriods referPeriods)
 {
     this.dataPackage = dataPackage;
     foreach (KLinePeriod period in referPeriods.UsedKLinePeriods)
     {
         IKLineData_Extend klineData = dataPackage.GetKLineData(period);
         dic_KLinePeriod_Start.Add(period, klineData.BarPos);
         dic_KLinePeriod_DataKey.Add(period, new KLineKey(dataPackage.Code, dataPackage.StartDate, dataPackage.EndDate, period));
     }
 }
Esempio n. 8
0
        /// <summary>
        /// 得到指定周期的K线
        /// </summary>
        /// <param name="period"></param>
        /// <returns></returns>
        public IKLineData_Extend GetKLineData(KLinePeriod period)
        {
            if (dic_Period_KLineData.ContainsKey(period))
            {
                return(dic_Period_KLineData[period]);
            }
            IKLineData_Extend klineData = dataReader.KLineDataReader.GetData_Extend(code, startDate, endDate, minBefore, minAfter, period);

            dic_Period_KLineData.Add(period, klineData);
            return(klineData);
        }
Esempio n. 9
0
        public void TestGetKLineExtend_Second()
        {
            IDataReader       dataReader = DataCenter.Default.DataReader;
            IKLineData_Extend klineData  = dataReader.KLineDataReader.GetData_Extend("rb1801", 20170801, KLinePeriod.KLinePeriod_5Second);

            //AssertUtils.PrintKLineData(klineData);
            AssertUtils.AssertEqual_KLineData("KLineData_RB1801_20170801_5Second", GetType(), klineData);

            klineData = dataReader.KLineDataReader.GetData_Extend("rb1801", 20170801, KLinePeriod.KLinePeriod_15Second);
            //AssertUtils.PrintKLineData(klineData);
            AssertUtils.AssertEqual_KLineData("KLineData_RB1801_20170801_15Second", GetType(), klineData);
        }
Esempio n. 10
0
        private static double GetEndTime(IKLineData_Extend klineData, int barPos)
        {
            if (klineData.Period.PeriodType >= KLineTimeType.DAY)
            {
                return(klineData.Time);
            }
            double endTime = klineData.GetKLinePeriodEndTime(barPos);

            if (barPos < klineData.Length - 1 && klineData.IsTradingPeriodEnd(barPos))
            {
                endTime = (endTime + klineData.Arr_Time[barPos + 1]) / 2;
            }
            return(endTime);
        }
Esempio n. 11
0
        private void ForwardCurrentBar()
        {
            IKLineData_Extend mainKLineData = this.dataForForward.GetMainKLineData();
            ITickBar          tickBar       = dataForForward.CurrentTickData.GetCurrentBar();

            ForwardCurrentBar(mainKLineData, tickBar);
            foreach (KLinePeriod period in dataForForward.ReferedKLinePeriods)
            {
                if (dataForForward.MainKLinePeriod.Equals(period))
                {
                    continue;
                }
                ForwardCurrentBar(dataForForward.GetKLineData(period), tickBar);
            }
        }
Esempio n. 12
0
        private void Index()
        {
            IKLineData_RealTime mainKLineData = data.GetMainKLineData();
            IKLineData_Extend   klineData     = mainKLineData.GetKLineData_Original();

            for (int i = klineData.BarPos + 1; i < klineData.Length; i++)
            {
                if (i == klineData.Length - 1)
                {
                    IndexEndBarPos();
                    continue;
                }
                double time = klineData.Arr_Time[i];
                IndexKLineData(i, time);
            }
        }
Esempio n. 13
0
        public IKLineData_Extend GetKLineData_Second(int date, KLinePeriod period)
        {
            if (dic_Period_SecondKLineData.ContainsKey(period))
            {
                KLineDataSecond klineData = dic_Period_SecondKLineData[period];
                if (date == klineData.Date)
                {
                    return(klineData.KlineData);
                }
            }
            IKLineData_Extend klineData_Extend = dataReader.KLineDataReader.GetData_Extend(code, date, period);
            KLineDataSecond   klineDataSecond  = new KLineDataSecond();

            klineDataSecond.Date               = date;
            klineDataSecond.KlineData          = klineData_Extend;
            dic_Period_SecondKLineData[period] = klineDataSecond;
            return(klineData_Extend);
        }
Esempio n. 14
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);
            }
        }
Esempio n. 15
0
        private static void DoIndex(List <string> list_OnBar, IKLineData_Extend klineData, ITickData tickData, KLineToTickIndeier indeier)
        {
            int lastBarPos;

            for (int i = 0; i < tickData.Length; i++)
            {
                list_OnBar.Add("tick:" + tickData.GetBar(i));
                Console.WriteLine("tick:" + tickData.GetBar(i));
                int pos = indeier.GetKLineBarPosIfFinished(i, out lastBarPos);
                if (pos >= 0)
                {
                    list_OnBar.Add(klineData.Period + ":" + klineData.GetBar(pos));
                    Console.WriteLine(klineData.Period + ":" + klineData.GetBar(pos));
                    for (int m = pos + 1; m <= lastBarPos; m++)
                    {
                        list_OnBar.Add(klineData.Period + ":" + klineData.GetBar(m));
                        Console.WriteLine(klineData.Period + ":" + klineData.GetBar(m));
                    }
                }
            }
        }
Esempio n. 16
0
 private void DealEvent_OnBar()
 {
     if (OnBar != null && forwardPeriod.KlineForwardPeriod != null)
     {
         bool isForwardPeriodEnd = IsPeriodEnd(forwardPeriod.KlineForwardPeriod);
         if (isForwardPeriodEnd)
         {
             barFinishedInfos.Clear();
             for (int i = 0; i < dataForForward_Code.ReferedKLinePeriods.Count; i++)
             {
                 KLinePeriod period      = dataForForward_Code.ReferedKLinePeriods[i];
                 bool        isPeriodEnd = IsPeriodEnd(period);
                 if (isPeriodEnd)
                 {
                     IKLineData_Extend klineData = dataForForward_Code.GetKLineData(period);
                     barFinishedInfos.Add(new ForwardOnbar_Info(klineData, klineData.BarPos));
                 }
             }
             OnBar(this, onBarArgument);
         }
     }
 }
Esempio n. 17
0
        private void AssertKLineToKLine(string code, int start, int end, List <string> list_OnBar)
        {
            IDataPackage_Code         datapackage = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, start, end);
            IKLineData_Extend         mainKLine   = datapackage.GetKLineData(KLinePeriod.KLinePeriod_1Minute);
            IList <IKLineData_Extend> indexKLines = new List <IKLineData_Extend>();

            indexKLines.Add(datapackage.GetKLineData(KLinePeriod.KLinePeriod_5Minute));
            indexKLines.Add(datapackage.GetKLineData(KLinePeriod.KLinePeriod_15Minute));
            indexKLines.Add(datapackage.GetKLineData(KLinePeriod.KLinePeriod_1Hour));
            indexKLines.Add(datapackage.GetKLineData(KLinePeriod.KLinePeriod_1Day));
            KLineToKLineIndeier indeier = new KLineToKLineIndeier(mainKLine, indexKLines);

            int startMainPos = mainKLine.BarPos;
            int endMainPos   = mainKLine.Length - 1;

            for (int i = startMainPos; i <= endMainPos; i++)
            {
                Console.WriteLine(mainKLine.Period + ":" + mainKLine.GetBar(i));
                list_OnBar.Add(mainKLine.Period + ":" + mainKLine.GetBar(i));
                PrintKLines(i, indeier, indexKLines, list_OnBar);
            }
        }
Esempio n. 18
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));
        }
Esempio n. 19
0
        public void TestExecuteStrategy_MA()
        {
            string code  = "rb1710";
            int    start = 20170601;
            int    end   = 20170603;
            IStrategyExecutor_Single executor = StrategyTestUtils.CreateExecutor_CodePeriod(code, start, end);
            MockStrategy_Ma          strategy = new MockStrategy_Ma();

            executor.Strategy = strategy;
            executor.Run();

            List <float>      floats      = strategy.MAList;
            IDataPackage_Code dataPackage = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, start, end);
            IKLineData_Extend klineData   = dataPackage.GetKLineData(KLinePeriod.KLinePeriod_1Minute);
            List <float>      floats2     = KLineDataUtils.MaList(klineData, klineData.BarPos, klineData.Length - 1, 5);

            for (int i = 0; i < floats.Count; i++)
            {
                Console.WriteLine(floats[i] + "," + floats2[i]);
            }
            AssertUtils.AssertEqual_List(floats2, floats);
        }
Esempio n. 20
0
        public void TestKLineToTick_Days()
        {
            string code  = "RB1710";
            int    start = 20170601;
            int    end   = 20170605;

            List <string>     list_OnBar  = new List <string>();
            IDataPackage_Code datapackage = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, start, end, 0, 0);
            IKLineData_Extend klineData   = datapackage.GetKLineData(KLinePeriod.KLinePeriod_1Minute);

            IList <int>        tradingDays = datapackage.GetTradingDays();
            ITickData          tickData    = datapackage.GetTickData(tradingDays[0]);
            KLineToTickIndeier indeier     = new KLineToTickIndeier(tickData, klineData);

            DoIndex(list_OnBar, klineData, tickData, indeier);

            for (int i = 1; i < tradingDays.Count; i++)
            {
                tickData = datapackage.GetTickData(tradingDays[i]);
                indeier.ChangeTradingDay(tickData);
                DoIndex(list_OnBar, klineData, tickData, indeier);
            }
        }
Esempio n. 21
0
        public IKLineData_RealTime CreateKLineData_RealTime_Second(int date, KLinePeriod period)
        {
            IKLineData_Extend klineData = GetKLineData_Second(date, period);

            return(new KLineDataExtend_RealTime(klineData));
        }
Esempio n. 22
0
 public ForwardOnbar_Info(IKLineData_Extend klineData, int finishedBarPos)
 {
     this.klineData      = klineData;
     this.finishedBarPos = finishedBarPos;
 }
Esempio n. 23
0
 public StrategyOnBarInfo(IKLineData_Extend klineData, int finishedBarPos) : base(klineData, finishedBarPos)
 {
 }
Esempio n. 24
0
 public void ChangeTradingDay(ITickData tickData, IKLineData_Extend klineData)
 {
     this.tickData  = tickData;
     this.klineData = klineData;
     Index();
 }
Esempio n. 25
0
 public KLineToTickIndeier(ITickData tickData, IKLineData_Extend klineData)
 {
     this.tickData  = tickData;
     this.klineData = klineData;
     Index();
 }
Esempio n. 26
0
 public KLineToKLineIndeier(IKLineData_Extend mainKLine, IList <IKLineData_Extend> indexKLines)
 {
     this.mainKLine   = mainKLine;
     this.indexKLines = indexKLines;
     this.Index();
 }
Esempio n. 27
0
        public IKLineData_RealTime CreateKLineData_RealTime(KLinePeriod period)
        {
            IKLineData_Extend klineData = GetKLineData(period);

            return(new KLineDataExtend_RealTime(klineData));
        }
Esempio n. 28
0
 private void ForwardNextBar(IKLineData_Extend mainKLineData)
 {
 }
Esempio n. 29
0
 public KLineDataExtend_RealTime(IKLineData_Extend klineData) : base(klineData)
 {
     //this.klineData_Extend = klineData;
 }
Esempio n. 30
0
 private static void PrintData(DataForForward_Code dataForForward, ForwardDataIndeier indeier, IKLineData_Extend klineData, int mainBarPos, KLinePeriod mainPeriod, List <string> list_OnBar)
 {
     Console.WriteLine(klineData.Period + ":" + klineData.GetBar(mainBarPos));
     list_OnBar.Add(klineData.Period + ":" + klineData.GetBar(mainBarPos));
     for (int m = 0; m < dataForForward.ReferedKLinePeriods.Count; m++)
     {
         KLinePeriod period = dataForForward.ReferedKLinePeriods[m];
         if (mainPeriod.Equals(period))
         {
             continue;
         }
         int barPos = indeier.GetOtherKLineBarPosIfFinished(mainBarPos, period);
         if (barPos >= 0)
         {
             IKLineData otherKLine = dataForForward.GetKLineData(period);
             Console.WriteLine(period + ":" + otherKLine.GetBar(barPos));
             list_OnBar.Add(period + ":" + otherKLine.GetBar(barPos));
         }
     }
     Console.WriteLine("分时线:" + dataForForward.CurrentTimeLineData.GetBar(mainBarPos));
     list_OnBar.Add("分时线:" + dataForForward.CurrentTimeLineData.GetBar(mainBarPos));
 }