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; } } }