Example #1
0
        private ChartItemCollection CreateSingleStockCollection(ChartItemType type, IEnumerable <ChartItem> chartItems, IEnumerable <ChartItem> chartItems2, CollectionId id, IPen pen1, IPen pen2, IPen[] otherPens)
        {
            List <StockValuesItem> ssItems = new List <StockValuesItem>(chartItems.Count());

            var it = chartItems2.GetEnumerator();

            foreach (var cItem in chartItems)
            {
                it.MoveNext();
                var             sItem  = cItem as StockItem;
                StockValuesItem ssItem = new StockValuesItem()
                {
                    Date         = sItem.Date,
                    High         = sItem.High,
                    Low          = sItem.Low,
                    Open         = sItem.Open,
                    Close        = sItem.Close,
                    CloseChange  = sItem.CloseChange,
                    Values       = new List <double>(new double[] { it.Current.Value }),
                    ValueChanges = new List <double>(new double[] { it.Current.ValueChange })
                };

                ssItems.Add(ssItem);
            }
            var coll = new StockValuesItemCollection(id, ssItems, pen1, pen2, null, otherPens);


            return(coll);
        }
Example #2
0
        public StockValuesItemCollection CreateSingleStockCollection(IPen pen1, IPen pen2, IPen contrastPen)
        {
            var itemList = CreateSingleStockItemList();

            if (itemList != null)
            {
                CollectionId id = new CollectionId(shareId, GetMarketId());
                StockValuesItemCollection collection = new StockValuesItemCollection(id, itemList, pen1, pen2, null, new IPen[] { contrastPen });
                return(collection);
            }

            return(null);
        }
Example #3
0
        private ChartItemCollection CreateSingleStockCollection(ChartItemType type, IEnumerable<ChartItem> chartItems, IEnumerable<ChartItem> chartItems2, CollectionId id, IPen pen1, IPen pen2, IPen[] otherPens)
        {
            List<StockValuesItem> ssItems = new List<StockValuesItem>(chartItems.Count());

            var it = chartItems2.GetEnumerator();
            
            foreach (var cItem in chartItems)
            {
                it.MoveNext();
                var sItem = cItem as StockItem;
                StockValuesItem ssItem = new StockValuesItem()
                {
                    Date = sItem.Date,
                    High = sItem.High,
                    Low = sItem.Low,
                    Open = sItem.Open,
                    Close = sItem.Close,
                    CloseChange = sItem.CloseChange,
                    Values = new List<double>(new double[] { it.Current.Value }),
                    ValueChanges = new List<double>(new double[] { it.Current.ValueChange })
                };

                ssItems.Add(ssItem);
            }
            var coll = new StockValuesItemCollection(id, ssItems, pen1, pen2, null, otherPens);
            
                
            return coll;
        }
Example #4
0
        private void CreateCandleViewInSignleStockItemCollection(Stock stock, string marketId)
        {
            if (stock != null)
            {
                var        multItemList = new List <StockValuesItem>();
                var        volList      = new List <VolumnItem>();
                CandleData cdPre        = stock.Items.FirstOrDefault();
                foreach (var cd in stock.Items)
                {
                    multItemList.Add(new StockValuesItem()
                    {
                        Value       = cd.close,
                        Date        = cd.DateTime,
                        High        = cd.high,
                        Low         = cd.low,
                        Open        = cd.open,
                        CloseChange = (cd.close - cdPre.close) / cdPre.close,
                        Values      = new List <double>(mvCount)
                    });

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

                    cdPre = cd;
                }

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

                    if (!maN.Any())
                    {
                        continue;
                    }

                    int iInvalidCount = maPeriod - 1;

                    for (int j = 0; j < iInvalidCount; j++)
                    {
                        var mItem = multItemList[j];
                        mItem.Values.Add(ChartItemCollection.valueNA);
                    }

                    List <ChartItem> mv60Items = new List <ChartItem>(maN.Count);
                    for (int j = 0; j < maN.Count; j++)
                    {
                        var mItem = multItemList[j + iInvalidCount];
                        mItem.Values.Add(maN[j]);
                    }
                }
                CollectionId id   = new CollectionId(stock.id, marketId);
                List <IPen>  pens = new List <IPen>(mvBrushs.Skip(mvStart).Take(mvCount).Select(mvBrush => DrawingObjectFactory.CreatePen(mvBrush, 1)));
                StockValuesItemCollection multipleColl = new StockValuesItemCollection(id, multItemList, raisePen, fallPen, null, pens.ToArray(), false);
                price.SetMainCollection(multipleColl);

                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.Right;
            volumn.YScaleDock = YScaleDock.Right;
            price.AddConnection(volumn);

            price.ForceDraw();
        }