Exemplo n.º 1
0
        public void TickDataReceived(object sender, ITickData tickData)
        {
            string code = tickData.Code;

            RealTimeDataReceiver_Code realTimeDataReceiver;

            if (dic_Code_RealTimeData.ContainsKey(code))
            {
                realTimeDataReceiver = dic_Code_RealTimeData[code];
                realTimeDataReceiver.Receive(tickData);
            }
            else
            {
                IMarketData     marketData = ((IMarketData)sender);
                List <double[]> openTime   = marketData.GetTradingSession(code, currentTradingDay);
                if (openTime == null)
                {
                    throw new ApplicationException(code + "-" + currentTradingDay + "没有配置开盘时间");
                }
                realTimeDataReceiver = new RealTimeDataReceiver_Code(code, currentTradingDay, dataReader, klinePeriods, openTime);
                dic_Code_RealTimeData.Add(code, realTimeDataReceiver);
            }
            if (RealTimeDataChanged != null)
            {
                RealTimeDataChanged(this, realTimeDataReceiver);
            }
        }
 public void TickDataReceived(object sender, ITickData tickData)
 {
     if (this.tickDataBuilder != null)
     {
         tickDataBuilder.Receive(tickData);
     }
 }
Exemplo n.º 3
0
 private void KlineDataForward_OnTick(object sender, ITickData tickData, int index)
 {
     if (OnTick != null)
     {
         OnTick(this, tickData, index);
     }
 }
Exemplo n.º 4
0
        public ITickData Generate(String variety, int date)
        {
            //String indexCode = variety + "13";
            //ITickData indexdata = GetAdjustedTickData(indexCode, date);
            //if (indexdata != null)
            //    return indexdata;

            List <CodeInfo>  codes        = dataUpdateHelper.GetUpdatedCodes(variety, date);
            List <ITickData> tickDataList = new List <ITickData>();

            for (int i = 0; i < codes.Count; i++)
            {
                CodeInfo  code      = codes[i];
                String    upperCode = code.Code.ToUpper();
                ITickData data      = GetAdjustedTickData(code.Code, date);
                if (data != null)
                {
                    tickDataList.Add(data);
                }
            }
            if (tickDataList.Count == 0)
            {
                return(null);
            }
            List <double[]> openTime = this.dataUpdateHelper.GetUpdatedTradingSessionDetail(codes[0].Code, date);

            return(Generate(variety + "0000", tickDataList, openTime));
        }
Exemplo n.º 5
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++;
            }
        }
Exemplo n.º 6
0
 public static void PrintTickData(ITickData tickData)
 {
     for (int i = 0; i < tickData.Length; i++)
     {
         Console.WriteLine(tickData.GetBar(i));
     }
 }
Exemplo n.º 7
0
        public void TestIndexOfTick_Repeat()
        {
            ITickData tickData = MockDataLoader.GetTickData("m0805", 20070919);

            int index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, true, 0);

            Assert.AreEqual(2416, index);
            index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, true, 1);
            Assert.AreEqual(2417, index);
            index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, true, 2);
            Assert.AreEqual(2418, index);
            index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, true, 3);
            Assert.AreEqual(2419, index);

            //index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, false, 0);
            //Assert.AreEqual(2416, index);
            //index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, false, 1);
            //Assert.AreEqual(2417, index);
            //index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, false, 2);
            //Assert.AreEqual(2418, index);
            //index = TimeIndeierUtils.IndexOfTime_Tick(tickData, 20070919.092414, false, 3);
            //Assert.AreEqual(2419, index);
            //Console.WriteLine(index);
            //Console.WriteLine(tickData.Arr_Time[index]);
            //Console.WriteLine(tickData.GetBar(index));
        }
Exemplo n.º 8
0
 public SingleTickBarWriter(string path, ITickData tickData, int startIndex, int endIndex)
 {
     this.path       = path;
     this.tickData   = tickData;
     this.startIndex = startIndex;
     this.endIndex   = endIndex;
 }
Exemplo n.º 9
0
        private void CalcCurrent(ITickData data, int currentTickIndex, List <ITickData> currentData, int[] mounts, int[] lastIndeies)
        {
            float price      = 0;
            int   mount      = 0;
            int   totalMount = 0;
            int   hold       = 0;
            int   add        = 0;

            for (int i = 0; i < currentData.Count; i++)
            {
                ITickData tickdata = currentData[i];
                if (tickdata == null)
                {
                    continue;
                }
                price      += tickdata.Price * tickdata.Hold;
                mount      += mounts[i];
                totalMount += tickdata.TotalMount;
                hold       += tickdata.Hold;
                if (currentTickIndex == 0)
                {
                    add += tickdata.Hold;
                }
                else
                {
                    add += tickdata.Hold - tickdata.Arr_Hold[lastIndeies[i]];
                }
            }
            price = (float)Math.Round((float)(price / hold), 2);
            data.Arr_Price[currentTickIndex]      = price;
            data.Arr_Mount[currentTickIndex]      = mount;
            data.Arr_TotalMount[currentTickIndex] = totalMount;
            data.Arr_Add[currentTickIndex]        = add;
        }
Exemplo n.º 10
0
        private void SendClose()
        {
            PositionInfo position = SelectedPosition;

            if (position == null)
            {
                MessageBox.Show("请选中要平仓的持仓");
                return;
            }

            string code  = CurrentCode;
            int    mount = CurrentMount;
            float  price = CurrentPrice;

            if (price == 0)
            {
                ITickData tickData = dataNavigater.GetTickData();
                if (position.Side == PositionSide.Long)
                {
                    price = tickData.BuyPrice;
                }
                else
                {
                    price = tickData.SellPrice;
                }
            }
            double orderTime = dataNavigater.Time;

            //OrderInfo order = new OrderInfo(code, orderTime, OpenCloseType.Close, price, mount, position.Side == PositionSide.Long ? OrderSide.Buy : OrderSide.Sell);
            OrderInfo order = new OrderInfo(code, orderTime, OpenCloseType.Close, price, mount, position.Side == PositionSide.Long ? OrderSide.Sell : OrderSide.Buy);

            this.trader.SendOrder(order);
        }
Exemplo n.º 11
0
        public static KLineBar GetKLineBar(IKLineBar klineBar, ITickData tickData, int startIndex, int endIndex)
        {
            KLineBar bar        = new KLineBar();
            ITickBar endTickBar = tickData.GetBar(endIndex);

            bar.Time  = endTickBar.Time;
            bar.Start = klineBar.Start;

            float high  = klineBar.High;
            float low   = klineBar.Low;
            float money = klineBar.Money;
            int   mount = klineBar.Mount;

            for (int i = startIndex; i <= endIndex; i++)
            {
                ITickBar tickBar = tickData.GetBar(i);
                if (high < tickBar.Price)
                {
                    high = tickBar.Price;
                }
                if (low > tickBar.Price)
                {
                    low = tickBar.Price;
                }
                money += tickBar.Mount * tickBar.Price;
                mount += tickBar.Mount;
            }
            bar.High  = high;
            bar.Low   = low;
            bar.End   = endTickBar.Price;
            bar.Money = money;
            bar.Mount = mount;
            bar.Hold  = endTickBar.Hold;
            return(bar);
        }
Exemplo n.º 12
0
 private void MarketData_DataReceived(object sender, ITickData tickData)
 {
     if (TickDataReceived != null)
     {
         TickDataReceived(this, tickData);
     }
 }
Exemplo n.º 13
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);
        }
Exemplo n.º 14
0
        public override void Paint(Graphics g)
        {
            if (dataProvider == null)
            {
                return;
            }
            Rectangle rect = DisplayRect;

            drawFrame(g);

            int x_left = rect.X;
            int y      = rect.Y;

            CurrentInfo chartinfo    = dataProvider.GetCurrentInfo();
            double      lastEndPrice = chartinfo.lastJsPrice;

            Point point = new Point(x_left, y);

            g.DrawString(chartinfo.code, new Font("宋体", 24, FontStyle.Bold), new SolidBrush(ColorConfig.Color_StockInfo), point);

            ITickData tickData = dataProvider.GetCurrentTickData();

            DrawBuySell(g, point, tickData, lastEndPrice);

            int   x_middle = rect.X + rect.Width / 2;
            Point pointl   = DrawContent(g, rect, x_left, x_middle, chartinfo, lastEndPrice, point);

            pointl.X  = rect.X;
            pointl.Y += 26;
            DrawRecentTick(g, pointl, tickData, lastEndPrice);
        }
Exemplo n.º 15
0
        private void DrawRecentTick(Graphics g, Point startPoint, ITickData tickData, double lastEndPrice)
        {
            int   defaultLeft = startPoint.X + 2;
            Point p           = new Point(defaultLeft, startPoint.Y + 2);
            Color titleColor  = ColorUtils.GetColor("#808080");

            g.DrawString("时间", new Font("宋体", 11, FontStyle.Regular), new SolidBrush(titleColor), p);
            p.X += 90;
            g.DrawString("价位", new Font("宋体", 11, FontStyle.Regular), new SolidBrush(titleColor), p);
            p.X += 40;
            g.DrawString("现手", new Font("宋体", 11, FontStyle.Regular), new SolidBrush(titleColor), p);
            p.X += 40;
            g.DrawString("增仓", new Font("宋体", 11, FontStyle.Regular), new SolidBrush(titleColor), p);
            p.X += 40;
            g.DrawString("开平", new Font("宋体", 11, FontStyle.Regular), new SolidBrush(titleColor), p);

            if (tickData == null)
            {
                return;
            }
            //TODO 未考虑周全
            int showCount   = tickData.BarPos >= 15 ? 15 : tickData.BarPos;
            int startBarPos = tickData.BarPos - showCount;

            for (int i = 0; i < showCount; i++)
            {
                ITickBar tickBar     = tickData.GetBar(startBarPos);
                ITickBar lastTickBar = startBarPos <= 0 ? null : tickData.GetBar(startBarPos - 1);
                p.X  = defaultLeft;
                p.Y += 25;
                DrawTickBar(g, p, tickBar, lastTickBar, lastEndPrice);
                startBarPos++;
            }
        }
Exemplo n.º 16
0
        private void TestLoadTickData(string code, int date, string fileName)
        {
            IDataReader dataReader = DataReaderFactory.CreateDataReader(DataCenterUri.URI);
            ITickData   klineData  = dataReader.TickDataReader.GetTickData(code, date);

            AssertUtils.AssertEqual_TickData(fileName, GetType(), klineData);
        }
Exemplo n.º 17
0
 /// <summary>
 /// 数据转换器
 /// </summary>
 /// <param name="data">待转换的tick数据</param>
 /// <param name="klineTimes">目标K线时间队列,需要传入完整时间,如5分钟K线,要传入20140106090000,20140106090500......</param>
 /// <param name="lastEndPrice"></param>
 /// <param name="lastEndHold"></param>
 public DataTransfer_Tick2KLine(ITickData data, IList <double[]> klineTimes, float lastEndPrice, int lastEndHold)
 {
     this.tickData     = data;
     this.klineTimes   = klineTimes;
     this.lastEndPrice = lastEndPrice;
     this.lastEndHold  = lastEndHold;
 }
Exemplo n.º 18
0
        public override void OnTick(object sender, IStrategyOnTickArgument currentData)
        {
            ITickData tickData = currentData.Tick.TickData;

            if (tickData.BarPos == 0)
            {
            }
        }
Exemplo n.º 19
0
 public DayNavigate(DataReaderFactory dataReaderFactory, string code, int date)
 {
     this.dataReaderFactory = dataReaderFactory;
     this.code         = code;
     this.date         = date;
     this.tickData     = dataReaderFactory.TickDataReader.GetTickData(code, date);
     this.timeLineData = dataReaderFactory.TimeLineDataReader.GetData(code, date);
 }
Exemplo n.º 20
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));
        }
Exemplo n.º 21
0
 /// <summary>
 /// 检验tick数据的正确性
 /// </summary>
 /// <param name="tickData"></param>
 /// <param name="newTickData"></param>
 public static void AssertEqual_TickData(ITickData tickData, ITickData newTickData)
 {
     Assert.AreEqual(newTickData.Length, tickData.Length);
     for (int i = 0; i < tickData.Length; i++)
     {
         Assert.AreEqual(newTickData.GetBar(i).ToString(), tickData.GetBar(i).ToString());
     }
 }
Exemplo n.º 22
0
        public bool Forward()
        {
            if (isEnd)
            {
                return(false);
            }

            ITickData currentTickData = forwardData.CurrentTickData;

            if (currentTickData == null || currentTickData.BarPos + 1 >= currentTickData.Length)
            {
                bool forwardNextDay = ForwardNextDay();
                currentTickData = forwardData.CurrentTickData;
                if (currentTickData != null)
                {
                    if (currentTickData.BarPos + 1 < currentTickData.Length)
                    {
                        isDayEnd = false;
                    }
                    isDayStart = true;
                    this.isTradingTimeStart = true;
                    this.isTradingTimeEnd   = false;
                    ForwardNextDay_AttachCode(currentTickData.TradingDay);
                }
                if (forwardNextDay)
                {
                    DealEvents();
                }
                return(forwardNextDay);
            }
            else
            {
                isDayStart = false;
            }

            ForwardToday();
            ForwardToday_AttachCode();
            if (currentTickData.BarPos + 1 >= currentTickData.Length)
            {
                isDayEnd = true;
                KLinePeriod[] periods = dic_KLinePeriod_IsEnd.Keys.ToArray <KLinePeriod>();
                for (int i = 0; i < periods.Length; i++)
                {
                    KLinePeriod period = periods[i];
                    if (period.PeriodType < KLineTimeType.DAY || period.Equals(KLinePeriod.KLinePeriod_1Day))
                    {
                        forwardData.GetKLineData(period).ResetCurrentBar();
                        dic_KLinePeriod_IsEnd[periods[i]] = true;
                    }
                }
            }
            else
            {
                isDayEnd = false;
            }
            DealEvents();
            return(true);
        }
Exemplo n.º 23
0
        //public ITickData GetCurrentTickData()
        //{
        //    return navigate.CurrentTickData;
        //}

        //public int CurrentTickIndex
        //{
        //    get { return navigate.CurrentTickIndex; }
        //}

        //public IGraphicOperator_CurrentInfo GetOperator()
        //{
        //    return graphicOperator;
        //}

        public void ChangeData(CurrentInfo currentInfo, ITickData tickData)
        {
            this.currentInfo = currentInfo;
            this.tickData    = tickData;
            if (OnGraphicDataChange != null)
            {
                OnGraphicDataChange(this, new GraphicDataChangeArgument());
            }
        }
Exemplo n.º 24
0
 public void Receive(ITickData tickData)
 {
     this.tickData = tickData;
     foreach (KLineData_RealTime klineData in this.dic_Period_KLineData.Values)
     {
         klineData.Receive(tickData);
     }
     //this.timeLineData.Receive(tickData);
 }
Exemplo n.º 25
0
        public double GetSellPrice(string code)
        {
            ITickData tickData = this.Account.RealTimeDataReader.GetRealTimeData(code).GetTickData();

            if (tickData != null)
            {
                return(tickData.SellPrice);
            }
            return(GetRealTimeData_Code(code).GetKLineData(KLinePeriod.KLinePeriod_1Minute).End);
        }
Exemplo n.º 26
0
        public void Receive(ITickData tickData)
        {
            string code = tickData.Code;

            if (!dicTickData.ContainsKey(code))
            {
                dicTickData.Add(code, tickData);
                return;
            }
        }
        private static KLineBar GetKLineBar(ITickData tickData, int startIndex, int endIndex)
        {
            KLineBar klineBar = KLineUtils.GetKLineBar(tickData.GetBar(startIndex));

            for (int i = startIndex + 1; i <= endIndex; i++)
            {
                klineBar = KLineUtils.GetKLineBar(klineBar, tickData.GetBar(i));
            }
            return(klineBar);
        }
        private static TimeLineBar GetTimeLineBar(ITickData tickData, int startIndex, int endIndex, float lastEndPrice)
        {
            TimeLineBar timeLineBar = TimeLineUtils.GetTimeLineBar(tickData.GetBar(startIndex), lastEndPrice);

            for (int i = startIndex + 1; i <= endIndex; i++)
            {
                timeLineBar = TimeLineUtils.GetTimeLineBar(timeLineBar, tickData.GetBar(i), lastEndPrice);
            }
            return(timeLineBar);
        }
Exemplo n.º 29
0
        private void onTickDataReceived(object sender, ITickData tickData, ITickBar tickBar)
        {
            RealTimeDataReceiver_Code receiver;
            bool b = dic_Code_Receive.TryGetValue(tickData.Code, out receiver);

            if (b)
            {
                receiver.Receive(tickData, tickBar);
            }
        }
Exemplo n.º 30
0
        private bool isNextOverTime(ITickData data, int currentTickIndex, double time)
        {
            if (currentTickIndex + 1 >= data.Length)
            {
                return(false);
            }
            double nextTickTime = data.Arr_Time[currentTickIndex + 1];

            return(nextTickTime >= time);
        }