Ejemplo n.º 1
0
        public static string ReceberNegociosDestaque(string segmentoMercado, TipoDestaqueEnum tipoDestaque)
        {
            logger.Debug("HomeBroker solicitando NegociosDestaque segmentoMercado[" + segmentoMercado + "] tipoDestaque[" + tipoDestaque + "]");

            // Monta mensagem de Negocios em Destaque
            string mensagem = "ND" + DateTime.Now.ToString("yyyyMMddHHmmss");

            int ocorrencias = 0;

            try
            {
                if (!((IList <string>)SEGMENTOS_MERCADO).Contains(segmentoMercado))
                {
                    logger.Error("HomeBroker segmentoMercado[" + segmentoMercado + "] invalido!");
                    mensagem += ocorrencias.ToString("D2");
                    return(mensagem);
                }

                if (tipoDestaque != TipoDestaqueEnum.MaioresAltas &&
                    tipoDestaque != TipoDestaqueEnum.MaioresBaixas &&
                    tipoDestaque != TipoDestaqueEnum.MaioresVolumes &&
                    tipoDestaque != TipoDestaqueEnum.MaisNegociadas)
                {
                    logger.Error("HomeBroker tipoDestaque[" + tipoDestaque + "] invalido!");
                    mensagem += ocorrencias.ToString("D2");
                    return(mensagem);
                }

                mensagem += String.Format("{0,-4}", segmentoMercado);
                mensagem += ((int)Enum.Parse(typeof(TipoDestaqueEnum), tipoDestaque.ToString())).ToString();

                string listaOcorrencias = "";

                lock (dictInstrumentos)
                {
                    if (tipoDestaque == TipoDestaqueEnum.MaioresAltas)
                    {
                        lock (dictMaioresAltasBaixasPorInstrumento)
                        {
                            foreach (KeyValuePair <RankingInfo, string> info in dictMaioresAltas[segmentoMercado])
                            {
                                // Apenas lista os destaques da mesma data atual
                                if (!((DateTime)dictInstrumentos[info.Value].DataUltimoNegocio).ToString("yyyyMMdd").Equals(DateTime.Now.ToString("yyyyMMdd")))
                                {
                                    break;
                                }

                                if (dictInstrumentos[info.Value].NumeroNegocios == 0)
                                {
                                    continue;
                                }

                                listaOcorrencias += ((DateTime)dictInstrumentos[info.Value].DataUltimoNegocio).ToString("yyyyMMddHHmmss");
                                listaOcorrencias += String.Format("{0,-20}", info.Value);
                                listaOcorrencias += String.Format("{0: 00000.00;-00000.00}", info.Key.Valor).Replace('.', ',');
                                listaOcorrencias += String.Format("{0:000000000000}", dictInstrumentos[info.Value].QuantidadePapeis);
                                listaOcorrencias += String.Format("{0:0000000000.00}", dictInstrumentos[info.Value].Preco).Replace('.', ',');
                                listaOcorrencias += String.Format("{0:00000000}", dictInstrumentos[info.Value].NumeroNegocios);
                                listaOcorrencias += String.Format("{0:0000000000000}", dictInstrumentos[info.Value].VolumeNegocios);

                                logger.Debug(String.Format("HomeBroker Segmento[{0,-4}] Destaque[{1,1}] ({2,2}) {3,19:dd/MM/yyyy HH:mm:ss} {4,-14} {5,6}% {6, 12} {7, 13} {8, 13}",
                                                           segmentoMercado, tipoDestaque, ocorrencias + 1, dictInstrumentos[info.Value].DataUltimoNegocio, info.Value, info.Key.Valor,
                                                           dictInstrumentos[info.Value].QuantidadePapeis, dictInstrumentos[info.Value].Preco,
                                                           dictInstrumentos[info.Value].VolumeNegocios));

                                if (++ocorrencias >= MAX_ITENS_HOME_BROKER)
                                {
                                    break;
                                }
                            }
                        }
                    }

                    else if (tipoDestaque == TipoDestaqueEnum.MaioresBaixas)
                    {
                        lock (dictMaioresAltasBaixasPorInstrumento)
                        {
                            foreach (KeyValuePair <RankingInfo, string> info in dictMaioresBaixas[segmentoMercado])
                            {
                                // Apenas lista os destaques da mesma data atual
                                if (!((DateTime)dictInstrumentos[info.Value].DataUltimoNegocio).ToString("yyyyMMdd").Equals(DateTime.Now.ToString("yyyyMMdd")))
                                {
                                    break;
                                }

                                if (dictInstrumentos[info.Value].NumeroNegocios == 0)
                                {
                                    continue;
                                }

                                listaOcorrencias += ((DateTime)dictInstrumentos[info.Value].DataUltimoNegocio).ToString("yyyyMMddHHmmss");
                                listaOcorrencias += String.Format("{0,-20}", info.Value);
                                listaOcorrencias += String.Format("{0: 00000.00;-00000.00}", info.Key.Valor).Replace('.', ',');
                                listaOcorrencias += String.Format("{0:000000000000}", dictInstrumentos[info.Value].QuantidadePapeis);
                                listaOcorrencias += String.Format("{0:0000000000.00}", dictInstrumentos[info.Value].Preco).Replace('.', ',');
                                listaOcorrencias += String.Format("{0:00000000}", dictInstrumentos[info.Value].NumeroNegocios);
                                listaOcorrencias += String.Format("{0:0000000000000}", dictInstrumentos[info.Value].VolumeNegocios);

                                logger.Debug(String.Format("HomeBroker Segmento[{0,-4}] Destaque[{1,1}] ({2,2}) {3,19:dd/MM/yyyy HH:mm:ss} {4,-14} {5,6}% {6, 12} {7, 13} {8, 13}",
                                                           segmentoMercado, tipoDestaque, ocorrencias + 1, dictInstrumentos[info.Value].DataUltimoNegocio, info.Value, info.Key.Valor,
                                                           dictInstrumentos[info.Value].QuantidadePapeis, dictInstrumentos[info.Value].Preco,
                                                           dictInstrumentos[info.Value].VolumeNegocios));

                                if (++ocorrencias >= MAX_ITENS_HOME_BROKER)
                                {
                                    break;
                                }
                            }
                        }
                    }

                    else if (tipoDestaque == TipoDestaqueEnum.MaioresVolumes)
                    {
                        lock (dictMaioresVolumesPorInstrumento)
                        {
                            foreach (KeyValuePair <RankingInfo, string> info in dictMaioresVolumes[segmentoMercado])
                            {
                                // Apenas lista os destaques da mesma data atual
                                if (!((DateTime)dictInstrumentos[info.Value].DataUltimoNegocio).ToString("yyyyMMdd").Equals(DateTime.Now.ToString("yyyyMMdd")))
                                {
                                    break;
                                }

                                if (dictInstrumentos[info.Value].NumeroNegocios == 0)
                                {
                                    continue;
                                }

                                string compradoraTopo = "";
                                foreach (KeyValuePair <RankingInfo, string> compradora in dictInstrumentos[info.Value].DictCompradorasMaioresVolumes)
                                {
                                    compradoraTopo = compradora.Value;
                                    break;
                                }
                                string vendedoraTopo = "";
                                foreach (KeyValuePair <RankingInfo, string> vendedora in dictInstrumentos[info.Value].DictVendedorasMaioresVolumes)
                                {
                                    vendedoraTopo = vendedora.Value;
                                    break;
                                }

                                listaOcorrencias += ((DateTime)dictInstrumentos[info.Value].DataUltimoNegocio).ToString("yyyyMMddHHmmss");
                                listaOcorrencias += String.Format("{0,-20}", info.Value);
                                listaOcorrencias += String.Format("{0:0000000000000}", info.Key.Valor);
                                listaOcorrencias += String.Format("{0:000000000000}", dictInstrumentos[info.Value].QuantidadePapeis);
                                listaOcorrencias += String.Format("{0:0000000000.00}", dictInstrumentos[info.Value].Preco).Replace('.', ',');
                                listaOcorrencias += String.Format("{0:00000000}", dictInstrumentos[info.Value].NumeroNegocios);
                                listaOcorrencias += compradoraTopo;
                                listaOcorrencias += vendedoraTopo;

                                logger.Debug(String.Format("HomeBroker Segmento[{0,-4}] Destaque[{1,1}] ({2,2}) {3,19:dd/MM/yyyy HH:mm:ss} {4,-14} {5, 13} {6, 12} {7, 13} {8,-8} {9,-8}",
                                                           segmentoMercado, tipoDestaque, ocorrencias + 1, dictInstrumentos[info.Value].DataUltimoNegocio, info.Value, info.Key.Valor,
                                                           dictInstrumentos[info.Value].QuantidadePapeis, dictInstrumentos[info.Value].Preco,
                                                           compradoraTopo, vendedoraTopo));

                                if (++ocorrencias >= MAX_ITENS_HOME_BROKER)
                                {
                                    break;
                                }
                            }
                        }
                    }

                    else if (tipoDestaque == TipoDestaqueEnum.MaisNegociadas)
                    {
                        lock (dictMaisNegociadosPorInstrumento)
                        {
                            foreach (KeyValuePair <RankingInfo, string> info in dictMaisNegociados[segmentoMercado])
                            {
                                // Apenas lista os destaques da mesma data atual
                                if (!((DateTime)dictInstrumentos[info.Value].DataUltimoNegocio).ToString("yyyyMMdd").Equals(DateTime.Now.ToString("yyyyMMdd")))
                                {
                                    break;
                                }

                                if (dictInstrumentos[info.Value].NumeroNegocios == 0)
                                {
                                    continue;
                                }

                                string compradoraTopo = "";
                                foreach (KeyValuePair <RankingInfo, string> compradora in dictInstrumentos[info.Value].DictCompradorasMaisNegociadas)
                                {
                                    compradoraTopo = compradora.Value;
                                    break;
                                }
                                string vendedoraTopo = "";
                                foreach (KeyValuePair <RankingInfo, string> vendedora in dictInstrumentos[info.Value].DictVendedorasMaisNegociadas)
                                {
                                    vendedoraTopo = vendedora.Value;
                                    break;
                                }

                                listaOcorrencias += ((DateTime)dictInstrumentos[info.Value].DataUltimoNegocio).ToString("yyyyMMddHHmmss");
                                listaOcorrencias += String.Format("{0,-20}", info.Value);
                                listaOcorrencias += String.Format("{0:0000000000000}", dictInstrumentos[info.Value].VolumeNegocios);
                                listaOcorrencias += String.Format("{0:000000000000}", dictInstrumentos[info.Value].QuantidadePapeis);
                                listaOcorrencias += String.Format("{0:0000000000.00}", dictInstrumentos[info.Value].Preco).Replace('.', ',');
                                listaOcorrencias += String.Format("{0:00000000}", info.Key.Valor);
                                listaOcorrencias += compradoraTopo;
                                listaOcorrencias += vendedoraTopo;

                                logger.Debug(String.Format("HomeBroker Segmento[{0,-4}] Destaque[{1,1}] ({2,2}) {3,19:dd/MM/yyyy HH:mm:ss} {4,-14} {5, 12} {6, 13} {7, 13} {8,-8} {9,-8}",
                                                           segmentoMercado, tipoDestaque, ocorrencias + 1, dictInstrumentos[info.Value].DataUltimoNegocio, info.Value, info.Key.Valor,
                                                           dictInstrumentos[info.Value].QuantidadePapeis, dictInstrumentos[info.Value].Preco,
                                                           compradoraTopo, vendedoraTopo));

                                if (++ocorrencias >= MAX_ITENS_HOME_BROKER)
                                {
                                    break;
                                }
                            }
                        }
                    }
                }

                mensagem += ocorrencias.ToString("D2");
                mensagem += listaOcorrencias;
            }
            catch (Exception ex)
            {
                logger.Fatal("ReceberNegociosDestaque(): " + ex.Message, ex);
            }

            return(mensagem);
        }
Ejemplo n.º 2
0
 public string ReceberNegociosDestaque(string segmentoMercado, TipoDestaqueEnum tipoDestaque)
 {
     return(MemoriaNegociosDestaque.ReceberNegociosDestaque(segmentoMercado, tipoDestaque));
 }