Exemplo n.º 1
0
        private ChartItemCollection CreateChartItemCollection(ChartItemType type, IEnumerable <ChartItem> chartItems, CollectionId id, IPen pen1, IPen pen2)
        {
            ChartItemCollection coll = null;

            if (type == ChartItemType.Linear)
            {
                coll = new ChartItemCollection(id, chartItems, pen1, null, true);
            }
            else if (type == ChartItemType.Candle)
            {
                coll = new StockItemCollection(id, chartItems.OfType <StockItem>(), pen1, pen2, null);
            }
            else if (type == ChartItemType.Volumn)
            {
                coll = new VolumnItemCollection(id, chartItems.OfType <VolumnItem>(), pen1, pen2);
            }
            else if (type == ChartItemType.Time)
            {
                coll = new SymmetricChartItemCollection(id, chartItems, pen1, null, SymmetricCommonSettings.CNSettings2);
            }
            else if (type == ChartItemType.TimeVolumn)
            {
                coll = new SymmetricVolumnItemCollection(id, chartItems != null ? chartItems.OfType <VolumnItem>() : null, pen1, pen2, SymmetricCommonSettings.CNSettings2);
            }
            return(coll);
        }
Exemplo n.º 2
0
        public void CreateCandle()
        {
            string id = "000001";
            //Load chart items
            StockVolumnList svList = loader.GetStockItems(id);
            //Create collection id
            CollectionId collId = new CollectionId(id);
            //Create pens
            IPen raisePen = DrawingObjectFactory.CreatePen(Brushes.Red, 1);
            IPen fallPen  = DrawingObjectFactory.CreatePen(Brushes.Green, 1);
            //Create stock item collection
            StockItemCollection stockColl = new StockItemCollection(collId, svList.Prices, raisePen, fallPen, null);

            //Set main collection
            priceControl.SetMainCollection(stockColl);
            //Create volumn item collection
            VolumnItemCollection volumnColl = new VolumnItemCollection(collId, svList.Volumns, raisePen, fallPen);

            //Set main collection
            volumnControl.SetMainCollection(volumnColl);
            //Connect two controls
            priceControl.AddConnection(volumnControl);
        }
Exemplo n.º 3
0
 private ChartItemCollection CreateChartItemCollection(ChartItemType type, IEnumerable<ChartItem> chartItems, CollectionId id, IPen pen1, IPen pen2)
 {
     ChartItemCollection coll = null;
     if (type == ChartItemType.Linear)
     {
         coll = new ChartItemCollection(id, chartItems, pen1, null, true);
     }
     else if (type == ChartItemType.Candle)
     {
         coll = new StockItemCollection(id, chartItems.OfType<StockItem>(), pen1, pen2, null);
     }
     else if (type == ChartItemType.Volumn)
     {
         coll = new VolumnItemCollection(id, chartItems.OfType<VolumnItem>(), pen1, pen2);
     }
     else if (type == ChartItemType.Time)
     {
         coll = new SymmetricChartItemCollection(id, chartItems, pen1, null, SymmetricCommonSettings.CNSettings2);
     }
     else if (type == ChartItemType.TimeVolumn)
     {
         coll = new SymmetricVolumnItemCollection(id, chartItems != null ? chartItems.OfType<VolumnItem>() : null, pen1, pen2, SymmetricCommonSettings.CNSettings2);
     }
     return coll;
 }
Exemplo n.º 4
0
        public void QueryStock()
        {
            if (ViewModel.IsTime)
            {
                QueryTime();
                return;
            }

            /*ViewModel.IsDynamic = true;
             *
             * StockItemCollection stockCollection = ViewModel.CreateCollection(ChartItemType.Candle, raisePen, fallPen) as StockItemCollection;
             * //stockCollection.ItemStyle = StockItemStyle.Linear;
             * ChartItemCollection volumnCollection = ViewModel.CreateCollection(ChartItemType.Volumn, raisePen, fallPen);
             * price.SetMainCollection(stockCollection);
             *
             * //var collections = ViewModel.CreateMVCollections();
             * //foreach(var coll in collections)
             *  //price.AddAssistCollection(coll);
             *
             * volumn.SetMainCollection(volumnCollection);*/

            StockItemCollection stockCollection = ViewModel.CreateCollection(ChartItemType.Candle, raisePen, fallPen) as StockItemCollection;

            if (stockCollection == null)
            {
                return;
            }

            stockCollection.MaxItemXDistance = 50;


            //stockCollection.MinItemXDistance = 1.2;
            //stockCollection.ItemStyle = StockItemStyle.Linear;
            ChartItemCollection volumnCollection = ViewModel.CreateCollection(ChartItemType.Volumn, raisePen, fallPen);

            volumnCollection.MaxItemXDistance = 50;
            //volumnCollection.MinItemXDistance = 1.2;

            price.SetMainCollection(stockCollection);

            var statisticCollection = ViewModel.CreateStatisticCollection(contrastPen);

            if (statisticCollection != null)
            {
                price.AddAssistCollection(statisticCollection, true);
                statisticCollection.MaxItemXDistance = 50;
            }
            //statisticCollection.MinItemXDistance = 1.2;

            volumn.SetMainCollection(volumnCollection);

            /*SingleStockItemCollection ssCollection = ViewModel.CreateSingleStockCollection(raisePen, fallPen, contrastPen);
             * price.SetMainCollection(ssCollection);
             *
             * ChartItemCollection volumnCollection = ViewModel.CreateCollection(ChartItemType.Volumn, raisePen, fallPen);
             * volumn.SetMainCollection(volumnCollection);*/

            /*var msc = ViewModel.CreateMultipleStatisticCollection();
             * price.SetMainCollection(msc);*/

            /*ChartItemCollection stockCollection = ViewModel.CreateCollection(ChartItemType.Linear, raisePen, fallPen);
             * stockCollection.IsSymmetric = true;
             * stockCollection.StartValue = 4500.0;
             * //stockCollection.ItemStyle = StockItemStyle.Linear;
             * VolumnItemCollection volumnCollection = ViewModel.CreateCollection(ChartItemType.Volumn, raisePen, fallPen) as VolumnItemCollection;
             * volumnCollection.IsSymmetric = true;
             *
             * price.SetMainCollection(stockCollection);
             * volumn.SetMainCollection(volumnCollection);*/

            price.YScaleDock  = YScaleDock.Right;
            volumn.YScaleDock = YScaleDock.Right;
            price.AddConnection(volumn);

            XRHistoryGraphics xrGraphic = new XRHistoryGraphics();

            price.AddExtraDataGraphic(xrGraphic);

            price.ForceDraw();
        }
Exemplo n.º 5
0
        private void CreateCandleView(Stock stock, string marketId)
        {
            if (stock != null)
            {
                var        closeList = new List <StockItem>();
                var        volList   = new List <VolumnItem>();
                CandleData cdPre     = stock.Items.FirstOrDefault();
                foreach (var cd in stock.Items)
                {
                    closeList.Add(new StockItem()
                    {
                        Value       = cd.close,
                        Date        = cd.DateTime,
                        High        = cd.high,
                        Low         = cd.low,
                        Open        = cd.open,
                        CloseChange = (cd.close - cdPre.close) / cdPre.close
                    });

                    cdPre = cd;

                    volList.Add(new VolumnItem()
                    {
                        Date     = cd.DateTime,
                        IsRaise  = cd.open <= cd.close,
                        Volumn   = cd.amount,
                        Turnover = cd.money
                    });
                }

                CollectionId        id   = new CollectionId(stock.id, marketId);
                StockItemCollection coll = new StockItemCollection(id, closeList, raisePen, fallPen, null, isDynamic);
                //coll.ItemStyle = StockItemStyle.Linear;

                price.SetMainCollection(coll);

                for (int i = mvStart; i < mvStart + mvCount; i++)
                {
                    var maPeriod = mvUnits[i];
                    var ma60     = stock.MA(maPeriod);

                    List <ChartItem> mv60Items = new List <ChartItem>(ma60.Count);
                    for (int j = 0; j < ma60.Count; j++)
                    {
                        mv60Items.Add(new ChartItem()
                        {
                            Value = ma60[j], Date = stock.Data[j + maPeriod - 1].DateTime
                        });
                    }

                    id = new CollectionId(stock.id, marketId);
                    ChartItemCollection collMa60 = new ChartItemCollection(id, mv60Items, DrawingObjectFactory.CreatePen(mvBrushs[i], 1), null, true);

                    price.AddAssistCollection(collMa60);
                }

                id = new CollectionId(stock.id, marketId);
                VolumnItemCollection volColl = new VolumnItemCollection(id, volList, raisePen, fallPen, isDynamic);
                //volColl.VolumnItemStyle = VolumnItemStyle.Linear;
                volumn.SetMainCollection(volColl);
            }
            else
            {
                price.SetMainCollection(null);
                volumn.SetMainCollection(null);
            }
            price.YScaleDock  = YScaleDock.Left;
            volumn.YScaleDock = YScaleDock.Left;
            price.AddConnection(volumn);

            price.ForceDraw();
        }
Exemplo n.º 6
0
        private void CreateCandleView2(IEnumerable <Stock> stocks, string marketId)
        {
            ChartItemCollection main = null;

            foreach (var stock in stocks)
            {
                var        closeList = new List <StockItem>();
                var        volList   = new List <VolumnItem>();
                CandleData cdPre     = stock.Items.FirstOrDefault();
                foreach (var cd in stock.Items)
                {
                    closeList.Add(new StockItem()
                    {
                        Value       = cd.close,
                        Date        = cd.DateTime,
                        High        = cd.high,
                        Low         = cd.low,
                        Open        = cd.open,
                        ValueChange = (cd.close - cdPre.close) / cdPre.close
                    });

                    cdPre = cd;

                    if (main == null)
                    {
                        volList.Add(new VolumnItem()
                        {
                            Date     = cd.DateTime,
                            IsRaise  = cd.open <= cd.close,
                            Volumn   = cd.amount,
                            Turnover = cd.money
                        });
                    }
                }

                IPen pen;
                if (main == null)
                {
                    pen = raisePen;
                }
                else
                {
                    pen = fallPen;
                }

                CollectionId id = new CollectionId(stock.id, marketId);
                if (main == null)
                {
                    StockItemCollection coll = new StockItemCollection(id, closeList, pen, pen, null, isDynamic);
                    coll.ItemStyle = StockItemStyle.Candle;
                    main           = coll;

                    price.SetMainCollection(coll);

                    VolumnItemCollection volColl = new VolumnItemCollection(id, volList, pen, pen, isDynamic);

                    volumn.SetMainCollection(volColl);
                }
                else
                {
                    ChartItemCollection coll = new ChartItemCollection(id, closeList, pen, null, true, isDynamic);

                    price.AddAssistCollection(coll, true);
                }
            }

            price.YScaleDock  = YScaleDock.InnerLeft;
            volumn.YScaleDock = YScaleDock.InnerLeft;
            price.AddConnection(volumn);

            price.ForceDraw();
        }
Exemplo n.º 7
0
        private void QueryCandleRunning()
        {
            if (timer != null)
            {
                timer.Stop();
            }

            StockItemCollection stockCollection = ViewModel.CreateCollection(ChartItemType.Candle, raisePen, fallPen) as StockItemCollection;

            stockCollection.MaxItemXDistance = 50;

            ChartItemCollection volumnCollection = ViewModel.CreateCollection(ChartItemType.Volumn, raisePen, fallPen);

            volumnCollection.MaxItemXDistance = 50;
            volumn.SetMainCollection(volumnCollection);

            price.SetMainCollection(stockCollection);

            price.YScaleDock  = YScaleDock.Right;
            volumn.YScaleDock = YScaleDock.Right;
            price.AddConnection(volumn);

            price.ForceDraw();

            bool isStarted = false;
            var  std       = ViewModel.LoadDetailDatas();
            var  tdds      = std.Data;

            if (tdds != null && tdds.Count > 10)
            {
                timer          = new DispatcherTimer();
                timer.Interval = interval;
                int i = 0;
                timer.Tick += (s, e) =>
                {
                    if (i == tdds.Count)
                    {
                        timer.Stop();
                        return;
                    }

                    if (!isStarted)
                    {
                        var candle = ViewModel.FromTradeDetailData(tdds[i], ChartItemType.Candle) as StockItem;
                        var volumn = ViewModel.FromTradeDetailData(tdds[i], ChartItemType.Volumn) as VolumnItem;

                        stockCollection.AddLatestChartItem(candle);
                        volumnCollection.AddLatestChartItem(volumn);
                        isStarted = true;
                    }
                    else
                    {
                        var candle = ViewModel.FromTradeDetailData(tdds[i], ChartItemType.Candle) as StockItem;
                        var volumn = ViewModel.FromTradeDetailData(tdds[i], ChartItemType.Volumn) as VolumnItem;

                        var lastestCandle = stockCollection.Items.Last();
                        var lastestVolumn = volumnCollection.Items.Last();

                        candle = ViewModel.MergeChartItem(lastestCandle as StockItem, candle);
                        volumn = ViewModel.MergeChartItem(lastestVolumn as VolumnItem, volumn);

                        Debug.WriteLine(candle.Date.ToString("HH:mm:ss ") + candle + "" + volumn);

                        stockCollection.UpdateLatestChartItem(candle);
                        volumnCollection.UpdateLatestChartItem(volumn);
                    }

                    price.ForceDraw(false, false);
                    i++;
                };

                Thread t = new Thread(new ThreadStart(() => {
                    Thread.Sleep(1000);
                    timer.Start();
                }));

                t.Start();
            }
        }