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); }
public string ReceberNegociosDestaque(string segmentoMercado, TipoDestaqueEnum tipoDestaque) { return(MemoriaNegociosDestaque.ReceberNegociosDestaque(segmentoMercado, tipoDestaque)); }