private void QueryQuote()
        {
            //query the price and set it
            List <SecurityItem> secuList = new List <SecurityItem>();
            var uniqueSecuItems          = _secuDataSource.GroupBy(p => p.SecuCode).Select(p => p.First());

            foreach (var secuItem in uniqueSecuItems)
            {
                var findItem = SecurityInfoManager.Instance.Get(secuItem.SecuCode, secuItem.SecuType);
                secuList.Add(findItem);
            }

            foreach (var cancelRedoItem in _secuDataSource)
            {
                var findItem = secuList.Find(p => p.SecuCode.Equals(cancelRedoItem.SecuCode) && p.SecuType == cancelRedoItem.SecuType);
                if (findItem != null)
                {
                    SetItemPrice(cancelRedoItem, findItem, cancelRedoItem.EPriceSetting);
                }
            }
        }
        private void QueryQuote()
        {
            //query the price and set it
            List <SecurityItem> secuList = new List <SecurityItem>();
            var uniqueSecuItems          = _dataSource.GroupBy(p => p.SecuCode).Select(p => p.First());

            foreach (var secuItem in uniqueSecuItems)
            {
                var findItem = SecurityInfoManager.Instance.Get(secuItem.SecuCode, secuItem.SecuType);
                secuList.Add(findItem);
            }

            foreach (var secuItem in _dataSource)
            {
                var targetItem = secuList.Find(p => p.SecuCode.Equals(secuItem.SecuCode) && (p.SecuType == SecurityType.Stock || p.SecuType == SecurityType.Futures));
                var marketData = QuoteCenter.Instance.GetMarketData(targetItem);
                //secuItem.EntrustPrice = QuotePriceHelper.GetPrice(priceType, marketData);
                secuItem.LastPrice          = marketData.CurrentPrice;
                secuItem.OriginCommandMoney = secuItem.OriginCommandAmount * marketData.CurrentPrice;
                secuItem.NewCommandPrice    = marketData.CurrentPrice;
                secuItem.NewCommandMoney    = secuItem.NewCommandAmount * secuItem.NewCommandPrice;
                secuItem.ESuspendFlag       = marketData.SuspendFlag;
                secuItem.ELimitUpDownFlag   = marketData.LimitUpDownFlag;

                secuItem.SecuName     = targetItem.SecuName;
                secuItem.ExchangeCode = targetItem.ExchangeCode;
                if (secuItem.SecuType == SecurityType.Stock)
                {
                    secuItem.PositionType = Model.EnumType.PositionType.SpotLong;
                }
                else if (secuItem.SecuType == SecurityType.Futures)
                {
                    secuItem.PositionType = Model.EnumType.PositionType.FuturesShort;
                }
                else
                {
                    //do nothing
                }
            }
        }
        private void QueryQuote()
        {
            //query the price and set it

            var uniqueSecuItems = _srcDataSource.GroupBy(p => p.SecuCode).Select(o => o.First());

            foreach (var secuItem in uniqueSecuItems)
            {
                if (_secuList.Find(p => p.SecuCode.Equals(secuItem.SecuCode)) == null)
                {
                    var findItem = SecurityInfoManager.Instance.Get(secuItem.SecuCode, secuItem.SecuType);
                    if (findItem != null)
                    {
                        _secuList.Add(findItem);
                    }
                }
            }

            //更新行情相关数据
            //List<PriceType> priceTypes = new List<PriceType>() { PriceType.Last };
            //QuoteCenter2.Instance.Query(_secuList, priceTypes);
        }
        private void QueryQuote()
        {
            var uniqueSecuItems          = _securityDataSource.GroupBy(p => p.SecuCode).Select(p => p.First());
            List <SecurityItem> secuList = new List <SecurityItem>();

            foreach (var secuItem in uniqueSecuItems)
            {
                var findItem = SecurityInfoManager.Instance.Get(secuItem.SecuCode, secuItem.SecuType);
                if (findItem != null)
                {
                    secuList.Add(findItem);
                }
            }

            //Add the index
            foreach (var openItem in _monitorDataSource)
            {
                var findItem = SecurityInfoManager.Instance.Get(openItem.BenchmarkId, SecurityType.Index);
                if (findItem != null)
                {
                    secuList.Add(findItem);
                }
            }

            //QuoteCenter.Instance.Query(secuList);
            foreach (var secuItem in _securityDataSource)
            {
                var targetItem = secuList.Find(p => p.SecuCode.Equals(secuItem.SecuCode) && (p.SecuType == SecurityType.Stock || p.SecuType == SecurityType.Futures));
                var marketData = QuoteCenter.Instance.GetMarketData(targetItem);
                secuItem.LastPrice        = marketData.CurrentPrice;
                secuItem.BuyAmount        = marketData.BuyAmount;
                secuItem.SellAmount       = marketData.SellAmount;
                secuItem.ESuspendFlag     = marketData.SuspendFlag;
                secuItem.ELimitUpDownFlag = marketData.LimitUpDownFlag;

                if (secuItem.SecuType == SecurityType.Stock)
                {
                    secuItem.CommandMoney = secuItem.LastPrice * secuItem.EntrustAmount;
                }
                else if (secuItem.SecuType == SecurityType.Futures)
                {
                    secuItem.CommandMoney = FuturesContractManager.Instance.GetMoney(secuItem.SecuCode, secuItem.EntrustAmount, secuItem.LastPrice);
                }
                else
                {
                    string msg = string.Format("存在不支持的证券类型: {0}", secuItem.SecuCode);
                    throw new NotSupportedException(msg);
                }
            }

            var selectedOpenItems = _monitorDataSource.Where(p => p.Selection).ToList();

            foreach (var openItem in selectedOpenItems)
            {
                //calc the basis
                double benchmarkPrice = GetPrice(secuList, openItem.BenchmarkId, SecurityType.Index);
                double futurePrice    = GetPrice(secuList, openItem.FuturesContract, SecurityType.Futures);
                openItem.Basis = futurePrice - benchmarkPrice;

                //future total capital only selected future
                var futureItem = _securityDataSource.ToList().Find(p => p.MonitorId == openItem.MonitorId && p.Selection && p.SecuType == SecurityType.Futures);
                if (futureItem != null)
                {
                    openItem.FuturesMktCap = futureItem.CommandMoney;
                }
                else
                {
                    openItem.FuturesMktCap = 0;
                }

                //spot total capital only selected stocks
                var stockItems = _securityDataSource.Where(p => p.MonitorId == openItem.MonitorId && p.Selection && p.SecuType == SecurityType.Stock).ToList();
                if (stockItems.Count > 0)
                {
                    openItem.StockMktCap  = stockItems.Sum(p => p.CommandMoney);
                    openItem.StockNumbers = stockItems.Count;
                }
                else
                {
                    openItem.StockMktCap  = 0;
                    openItem.StockNumbers = 0;
                }

                openItem.Risk = openItem.StockMktCap - openItem.FuturesMktCap;

                var suspensionItems = stockItems.Where(p => p.ESuspendFlag == Model.Quote.SuspendFlag.Suspend1Day ||
                                                       p.ESuspendFlag == Model.Quote.SuspendFlag.Suspend1Hour ||
                                                       p.ESuspendFlag == Model.Quote.SuspendFlag.Suspend2Hour ||
                                                       p.ESuspendFlag == Model.Quote.SuspendFlag.SuspendAfternoon ||
                                                       p.ESuspendFlag == Model.Quote.SuspendFlag.SuspendHalfDay ||
                                                       p.ESuspendFlag == Model.Quote.SuspendFlag.SuspendHalfHour ||
                                                       p.ESuspendFlag == Model.Quote.SuspendFlag.SuspendTemp
                                                       ).ToList();
                if (suspensionItems != null)
                {
                    openItem.SuspensionNumbers = suspensionItems.Count;
                }
                else
                {
                    openItem.SuspensionNumbers = 0;
                }

                var limitUpItems = stockItems.Where(p => p.ELimitUpDownFlag == Model.Quote.LimitUpDownFlag.LimitUp).ToList();
                if (limitUpItems != null)
                {
                    openItem.LimitUpNumbers = limitUpItems.Count;
                }
                else
                {
                    openItem.LimitUpNumbers = 0;
                }

                var limitDownItems = stockItems.Where(p => p.ELimitUpDownFlag == Model.Quote.LimitUpDownFlag.LimitDown).ToList();
                if (limitDownItems != null)
                {
                    openItem.LimitDownNumbers = limitDownItems.Count;
                }
                else
                {
                    openItem.LimitDownNumbers = 0;
                }
            }
        }