public void TestKLineDataForward_Tick()
        {
            printStrs_Forward_Tick.Clear();
            string code    = "RB1710";
            int    start   = 20170601;
            int    endDate = 20170603;

            IDataForward_Code klineDataForward = GetKLineDataForward(code, start, endDate);

            klineDataForward.OnBar  += KlineDataForward_OnBar;
            klineDataForward.OnTick += KlineDataForward_OnTick;
            DateTime prevtime = DateTime.Now;

            while (klineDataForward.Forward())
            {
            }

            DateTime time = DateTime.Now;
            TimeSpan span = time.Subtract(prevtime);

            Console.WriteLine(span.Minutes * 60 * 1000 + span.Seconds * 1000 + span.Milliseconds);
            //ITimeLineData timeLineData = klineDataForward.GetTimeLineData();
            //for(int i = 0; i < timeLineData.Length; i++)
            //{
            //    ITimeLineBar timeLineBar = timeLineData.GetBar(i);
            //    Console.WriteLine(timeLineBar);
            //}
            AssertUtils.AssertEqual_List("forward_tick", GetType(), printStrs_Forward_Tick);
            printStrs_Forward_Tick.Clear();
        }
示例#2
0
        public void TestTrade_Minute()
        {
            string            code               = "RB1710";
            int               startDate          = 20170601;
            int               endDate            = 20170605;
            IDataForward_Code historyDataForward = ForwardDataGetter.GetHistoryDataForward_Code(code, startDate, endDate, false);
            IAccount          account            = DataCenter.Default.AccountManager.CreateAccount(100000, historyDataForward);

            account.OnReturnOrder += Account_OnReturnOrder;
            account.OnReturnTrade += Account_OnReturnTrade;
            account.Open(code, 3099, market.OrderSide.Buy, 10);
            account.Open(code, 3095, market.OrderSide.Buy, 10);
            int index = 0;

            while (index < 200)
            {
                historyDataForward.Forward();
                index++;
                if (isOpen && historyDataForward.Price >= 3102)
                {
                    account.Close(code, 3102, market.OrderSide.Sell, 10);
                    account.Close(code, 3105, market.OrderSide.Sell, 10);
                }
                //Console.WriteLine(historyDataForward.GetTickData());
            }
            Console.WriteLine(account);
            Assert.AreEqual(101180, account.Money);
        }
示例#3
0
        private static IDataForward_Code 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);

            IDataPackage_Code     dataPackage    = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, start, endDate);
            ForwardReferedPeriods referedPeriods = new ForwardReferedPeriods();

            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Minute);
            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_5Minute);
            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_15Minute);
            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Day);
            referedPeriods.UseTickData = true;

            ForwardPeriod     forwardPeriod    = new ForwardPeriod(true, KLinePeriod.KLinePeriod_1Minute);
            IDataForward_Code klineDataForward = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(dataPackage, referedPeriods, forwardPeriod);

            //new HistoryDataForward_Code_TickPeriod(, code, periods, KLinePeriod.KLinePeriod_1Minute);
            return(klineDataForward);
        }
示例#4
0
        /// <summary>
        /// 得到指定的
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public IDataForward_Code GetHistoryDataForward(string code)
        {
            IDataForward_Code value = null;

            //dic_Code_Forward.TryGetValue(code, out value);
            return(value);
        }
示例#5
0
        public void TestSaveLoad_DataForward_Code()
        {
            string code      = "rb1710";
            int    startDate = 20170601;
            int    endDate   = 20170602;

            ForwardPeriod         forwardPeriod  = new ForwardPeriod(true, KLinePeriod.KLinePeriod_1Minute);
            ForwardReferedPeriods referedPeriods = new ForwardReferedPeriods(new KLinePeriod[] { KLinePeriod.KLinePeriod_1Minute, KLinePeriod.KLinePeriod_15Minute, KLinePeriod.KLinePeriod_1Hour, KLinePeriod.KLinePeriod_1Day }, true, false);
            IDataForward_Code     dataForward    = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(code, startDate, endDate, referedPeriods, forwardPeriod);

            for (int i = 0; i < 100; i++)
            {
                dataForward.Forward();
            }
            Console.WriteLine(XmlUtils.ToString(dataForward));
            XmlElement root = GetXmlRoot();

            dataForward.Save(root);

            IDataForward_Code dataForward2 = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(root);

            for (int i = 0; i < 100; i++)
            {
                dataForward.Forward();
                dataForward2.Forward();
            }

            Console.WriteLine(XmlUtils.ToString(dataForward2));
            Assert.AreEqual(dataForward.Time, dataForward2.Time);
        }
示例#6
0
文件: Account.cs 项目: wanwei/sc2
 public Account(string accountId, double money, IDataForward_Code historyDataForward_Code)
 {
     this.accountId               = accountId;
     this.accountTrade            = new AccountTrade(money);
     this.priceGetter             = new PriceGetter_HistoryDataForward_Code(historyDataForward_Code);
     this.priceGetter.timeChange += PriceGetter_timeChange;
 }
示例#7
0
        private IDataForward_Code GetDataForward()
        {
            if (isTickForward)
            {
                return(dataForward);
            }
            if (this.dataForward != null)
            {
                this.dataForward.NavigateTo(Time);
                return(this.dataForward);
            }
            ForwardPeriod         forwardPeriod  = new ForwardPeriod(true, KLinePeriod.KLinePeriod_1Minute);
            ForwardReferedPeriods referedPeriods = new ForwardReferedPeriods();

            referedPeriods.UseTickData = true;
            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Minute);
            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_5Minute);
            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_15Minute);
            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Hour);
            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Day);
            this.dataForward = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(this.DataPackage, referedPeriods, forwardPeriod);
            this.dataForward.Forward();
            this.dataForward.NavigateTo(this.Time);
            this.dataForward.OnRealTimeChanged += DataForward_OnRealTimeChanged;
            return(this.dataForward);
        }
        private IDataForward_Code PrepareDataForward()
        {
            IDataForward_Code dataForward = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(dataPackage, ReferedPeriods, ForwardPeriod);

            dataForward.OnBar  += RealTimeReader_OnBar;
            dataForward.OnTick += RealTimeReader_OnTick;
            return(dataForward);
        }
示例#9
0
        public void TestAccountSave()
        {
            string            code               = "RB1710";
            int               startDate          = 20170601;
            int               endDate            = 20170605;
            IDataForward_Code historyDataForward = ForwardDataGetter.GetHistoryDataForward_Code(code, startDate, endDate, true);

            historyDataForward.Forward();
            IAccount account = DataCenter.Default.AccountManager.CreateAccount(100000, historyDataForward);

            account.AccountSetting.TradeType = AccountTradeType.MARKETPRICE;
            account.OnReturnOrder           += Account_OnReturnOrder;
            account.OnReturnTrade           += Account_OnReturnTrade;
            account.Open(code, 3099, market.OrderSide.Buy, 10);
            account.Open(code, 3095, market.OrderSide.Buy, 10);
            int index = 0;

            while (index < 2000)
            {
                historyDataForward.Forward();
                index++;
                if (isOpen && historyDataForward.GetTickData().SellPrice >= 3102)
                {
                    account.Close(code, 3102, market.OrderSide.Sell, 10);
                    account.Close(code, 3105, market.OrderSide.Sell, 10);
                }
                //Console.WriteLine(historyDataForward.GetTickData());
            }

            account.Open(code, 3105, market.OrderSide.Buy, 10);
            account.Open(code, 3025, market.OrderSide.Buy, 10);

            for (int i = 0; i < 100; i++)
            {
                historyDataForward.Forward();
            }

            XmlElement root = GetXmlRoot();

            account.Save(root);

            Account account2 = (Account)DataCenter.Default.AccountManager.CreateAccount(root);

            //Console.WriteLine(account);
            //Console.WriteLine(account2);
            Assert.AreEqual(XmlUtils.ToString(account), XmlUtils.ToString(account2));

            IDataForward_Code historyDataForward2 = ForwardDataGetter.GetHistoryDataForward_Code(code, startDate, endDate, true);

            historyDataForward2.NavigateTo(account2.Time);
            account2.BindRealTimeReader(historyDataForward2);
            //IDataForward_Code historyDataForward2 = account2.DataForward_Code;
            for (int i = 0; i < 100; i++)
            {
                historyDataForward2.Forward();
            }
            Console.WriteLine(account2);
        }
        private void KlineDataForward_OnTick(object sender, IForwardOnTickArgument argument)
        {
            IDataForward_Code klineDataForward = (IDataForward_Code)sender;

            //Console.WriteLine("tick:" + klineDataForward.GetTickData());
            //Console.WriteLine("timeline:"+klineDataForward.GetTimeLineData());
            Console.WriteLine(klineDataForward.GetTimeLineData());
            printStrs_Forward_TimeLine.Add(klineDataForward.GetTimeLineData().ToString());
        }
        private static void PrintOnBar(IDataForward_Code klineDataForward)
        {
            Console.WriteLine("tick:" + klineDataForward.GetTickData());
            Console.WriteLine("1minute:" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute));
            Console.WriteLine("5minute:" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_5Minute));
            Console.WriteLine("15minute:" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_15Minute));
            Console.WriteLine("1day:" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Day));
            ITimeLineData timeLineData = klineDataForward.GetTimeLineData();

            Console.WriteLine("timeline:" + timeLineData);
        }
示例#12
0
        public bool Forward(ForwardPeriod forwardPeriod)
        {
            if (!forwardPeriod.IsTickForward)
            {
                return(Forward(forwardPeriod.KlineForwardPeriod));
            }
            IDataForward_Code dataForward = GetDataForward();

            isTickForward = true;
            return(dataForward.Forward());
        }
示例#13
0
        private double GetNextTime(IDataForward_Code forward_Code)
        {
            ITickData tickData = forward_Code.GetTickData();

            if (tickData == null)
            {
                return(TIME_END);
            }
            int nextBarPos = tickData.BarPos;

            return(-1);
        }
示例#14
0
 private bool ExecuteStrategy(IDataForward_Code realTimeReader)
 {
     //执行策略
     while (!realTimeReader.IsEnd)
     {
         realTimeReader.Forward();
         if (isCancel)
         {
             return(false);
         }
     }
     return(true);
 }
示例#15
0
        public PriceGetter_HistoryDataForward_Code(IDataForward_Code historyDataForward_Code)
        {
            if (historyDataForward_Code.ForwardPeriod.IsTickForward)
            {
                this.priceGetter = new PriceGetter_HistoryDataForward_Code_Tick(historyDataForward_Code);
            }
            else
            {
                this.priceGetter = new PriceGetter_HistoryDataForward_Code_KLine(historyDataForward_Code);
            }

            this.priceGetter.timeChange += PriceGetter_timeChange;
        }
        private void KlineDataForward_OnTick1(object sender, IForwardOnTickArgument argument)
        {
            IDataForward_Code klineDataForward = (IDataForward_Code)sender;
            string            txt = "tick:" + argument.TickInfo.TickBar;

            printStrs_Forward_TimeInfo_OnTick.Add(txt);
            Console.WriteLine(txt);
            txt = "tradingTimeStart:" + klineDataForward.IsTradingTimeStart
                  + "|tradingTimeEnd:" + klineDataForward.IsTradingTimeEnd
                  + "|dayStart:" + klineDataForward.IsDayStart
                  + "|dayEnd:" + klineDataForward.IsDayEnd;
            Console.WriteLine(txt);
            printStrs_Forward_TimeInfo_OnTick.Add(txt);
        }
示例#17
0
        public void TestRealTimeReader_OnTick()
        {
            string            code           = "RB1710";
            int               start          = 20170601;
            int               endDate        = 20170610;
            IDataForward_Code realTimeReader = GetRealTimeReader(code, start, endDate, true);

            realTimeReader.OnTick += RealTimeReader_OnTick;
            realTimeReader.OnBar  += RealTimeReader_OnBar;
            while (!realTimeReader.IsEnd)
            {
                realTimeReader.Forward();
                Console.WriteLine("timeline:" + realTimeReader.GetTimeLineData());
            }
        }
示例#18
0
        public void TestRealTimeReader()
        {
            string code    = "RB1710";
            int    start   = 20170601;
            int    endDate = 20170610;

            IDataForward_Code realTimeReader = GetRealTimeReader(code, start, endDate, false);

            while (!realTimeReader.IsEnd)
            {
                realTimeReader.Forward();
                IKLineData klineData = realTimeReader.GetKLineData(KLinePeriod.KLinePeriod_1Minute);
                Console.WriteLine(klineData);
            }
        }
        private void KlineDataForward_OnBar1(object sender, IForwardOnBarArgument argument)
        {
            IDataForward_Code klineDataForward = (IDataForward_Code)sender;

            //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:" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute));
            Console.WriteLine("tradingTimeStart:" + klineDataForward.IsTradingTimeStart
                              + "|tradingTimeEnd:" + klineDataForward.IsTradingTimeEnd
                              + "|dayStart:" + klineDataForward.IsDayStart
                              + "|dayEnd:" + klineDataForward.IsDayEnd);
        }
示例#20
0
        private static void AddToList(List <string> list, IDataForward_Code 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.GetCurrentBar_Original());
        }
示例#21
0
        public override void Run()
        {
            if (this.state != StrategyExecutorState.NotStart)
            {
                return;
            }
            lock (lockRunObject)
            {
                if (this.state != StrategyExecutorState.NotStart)
                {
                    return;
                }

                if (ReferedPeriods == null)
                {
                    throw new ApplicationException("策略运行时引用周期为空" + dataPackage);
                }
                if (ForwardPeriod == null)
                {
                    throw new ApplicationException("策略运行时前进周期为空" + dataPackage);
                }

                //创建前进器
                this.dataForward = PrepareDataForward();
                //创建StrategyHelper
                this.strategyHelper = PrepareStrategyHelper();
                if (Strategy is StrategyAbstract)
                {
                    ((StrategyAbstract)Strategy).StrategyHelper = StrategyHelper;
                }

                //开始执行
                this.state = StrategyExecutorState.Running;
                ExecuteStrategyStart(dataForward);
                if (isCancel)
                {
                    DealCancelEvent();
                    return;
                }
                ExecuteStrategy(dataForward);
                if (isCancel)
                {
                    DealCancelEvent();
                    return;
                }
                ExecuteStrategyEnd(dataForward);
            }
        }
        private void KlineDataForward_OnTick(object sender, IForwardOnTickArgument argument)
        {
            string txt = "tick:" + argument.TickInfo.TickBar;

            printStrs_Forward_Tick.Add(txt);
            Console.WriteLine(txt);

            IDataForward_Code klineDataForward = (IDataForward_Code)sender;
            double            price            = argument.TickInfo.TickData.Price;

            Assert.AreEqual(price, klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute).End);
            Assert.AreEqual(price, klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_5Minute).End);
            Assert.AreEqual(price, klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_15Minute).End);
            Assert.AreEqual(price, klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Day).End);
            Assert.AreEqual(price, klineDataForward.GetTimeLineData().Price);
        }
示例#23
0
        //[TestMethod]
        public void TestHistoryDataForward_Play()
        {
            string code    = "RB1710";
            int    start   = 20170601;
            int    endDate = 20170601;

            IDataForward_Code realTimeReader = ForwardDataGetter.GetHistoryDataForward_Code(code, start, endDate, true);

            realTimeReader.OnTick += RealTimeReader_OnTick;
            realTimeReader.NavigateTo(20170531.210011);
            realTimeReader.Play();
            while (realTimeReader.Time < 20170531.210015)
            {
            }
            realTimeReader.Pause();
        }
示例#24
0
        //[TestMethod]
        public void TestKLineData_Play()
        {
            string code    = "RB1710";
            int    start   = 20170601;
            int    endDate = 20170601;

            IDataForward_Code klineDataForward = GetKLineDataForward(code, start, endDate);

            klineDataForward.OnTick += KlineDataForward_OnTick;
            Console.WriteLine(klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute));
            klineDataForward.Play();
            while (klineDataForward.Time < 20170531.210005)
            {
            }
            klineDataForward.Pause();
        }
示例#25
0
        public static IDataForward_Code GetHistoryDataForward_Code(string code, int startDate, int endDate, bool useTickData, bool useTimeLineData, IList <KLinePeriod> klinePeriods)
        {
            ForwardReferedPeriods referedPeriods = new ForwardReferedPeriods();

            referedPeriods.UseTimeLineData = useTimeLineData;
            referedPeriods.UseTickData     = useTickData;
            referedPeriods.UsedKLinePeriods.AddRange(klinePeriods);

            ForwardPeriod forwardPeriod = new ForwardPeriod(useTickData, referedPeriods.GetMinPeriod());

            IDataPackage_Code dataPackage = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, startDate, endDate);
            //DataPackageFactory.CreateDataPackage(GetDataReader(), code, startDate, endDate);
            IDataForward_Code realTimeReader = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(dataPackage, referedPeriods, forwardPeriod);

            return(realTimeReader);
        }
示例#26
0
        public DataForward(IDataForwardFactory fac, IDataPackage_Code[] dataPackage, ForwardReferedPeriods[] referedPeriods, ForwardPeriod forwardPeriod)
        {
            this.dataPackage    = dataPackage;
            this.referedPeriods = referedPeriods;
            this.forwardPeriod  = forwardPeriod;
            this.tradingDays    = dataPackage[0].GetTradingDays();

            this.historyDataForwards = new List <IDataForward_Code>();

            for (int i = 0; i < dataPackage.Length; i++)
            {
                ForwardReferedPeriods referedPeriod           = referedPeriods[i];
                ForwardPeriod         currentForwardPeriod    = new ForwardPeriod(referedPeriod.UseTickData, referedPeriod.GetMinPeriod());
                IDataForward_Code     historyDataForward_Code = fac.CreateDataForward_Code(dataPackage[i], referedPeriod, currentForwardPeriod);
                this.historyDataForwards.Add(historyDataForward_Code);
            }
        }
        //[TestMethod]
        public void TestKLineDataForward_Tick_Long()
        {
            printStrs_Forward_Tick.Clear();
            //string code = "RB1710";
            //int start = 20170401;
            //int endDate = 20170803;
            string code    = "RB0000";
            int    start   = 20150401;
            int    endDate = 20170803;

            IDataForward_Code klineDataForward = GetKLineDataForward(code, start, endDate);

            klineDataForward.OnBar  += KlineDataForward_OnBar_Long;
            klineDataForward.OnTick += KlineDataForward_OnTick_Long;
            while (klineDataForward.Forward())
            {
            }
        }
        private static IDataForward_Code GetKLineDataForward(string code, int start, int endDate)
        {
            IDataPackage_Code     dataPackage    = DataCenter.Default.DataPackageFactory.CreateDataPackage_Code(code, start, endDate);
            ForwardReferedPeriods referedPeriods = new ForwardReferedPeriods();

            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Minute);
            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_5Minute);
            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_15Minute);
            referedPeriods.UsedKLinePeriods.Add(KLinePeriod.KLinePeriod_1Day);
            referedPeriods.UseTickData     = true;
            referedPeriods.UseTimeLineData = true;

            ForwardPeriod     forwardPeriod    = new ForwardPeriod(true, KLinePeriod.KLinePeriod_1Minute);
            IDataForward_Code klineDataForward = DataCenter.Default.HistoryDataForwardFactory.CreateDataForward_Code(dataPackage, referedPeriods, forwardPeriod);

            //new HistoryDataForward_Code_TickPeriod(, code, periods, KLinePeriod.KLinePeriod_1Minute);
            return(klineDataForward);
        }
示例#29
0
        public void TestKLineDataForward_OnBar()
        {
            list_OnBar.Clear();
            string code    = "RB1710";
            int    start   = 20170601;
            int    endDate = 20170603;

            IDataForward_Code klineDataForward = GetDataForward(code, start, endDate);

            klineDataForward.OnBar += KlineDataForward_OnBar;
            list_OnBar.Add(KLinePeriod.KLinePeriod_1Minute + ":" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute));
            Console.WriteLine(KLinePeriod.KLinePeriod_1Minute + ":" + klineDataForward.GetKLineData(KLinePeriod.KLinePeriod_1Minute));
            while (klineDataForward.Forward())
            {
            }

            AssertUtils.AssertEqual_List("forward_kline", GetType(), list_OnBar);
        }
        public void TestTickAttachTick()
        {
            int start   = 20170601;
            int endDate = 20170602;
            //string code = "A0401";
            //int start = 20040106;
            //int endDate = 20040106;

            IDataForward_Code historyDataForward = ForwardDataGetter.GetHistoryDataForward_Code(code, start, endDate, true, true);

            historyDataForward.AttachOtherData(code2);
            //historyDataForward.OnBar += HistoryDataForward_OnBar;
            historyDataForward.OnTick += HistoryDataForward_OnTick;
            //historyDataForward.OnTick += KlineDataForward_OnTick;
            while (historyDataForward.Forward())
            {
            }
        }