Esempio n. 1
0
        private ChartItemCollection CreateCollection(string id, IEnumerable <ChartItem> chartItems, ChartItemType type, IPen pen1, IPen pen2)
        {
            CollectionId        cId  = new CollectionId(id);
            ChartItemCollection coll = CreateChartItemCollection(type, chartItems, cId, pen1, pen2);

            return(coll);
        }
Esempio n. 2
0
        public ChartItemCollection CreateCollection(ChartItemType type, IPen pen1, IPen pen2)
        {
            //if (currentStock == null)
            {
                if (type != ChartItemType.Timely && type != ChartItemType.TimelyVolumn && type != ChartItemType.TimelyAverage)
                {
                    currentStock = LoadStock(shareId);
                }
                else
                {
                    currentStock = LoadMinStock(shareId, type == ChartItemType.TimelyAverage);
                }

                if (Stock.IsNullOrEmpty(currentStock))
                {
                    return(null);
                }
            }


            CollectionId id = new CollectionId(currentStock.id, GetMarketId());

            var chartItems           = CreateChartItemFromStock(currentStock, type);
            ChartItemCollection coll = CreateChartItemCollection(type, chartItems, id, pen1, pen2);

            return(coll);
        }
Esempio 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);
        }
Esempio n. 4
0
        private ChartItemCollection CreateCollection(string id, IEnumerable <ChartItem>[] chartItemsList, IPen[] pens)
        {
            CollectionId        cId  = new CollectionId(id);
            ChartItemCollection coll = CreateMultipleItemCollection(chartItemsList, cId, pens);

            return(coll);
        }
Esempio n. 5
0
        public void AddAssistCollection(ChartItemCollection collection)
        {
            collection.AssistTo(_mainCollection);
            _assistCollections.Add(collection);

            DrawVisuals();
        }
Esempio n. 6
0
        private Point AdjustPoint(Point pt)
        {
            pt.X = ChartItemCollection.Adjust(pt.X);
            pt.Y = ChartItemCollection.Adjust(pt.Y);

            return(pt);
        }
Esempio n. 7
0
        private ChartItemCollection CreateCollection(string id, IEnumerable <ChartItem> chartItems, IEnumerable <ChartItem> chartItems2, ChartItemType type, IPen pen1, IPen pen2, IPen[] otherPens)
        {
            CollectionId        cId  = new CollectionId(id);
            ChartItemCollection coll = CreateSingleStockCollection(type, chartItems, chartItems2, cId, pen1, pen2, otherPens);

            return(coll);
        }
Esempio n. 8
0
        private void CreateChartView2(IEnumerable <Stock> stocks, string marketId)
        {
            ChartItemCollection main = null;

            foreach (var stock in stocks)
            {
                var        closeList = new List <ChartItem>();
                CandleData cdPre     = stock.Items.FirstOrDefault();
                foreach (var cd in stock.Items)
                {
                    closeList.Add(new ChartItem()
                    {
                        Value       = cd.close,
                        Date        = cd.DateTime,
                        ValueChange = (cd.close - cdPre.close) / cdPre.close
                    });

                    cdPre = cd;
                }

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

                CollectionId        id   = new CollectionId(stock.id, marketId);
                ChartItemCollection coll = new ChartItemCollection(id, closeList, pen, null, true, isDynamic);

                if (main == null)
                {
                    main = coll;

                    price.SetMainCollection(coll);
                }
                else
                {
                    price.AddAssistCollection(coll, true);
                }
            }

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

            price.ForceDraw();
        }
Esempio n. 9
0
        private void CandleTrading(string id, ChartItemCollection priceColl, ChartItemCollection volumnColl, IEnumerable <ChartItemCollection> maColls, StockVolumnList svList, int mvStart = 0)
        {
            tradingTimer = new DispatcherTimer();

            bool isStarted = false;
            int  i         = 0;

            tradingTimer.Interval = tradingPeriod;
            tradingTimer.Tick    += async(s, e) => {
                var tvList = await Timeloader.GetStockItems(id);

                if (i == tvList.Prices.Count)
                {
                    tradingTimer.Stop();
                    return;
                }

                var candle = tvList.Prices[i];
                var volumn = tvList.Volumns[i];

                if (!isStarted)
                {
                    priceColl.AddLatestChartItem(candle);
                    volumnColl.AddLatestChartItem(volumn);

                    UpdateMACollections(maColls, svList.Prices, candle, mvStart, isStarted);
                    isStarted = true;
                }
                else
                {
                    var lastestCandle = priceColl.Items.Last() as StockItem;
                    var lastestVolumn = volumnColl.Items.Last() as VolumnItem;

                    candle         = MergeChartItem(lastestCandle, candle);
                    volumn         = MergeChartItem(lastestVolumn, volumn);
                    volumn.IsRaise = candle.Open <= candle.Close;

                    priceColl.UpdateLatestChartItem(candle);
                    volumnColl.UpdateLatestChartItem(volumn);

                    UpdateMACollections(maColls, svList.Prices, candle, mvStart, isStarted);
                }

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

            tradingTimer.Start();
        }
Esempio n. 10
0
        public void CreateCurve()
        {
            string id = "000001";
            //Load chart items
            IList <ChartItem> chartItems = loader.GetChartItems(id);
            //Create collection id
            CollectionId collId = new CollectionId(id);

            //Create pen
            IPen pen = DrawingObjectFactory.CreatePen(Brushes.Black, 1);
            //Create chart item collection
            ChartItemCollection collection = new ChartItemCollection(collId, chartItems, pen, null);

            //Set main collection
            priceControl.SetMainCollection(collection);
        }
Esempio n. 11
0
        public ChartItemCollection CreateEmptyTimeCollection(ChartItemType type, IPen pen1, IPen pen2, out StockTradeDetails std)
        {
            std = null;

            Stock s = null;

            if (type == ChartItemType.Timely)
            {
                s   = LoadStock(shareId);
                std = LoadDetailDatas();
                if (Stock.IsNullOrEmpty(s))
                {
                    return(null);
                }
            }

            CollectionId        id   = new CollectionId(shareId, GetMarketId());
            ChartItemCollection coll = null;

            switch (type)
            {
            case ChartItemType.Timely:
                var tColl = new SymmetricChartItemCollection(id, null, pen1, null, SymmetricCommonSettings.CNSettings2);
                tColl.StartValue = s.Items.Last().close;
                coll             = tColl;
                break;

            case ChartItemType.TimelyAverage:
                coll = new SymmetricChartItemCollection(id, null, pen1, null, SymmetricCommonSettings.CNSettings2);
                break;

            case ChartItemType.TimelyVolumn:
                coll = new SymmetricVolumnItemCollection(id, null, pen1, pen2, SymmetricCommonSettings.CNSettings2);
                break;

            default:
                break;
            }

            return(coll);
        }
Esempio n. 12
0
        public IEnumerable <ChartItemCollection> CreateMVCollections()
        {
            for (int i = mvStart; i < mvStart + mvCount; i++)
            {
                var maPeriod = mvUnits[i];
                var ma60     = currentStock.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 = currentStock.Data[j + maPeriod - 1].DateTime
                    });
                }

                var id = new CollectionId(currentStock.id, GetMarketId());
                ChartItemCollection collMa60 = new ChartItemCollection(id, mv60Items, DrawingObjectFactory.CreatePen(mvBrushs[i], 1), null, true, false);
                yield return(collMa60);
            }
        }
Esempio n. 13
0
        private void QueryTime()
        {
            ChartItemCollection timeCollection = ViewModel.CreateCollection(ChartItemType.Timely, raisePen, null);

            price.SetMainCollection(timeCollection);
            price.XScaleFormat = "HH:mm";

            ChartItemCollection atimeCollection = ViewModel.CreateCollection(ChartItemType.TimelyAverage, contrastPen, null);

            price.AddAssistCollection(atimeCollection);

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

            volumn.XScaleFormat  = "HH:mm";
            volumn.YCursorFormat = volumn.YScaleFormat = "N0";
            volumn.SetMainCollection(volumnCollection);

            price.AddConnection(volumn);

            price.ForceDraw();
        }
Esempio n. 14
0
        public IEnumerable <ChartItemCollection> CreateMACollections(List <StockItem> chartItems, int mvStart = 0)
        {
            for (int i = mvStart; i < mvStart + mvCount; i++)
            {
                var maPeriod = mvUnits[i];
                var maData   = MA(maPeriod, chartItems);

                List <ChartItem> mvItems = new List <ChartItem>(maData.Count);
                for (int j = 0; j < maData.Count; j++)
                {
                    mvItems.Add(new ChartItem()
                    {
                        Value = maData[j], Date = chartItems[j + maPeriod - 1].Date
                    });
                }

                var id = new CollectionId(maPeriod.ToString());
                ChartItemCollection collMa = new ChartItemCollection(id, mvItems, DrawingObjectFactory.CreatePen(mvBrushs[i], 1), null, true, false);
                yield return(collMa);
            }
        }
Esempio n. 15
0
        private void CreateChartView(Stock stock, string marketId)
        {
            if (stock != null)
            {
                var closeList = stock.Items.Select(cd => new ChartItem()
                {
                    Value = cd.close, Date = cd.DateTime
                }).ToList();
                CollectionId        id   = new CollectionId(stock.id, marketId);
                ChartItemCollection coll = new ChartItemCollection(id, closeList, raisePen, null, true, isDynamic);

                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, isDynamic);

                    price.AddAssistCollection(collMa60);
                }

                price.ForceDraw();
            }
        }
Esempio n. 16
0
        private void MoveCursor(Point position, bool isActive)
        {
            if (CursorColor == null)
            {
                return;
            }

            List <CurrentChartItem> currentItems = new List <CurrentChartItem>();

            if (_mainCollection != null)
            {
                var itemWp = _mainCollection.LocateCurrentChartItem(position);
                if (itemWp != null)
                {
                    var x = ChartItemCollection.Adjust(position.X);
                    var y = ChartItemCollection.Adjust(position.Y);
                    var v = _mainCollection.GetValueFromPosition(position.Y);
                    CreateCursorVisual(x, y, v, isActive);

                    currentItems.Add(new CurrentChartItem(_mainCollection.Id, itemWp.CharItem));
                }
            }

            foreach (var assitCollection in _assistCollections)
            {
                var itemWp = assitCollection.LocateCurrentChartItem(position);
                if (itemWp != null)
                {
                    currentItems.Add(new CurrentChartItem(assitCollection.Id, itemWp.CharItem));
                }
            }

            if (currentItems.Any())
            {
                RaiseCursorMovedEvent(currentItems);
            }
        }
Esempio n. 17
0
        public IEnumerable<ChartItemCollection> CreateMACollections(List<StockItem> chartItems, int mvStart = 0)
        {
            for (int i = mvStart; i < mvStart + mvCount; i++)
            {
                var maPeriod = mvUnits[i];
                var maData = MA(maPeriod, chartItems);

                List<ChartItem> mvItems = new List<ChartItem>(maData.Count);
                for (int j = 0; j < maData.Count; j++)
                {
                    mvItems.Add(new ChartItem() { Value = maData[j], Date = chartItems[j + maPeriod - 1].Date });
                }

                var id = new CollectionId(maPeriod.ToString());
                ChartItemCollection collMa = new ChartItemCollection(id, mvItems, DrawingObjectFactory.CreatePen(mvBrushs[i], 1), null, true, false);
                yield return collMa;
            }
        }
Esempio n. 18
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;
 }
Esempio n. 19
0
        private void CandleTrading(string id, ChartItemCollection priceColl, ChartItemCollection volumnColl, IEnumerable<ChartItemCollection> maColls, StockVolumnList svList, int mvStart = 0)
        {
            tradingTimer = new DispatcherTimer();
            
            bool isStarted = false;
            int i = 0;
            tradingTimer.Interval = tradingPeriod;
            tradingTimer.Tick += async (s, e) => {
                var tvList = await Timeloader.GetStockItems(id);

                if (i == tvList.Prices.Count)
                {
                    tradingTimer.Stop();
                    return;
                }

                var candle = tvList.Prices[i];
                var volumn = tvList.Volumns[i];

                if (!isStarted)
                {
                    priceColl.AddLatestChartItem(candle);
                    volumnColl.AddLatestChartItem(volumn);

                    UpdateMACollections(maColls, svList.Prices, candle, mvStart, isStarted);
                    isStarted = true;
                }
                else
                {
                    var lastestCandle = priceColl.Items.Last() as StockItem;
                    var lastestVolumn = volumnColl.Items.Last() as VolumnItem;

                    candle = MergeChartItem(lastestCandle, candle);
                    volumn = MergeChartItem(lastestVolumn, volumn);
                    volumn.IsRaise = candle.Open <= candle.Close;

                    priceColl.UpdateLatestChartItem(candle);
                    volumnColl.UpdateLatestChartItem(volumn);

                    UpdateMACollections(maColls, svList.Prices, candle, mvStart, isStarted);
                }

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

            tradingTimer.Start();
        }
Esempio n. 20
0
 public Chart()
 {
     m_Items = new ChartItemCollection();
 }
Esempio n. 21
0
        private void CreateXScaleVisual(DrawingContext drawingContext, Rect drawRect, double y, ChartItemCollection collection)
        {
            if (xScaleDock == XScaleDock.None)
            {
                return;
            }

            var face   = new Typeface(scaleFontFamily);
            var scales = collection.GetXAxisScales();

            KeyValuePair <FormattedText, Point>[] dates = new KeyValuePair <FormattedText, Point> [scales.Count];

            for (int i = 0; i < scales.Count; i++)
            {
                FormattedText format = new FormattedText(scales[i].Value.ToString(timeScaleFormat), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, face, scaleFontSize, scaleColor);
                Point         ptext  = new Point(scales[i].Pos, y);

                if (scales[i].Pos + format.Width > drawRect.Right)
                {
                    scales[i].Pos = scales[i].Pos - (drawRect.Right - (scales[i].Pos + format.Width));
                }
                dates[i] = new KeyValuePair <FormattedText, Point>(format, ptext);
            }

            bool isOverlapped = dates.Length > 1 && (dates[0].Value.X + dates[0].Key.Width * 3 >= dates[1].Value.X);

            if (isOverlapped)
            {
                dates = new KeyValuePair <FormattedText, Point>[] { dates[0], dates[dates.Length - 1] };
            }

            foreach (var date in dates)
            {
                drawingContext.DrawText(date.Key, date.Value);
            }
        }
Esempio n. 22
0
        private void CreateYScaleVisual(DrawingContext drawingContext, Rect drawRect, double x, ChartItemCollection collection)
        {
            if (YScaleDock == YScaleDock.None)
            {
                return;
            }

            Pen scalePen = new Pen(scaleColor, scaleThickness);
            var face     = new Typeface(scaleFontFamily);
            var scales   = collection.GetYAxisScales();

            for (int i = 1; i < scales.Count - 1; i++)
            {
                Point pt1 = AdjustPoint(new Point(drawRect.Left, scales[i].Pos));
                Point pt2 = AdjustPoint(new Point(drawRect.Right, scales[i].Pos));
                drawingContext.DrawLine(scalePen, pt1, pt2);

                FormattedText format = new FormattedText(scales[i].Value.ToString(scaleNumberFormat), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, face, scaleFontSize, scaleColor);
                Point         ptext  = pt2;

                ptext.Y -= format.Height / 2;
                drawingContext.DrawText(format, ptext);
            }


            //Point pt11 = AdjustPoint(new Point(drawRect.Left, scales[scales.Count - 1].Pos));
            //Point pt21 = AdjustPoint(new Point(drawRect.Right, scales[scales.Count - 1].Pos));
            //drawingContext.DrawLine(scalePen, pt11, pt21);
            FormattedText formatTop = new FormattedText(scales[0].Value.ToString(scaleNumberFormat), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, face, scaleFontSize, scaleColor);
            Point         ptextTop  = new Point(x, drawRect.Top);

            drawingContext.DrawText(formatTop, ptextTop);

            FormattedText formatBottom = new FormattedText(scales[scales.Count - 1].Value.ToString(scaleNumberFormat), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, face, scaleFontSize, scaleColor);
            Point         ptextBottom  = new Point(x, drawRect.Bottom - scaleFontSize);

            drawingContext.DrawText(formatBottom, ptextBottom);
        }
Esempio n. 23
0
 private void CreateCollectionVisual(DrawingContext drawingContext, Rect drawRect, ChartItemCollection collection)
 {
     // Create a rectangle and draw it in the DrawingContext.
     collection.CalculatePosition(drawRect);
     collection.Draw(drawingContext);
 }
Esempio n. 24
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();
        }
Esempio n. 25
0
 public void SetMainCollection(ChartItemCollection collection)
 {
     this._mainCollection = collection;
     DrawVisuals();
 }
Esempio n. 26
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();
        }
Esempio n. 27
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();
        }
Esempio n. 28
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();
            }
        }
Esempio n. 29
0
		public Chart()
		{
			m_Items = new ChartItemCollection();
		}