public void AddInstrument(string instrument, SymbolInfo symb = null) { try { if (!_dicTrading.ContainsKey(instrument)) { logger.Info("Assinando instrumento: " + instrument); MdsAssinatura mdsSign = new MdsAssinatura(); mdsSign.Instrumento = instrument.ToUpper().Trim(); mdsSign.Sinal = TipoSinal.CotacaoRapida; MdsNegociosEventArgs _mensagemNegocio = (MdsBayeuxClient.MdsNegociosEventArgs)MdsBayeuxClient.MdsHttpClient.Instance.Assina(mdsSign); MdsTradingInfo mdsInstrument = new MdsTradingInfo(); if (null != symb) { mdsInstrument.Trading = symb.Trading; } if (null != _mensagemNegocio) { mdsInstrument.Quotes = _mensagemNegocio; } _dicTrading.Add(instrument, mdsInstrument); // primeira assinatura mdsSign = null; } } catch (Exception ex) { logger.Error("Problemas na assinatura do ativo: " + ex.Message, ex); } }
public decimal GetLastPrice(string symbol) { decimal ret; if (_dicTrading.ContainsKey(symbol) && null != _dicTrading[symbol]) { MdsTradingInfo item = _dicTrading[symbol]; // Buscar cotacao if (null != item.Quotes) { ret = Convert.ToDecimal(_dicTrading[symbol].Quotes.negocios.ng.pr, new CultureInfo("pt-BR")); // Se mesmo vindo cotacao e estiver zero, entao retornar valor fechamento (ex: hora de leilao) if (ret == Decimal.Zero) { ret = item.Trading.VlrFechamento; } } // Tentar retornar valor de fechamento else { if (null != item.Trading) { ret = item.Trading.VlrFechamento; } else { ret = Decimal.Zero; } } } else { ret = Decimal.Zero; } return(ret); }