Ejemplo n.º 1
0
        public EntityResponse <SecurityQuotation> GetSecurityQuotation(string securityCode)
        {
            EntityResponse <List <SecurityInformation> > securityInfoList = _marketDataProvider.GetSecuritiesInformation(null, securityCode);

            if (!securityInfoList.IsSuccess)
            {
                return(EntityResponse <SecurityQuotation> .Error(securityInfoList));
            }

            SecurityInformation securityInfo = securityInfoList.Entity.Single();

            EntityResponse <StockQuoteInfo> stockQuotes = GetStockQuote(securityInfo.SecurityCode);

            if (!stockQuotes.IsSuccess)
            {
                return(EntityResponse <SecurityQuotation> .Error(stockQuotes));
            }

            SecurityQuotation model = Mapper.Map <SecurityQuotation>(securityInfo);

            model = Mapper.Map(stockQuotes.Entity, model);
            //model.HasOptions = _marketDataProvider.GetAllOptionBasicInformation().Any(cache => cache.OptionUnderlyingCode == securityCode && cache.OptionStatus != " ");
            model.HasOptions = isSecurityHasOptions(securityCode);
            return(model);
        }
Ejemplo n.º 2
0
        public SecurityQuotationViewModel AutoMapperConverterSecurityQuotation(SecurityQuotation securityQuotation)
        {
            SecurityQuotationViewModel result = new SecurityQuotationViewModel();

            result.BuyPrice2             = securityQuotation.BuyPrice2;
            result.BuyPrice3             = securityQuotation.BuyPrice3;
            result.BuyPrice4             = securityQuotation.BuyPrice4;
            result.BuyPrice5             = securityQuotation.BuyPrice5;
            result.BuyVolume1            = securityQuotation.BuyVolume1;
            result.BuyVolume2            = securityQuotation.BuyVolume2;
            result.BuyVolume3            = securityQuotation.BuyVolume3;
            result.BuyVolume4            = securityQuotation.BuyVolume4;
            result.BuyVolume5            = securityQuotation.BuyVolume5;
            result.Currency              = securityQuotation.Currency.ToString();
            result.CurrentAskPrice       = securityQuotation.CurrentAskPrice;
            result.CurrentBidPrice       = securityQuotation.CurrentBidPrice;
            result.HasOptions            = securityQuotation.HasOptions;
            result.HighPrice             = securityQuotation.HighPrice;
            result.LastPrice             = securityQuotation.LastPrice;
            result.LimitDownPrice        = securityQuotation.LimitDownPrice;
            result.LimitUpPrice          = securityQuotation.LimitUpPrice;
            result.LotFlag               = securityQuotation.LotFlag.ToString();
            result.LotSize               = long.Parse(securityQuotation.LotSize.ToString());
            result.LowPrice              = securityQuotation.LowPrice;
            result.OpenPrice             = securityQuotation.OpenPrice;
            result.PERatio               = securityQuotation.PERatio;
            result.PreviousClose         = securityQuotation.PreviousClose;
            result.SecurityClass         = securityQuotation.SecurityClass;
            result.SecurityCode          = securityQuotation.SecurityCode;
            result.SecurityLevel         = securityQuotation.SecurityLevel;
            result.SecurityName          = securityQuotation.SecurityName;
            result.SecurityStatus        = securityQuotation.SecurityStatus.ToString();
            result.SecuritySubClass      = securityQuotation.SecuritySubClass;
            result.SellPrice2            = securityQuotation.SellPrice2;
            result.SellPrice3            = securityQuotation.SellPrice3;
            result.SellPrice4            = securityQuotation.SellPrice4;
            result.SellPrice5            = securityQuotation.SellPrice5;
            result.SellVolume1           = securityQuotation.SellVolume1;
            result.SellVolume2           = securityQuotation.SellVolume2;
            result.SellVolume3           = securityQuotation.SellVolume3;
            result.SellVolume4           = securityQuotation.SellVolume4;
            result.SellVolume5           = securityQuotation.SellVolume5;
            result.StockExchange         = securityQuotation.StockExchange.ToString();
            result.SuspendedFlag         = securityQuotation.SuspendedFlag.ToString();
            result.TradeDate             = securityQuotation.TradeDate;
            result.TradeSector           = securityQuotation.TradeSector.DisplayName;
            result.Turnover              = securityQuotation.Turnover;
            result.UnderlyinSecurityCode = securityQuotation.UnderlyinSecurityCode;
            result.Volume = securityQuotation.Volume;
            return(result);
        }
Ejemplo n.º 3
0
 public SecurityQuotationViewModel GetQuote(string securityCode)
 {
     try
     {
         List <string> codes = new List <string>();
         codes.Add(securityCode);
         _marketDataPusher.SubscribeQuotes(Context.ConnectionId, codes);
         SecurityQuotation result = _marketDataService.GetSecurityQuotation(securityCode);
         //return Mapper.Map<SecurityQuotationViewModel>(result);
         return(OptionsPlay.Web.AutoMapperPlugin.AutoMapperPlugin.AutoMapperConverterSecurityQuotation(result));
     }
     catch (Exception ex)
     {
         Logging.Logger.Error("thread ID:" + System.Threading.Thread.CurrentThread.ManagedThreadId + ", getQuote innerException: " + ex.InnerException.ToString() + ", getQuote stackTrace: " + ex.StackTrace + ", class is MarketDataHub");
         throw;
     }
 }
Ejemplo n.º 4
0
        public List <BasePortfolioItemGroupViewModel> GetPortfolioData(string customerCode, string accountCode, string tradeAccount)
        {
            #region Fetch data
            OptionPositionsArguments arguments = new OptionPositionsArguments
            {
                CustomerCode        = customerCode,
                CustomerAccountCode = accountCode
            };

            EntityResponse <List <OptionPositionInformation> >          optionPositions = _portfolioManager.GetOptionPositions(arguments);
            EntityResponse <List <OptionableStockPositionInformation> > stockPositions  = _portfolioManager.GetOptionalStockPositions(customerCode, accountCode, tradeAccount);

            if (!optionPositions.IsSuccess || !stockPositions.IsSuccess || optionPositions.Entity.Count == 0)
            {
                return(new List <BasePortfolioItemGroupViewModel>());
            }

            IEnumerable <PortfolioOption> portfolioOptions = Mapper.Map <List <OptionPositionInformation>, List <PortfolioOption> >(optionPositions.Entity);
            IEnumerable <PortfolioStock>  portfolioStocks  = Mapper.Map <List <OptionableStockPositionInformation>, List <PortfolioStock> >(stockPositions.Entity);
            Dictionary <string, EntityResponse <OptionChain> > optionChains = new Dictionary <string, EntityResponse <OptionChain> >();
            #endregion

            #region Fill additional information

            foreach (PortfolioOption portfolioItem in portfolioOptions)
            {
                EntityResponse <List <OptionBasicInformation> > optionBasicInformation = _marketDataProviderQueryable.GetOptionBasicInformation(optionNumber: portfolioItem.OptionNumber);

                if (optionBasicInformation.Entity == null || !optionBasicInformation.Entity.Any())
                {
                    continue;
                }

                OptionBasicInformation basicInfo = optionBasicInformation.Entity.Single();

                DateTime expiryDate             = basicInfo.ExpireDate;
                DateAndNumberOfDaysUntil expiry = _marketWorkTimeService.GetNumberOfDaysLeftUntilExpiry(expiryDate);

                portfolioItem.Expiry         = expiry;
                portfolioItem.UnderlyingCode = basicInfo.OptionUnderlyingCode;
                portfolioItem.UnderlyingName = basicInfo.OptionUnderlyingName;
                portfolioItem.StrikePrice    = basicInfo.StrikePrice;


                EntityResponse <OptionChain> optionChain;
                string underlying = portfolioItem.UnderlyingCode;

                if (optionChains.ContainsKey(underlying))
                {
                    optionChain = optionChains[underlying];
                }
                else
                {
                    optionChain = _marketDataService.GetOptionChain(underlying);
                    optionChains.Add(underlying, optionChain);
                }

                if (optionChain == null)
                {
                    continue;
                }

                Option option = optionChain.Entity[portfolioItem.OptionNumber];
                if (option == null)
                {
                    portfolioItem.UnderlyingCode = null;
                    continue;
                }
                Greeks greeks = option.Greeks ?? new Greeks();

                portfolioItem.LastPrice         = (decimal)option.LatestTradedPrice;         //optionChain.Entity.UnderlyingCurrentPrice;
                portfolioItem.PremiumMultiplier = option.RootPair.PremiumMultiplier;
                portfolioItem.Greeks            = new PortfolioGreeks(portfolioItem.OptionAvailableQuantity, greeks, portfolioItem.OptionSide, portfolioItem.PremiumMultiplier);
            }

            portfolioOptions = portfolioOptions.Where(x => x.UnderlyingCode != null);

            foreach (PortfolioStock portfolioStock in portfolioStocks)
            {
                SecurityQuotation quote = _marketDataService.GetSecurityQuotation(portfolioStock.SecurityCode);
                portfolioStock.LastPrice        = quote.LastPrice;
                portfolioStock.StockMarketValue = quote.LastPrice * portfolioStock.AvailableBalance;
                portfolioStock.Greeks           = new PortfolioGreeks(portfolioStock.AdjustedAvailableQuantity,
                                                                      new Greeks()
                {
                    Delta = 1
                }, portfolioStock.OptionSide, 1);
            }

            #endregion

            IEnumerable <BasePortfolioItemGroup> groupedByStrategies = _strategyService.GetPortfolioItemsGroupedByStrategy(portfolioOptions, portfolioStocks);

            List <BasePortfolioItemGroupViewModel> result =
                Mapper.Map <IEnumerable <BasePortfolioItemGroup>, IEnumerable <BasePortfolioItemGroupViewModel> >(groupedByStrategies)
                .ToList();

            return(result);
        }
Ejemplo n.º 5
0
        public SecurityQuotationViewModel GetSecurityQuotation(string securityCode)
        {
            SecurityQuotation result = _marketDataService.GetSecurityQuotation(securityCode);

            return(Mapper.Map <SecurityQuotationViewModel>(result));
        }