示例#1
0
        /// <summary>
        /// Monta a string da mensagem de negocio pra envio ao HomeBroker
        /// </summary>
        /// <param name="registroNegocio"></param>
        /// <returns></returns>
        public static string montarNegocioHomeBroker(NegocioBase registroNegocio)
        {
            StringBuilder   builder = new StringBuilder();
            NEGDadosNegocio negocio = registroNegocio.Negocio;


            builder.Append(MDSUtils.montaHeaderHomeBroker(registroNegocio.Instrumento,
                                                          ConstantesMDS.TIPO_REQUISICAO_HB_NEGOCIO, registroNegocio.TipoBolsa));

            // Corpo da mensagem MDS de Negocio
            if (String.IsNullOrEmpty(negocio.Data))
            {
                builder.Append("00000000");
            }
            else
            {
                builder.Append(negocio.Data);
            }

            if (String.IsNullOrEmpty(negocio.Hora))
            {
                builder.Append("000000000");
            }
            else
            {
                builder.Append(negocio.Hora.PadRight(9, '0'));
            }

            if (String.IsNullOrEmpty(negocio.Compradora))
            {
                builder.Append("00000000");
            }
            else
            {
                builder.Append(negocio.Compradora.PadLeft(8, '0'));
            }

            if (String.IsNullOrEmpty(negocio.Vendedora))
            {
                builder.Append("00000000");
            }
            else
            {
                builder.Append(negocio.Vendedora.PadLeft(8, '0'));
            }

            if (negocio.Preco < 0)
            {
                builder.Append("000000000,000");
            }
            else
            {
                builder.Append(negocio.Preco.ToString("000000000.000").Replace('.', ','));
            }

            builder.Append(negocio.Quantidade.ToString().PadLeft(12, '0'));

            if (negocio.PrecoMaximo < 0)
            {
                builder.Append("000000000,000");
            }
            else
            {
                builder.Append(negocio.PrecoMaximo.ToString("000000000.000").Replace('.', ','));
            }

            if (negocio.PrecoMinimo < 0)
            {
                builder.Append("000000000,000");
            }
            else
            {
                builder.Append(negocio.PrecoMinimo.ToString("000000000.000").Replace('.', ','));
            }


            //BigDecimal volumeTotal = new BigDecimal(0);
            //try
            //{
            //    if (dadosInstrumentos.getTipoBolsa().equals(ConstantesMDS.DESCRICAO_DE_BOLSA_BMF))
            //    {
            //        if (dadosInstrumentos.getPrecoMedio() != null && !dadosInstrumentos.getPrecoMedio().trim().isEmpty())
            //        {
            //            BigDecimal precoMedio = new BigDecimal(
            //                    dadosInstrumentos.getPrecoMedio().replace(',', '.'));
            //            if (!precoMedio.equals(new BigDecimal(0)))
            //            {
            //                volumeTotal = dadosInstrumentos.getVolumeTotal().
            //                    divide(precoMedio, 6, RoundingMode.HALF_UP);
            //            }
            //        }
            //    }
            //    else
            //    {
            //        volumeTotal = dadosInstrumentos.getVolumeTotal();
            //    }
            //}
            //catch (Exception ex) { }

            //builder.Append(String.format("%013d", volumeTotal.longValue()));
            builder.Append(negocio.VolumeTotal.ToString("0000000000000", CultureInfo.InvariantCulture));

            builder.Append(negocio.QtdeNegocios.ToString().PadLeft(8, '0'));

            Decimal variacao = Math.Abs(negocio.Variacao);

            if (negocio.Variacao >= Decimal.Zero)
            {
                builder.Append(" ");
            }
            else
            {
                builder.Append("-");
            }

            if (variacao > 99999 || variacao < -99999)
            {
                builder.Append("00000,00");
            }
            else
            {
                builder.Append(variacao.ToString("00000.00", CultureInfo.InvariantCulture).Replace('.', ','));
            }

            builder.Append(negocio.EstadoInstrumento.ToString());

            if (negocio.MelhorQuantidadeCompra < 0)
            {
                builder.Append("000000000000");
            }
            else
            {
                builder.Append(negocio.MelhorQuantidadeCompra.ToString().PadLeft(12, '0'));
            }

            if (negocio.MelhorQuantidadeVenda < 0)
            {
                builder.Append("000000000000");
            }
            else
            {
                builder.Append(negocio.MelhorQuantidadeVenda.ToString().PadLeft(12, '0'));
            }

            builder.Append(negocio.QtdeNegociadaDia.ToString().PadLeft(12, '0'));


            builder.Append(negocio.PrecoMedio.ToString("000000000.000", CultureInfo.InvariantCulture).Replace('.', ','));
            // Dados do Leilao
            builder.Append(negocio.PrecoTeoricoAbertura.ToString("000000000.000", CultureInfo.InvariantCulture).Replace('.', ','));

            if (negocio.Variacao >= Decimal.Zero)
            {
                builder.Append(" ");
            }
            else
            {
                builder.Append("-");
            }
            variacao = Math.Abs(negocio.VariacaoTeorica);

            builder.Append(variacao.ToString("00000.00", CultureInfo.InvariantCulture).Replace('.', ','));
            builder.Append(negocio.HorarioTeorico.ToString("yyyyMMddHHmmss"));

            return(builder.ToString());
        }
示例#2
0
        /// <summary>
        /// Monta a string da mensagem de negocio pra envio ao HomeBroker
        /// </summary>
        /// <param name="registroNegocio"></param>
        /// <returns></returns>
        public static string montarLivroNegociosHomeBroker(NegocioBase registroNegocio)
        {
            StringBuilder   builder = new StringBuilder();
            NEGDadosNegocio negocio = registroNegocio.Negocio;


            builder.Append(MDSUtils.montaHeaderHomeBroker(registroNegocio.Instrumento,
                                                          ConstantesMDS.TIPO_REQUISICAO_HB_LIVRO_NEGOCIOS, registroNegocio.TipoBolsa));

            int numItens    = 30; //TODO: parametrizar
            int posicaoItem = 0;

            while (posicaoItem < numItens &&
                   posicaoItem < registroNegocio.LivroNegocios.Count)
            {
                LNGDadosNegocio item = registroNegocio.LivroNegocios[posicaoItem];

                if (item != null)
                {
                    if (!String.IsNullOrEmpty(item.NumeroNegocio))
                    {
                        builder.Append(item.NumeroNegocio.PadLeft(8, '0'));
                    }
                    else
                    {
                        builder.Append("00000000");
                    }

                    if (!String.IsNullOrEmpty(item.Hora))
                    {
                        builder.Append(item.Hora.PadLeft(6, '0'));
                    }
                    else
                    {
                        builder.Append("000000");
                    }

                    builder.Append(item.Preco.ToString("0000000000.00"));
                    builder.Append(String.Format("{0:d12}", item.Quantidade));

                    if (!String.IsNullOrEmpty(item.Compradora))
                    {
                        builder.Append(item.Compradora.PadLeft(8, '0'));
                    }
                    else
                    {
                        builder.Append("00000000");
                    }

                    if (!String.IsNullOrEmpty(item.Vendedora))
                    {
                        builder.Append(item.Vendedora.PadLeft(8, '0'));
                    }
                    else
                    {
                        builder.Append("00000000");
                    }
                }

                posicaoItem++;
            }

            return(builder.ToString());
        }
示例#3
0
        /// <summary>
        /// Monta um dicionario de valores correspondente a um sinal/evento de negocio
        /// para o streamer
        /// </summary>
        /// <param name="negocio"></param>
        /// <returns></returns>
        public static Dictionary <string, string> montarNegocioStreamer(NEGDadosNegocio negocio, int casasDecimais)
        {
            Dictionary <string, string> mensagem = new Dictionary <String, String>();

            // Corpo da mensagem Streamer de Negocio
            if (String.IsNullOrEmpty(negocio.Data))
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_DATA, "00000000");  //DateTime.Now.ToString("yyyyMMdd"));
            }
            else
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_DATA, negocio.Data);
            }

            if (String.IsNullOrEmpty(negocio.Hora))
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_HORA, "000000000"); //DateTime.Now.ToString("HHmmssfff"));
            }
            else
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_HORA, negocio.Hora + "000");
            }

            if (String.IsNullOrEmpty(negocio.Compradora))
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_COMPRADORA, "0");
            }
            else
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_COMPRADORA, negocio.Compradora);
            }

            if (String.IsNullOrEmpty(negocio.Vendedora))
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_VENDEDORA, "0");
            }
            else
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_VENDEDORA, negocio.Vendedora);
            }

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_PRECO, String.Format("{0:f" + casasDecimais + "}", negocio.Preco).Replace('.', ','));

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_QUANTIDADE, negocio.Quantidade.ToString());

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_PRECO_ABERTURA, String.Format("{0:f" + casasDecimais + "}", negocio.PrecoAbertura).Replace('.', ','));


            // Preco de ajuste...revisar tratamento de BMF
            //if ( negocio.PrecoAjuste != Decimal.Zero )
            //    mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_PRECO_FECHAMENTO, String.Format("{0:f2}", negocio.PrecoAjuste).Replace('.', ','));
            //else
            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_PRECO_FECHAMENTO, String.Format("{0:f" + casasDecimais + "}", negocio.PrecoFechamento).Replace('.', ','));

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_MAXIMA_DIA, String.Format("{0:f" + casasDecimais + "}", negocio.PrecoMaximo).Replace('.', ','));

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_MINIMA_DIA, String.Format("{0:f" + casasDecimais + "}", negocio.PrecoMinimo).Replace('.', ','));

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_MEDIO, String.Format("{0:f" + casasDecimais + "}", negocio.PrecoMedio).Replace('.', ','));


            //Decimal volume = Decimal.Zero;
            //if ( negocio.VolumeTotal > Decimal.Zero && negocio.PrecoMedio > Decimal.Zero )
            //     volume = negocio.VolumeTotal / negocio.PrecoMedio;
            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_VOLUME_ACUMULADO, String.Format("{0:f" + casasDecimais + "}", negocio.VolumeTotal).Replace('.', ','));

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_QUANTIDADE_ACUMULADA_PAPEIS, negocio.QtdeNegociadaDia.ToString());

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_NUMERO_NEGOCIOS, negocio.QtdeNegocios.ToString());


            if (negocio.Variacao < Decimal.Zero)
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_INDICADOR_VARIACAO, "-");
            }
            else
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_INDICADOR_VARIACAO, " ");
            }

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_VARIACAO, String.Format("{0:f2}", Math.Abs(negocio.Variacao)).Replace('.', ','));

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_ESTADO_PAPEL, negocio.EstadoInstrumento.ToString());

            if (negocio.MelhorPrecoCompra == ConstantesMDS.PRECO_LIVRO_OFERTAS_MAX_VALUE)
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_MELHOR_OFERTA_COMPRA, "0,00");
            }
            else
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_MELHOR_OFERTA_COMPRA, String.Format("{0:f" + casasDecimais + "}", negocio.MelhorPrecoCompra).Replace('.', ','));
            }

            if (negocio.MelhorPrecoVenda == ConstantesMDS.PRECO_LIVRO_OFERTAS_MIN_VALUE)
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_MELHOR_OFERTA_VENDA, "0,00");
            }
            else
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_MELHOR_OFERTA_VENDA, String.Format("{0:f" + casasDecimais + "}", negocio.MelhorPrecoVenda).Replace('.', ','));
            }

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_MELHOR_QUANTIDADE_COMPRA, negocio.MelhorQuantidadeCompra.ToString());

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_MELHOR_QUANTIDADE_VENDA, negocio.MelhorQuantidadeVenda.ToString());

            // Informacoes do leilao
            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_PRECO_TEORICO_ABERTURA, String.Format("{0:f" + casasDecimais + "}", negocio.PrecoTeoricoAbertura).Replace('.', ','));

            if (negocio.VariacaoTeorica < Decimal.Zero)
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_INDICADOR_VARIACAO_TEORICA, "-");
            }
            else
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_INDICADOR_VARIACAO_TEORICA, " ");
            }

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_VARIACAO_TEORICA, String.Format("{0:f2}", Math.Abs(negocio.VariacaoTeorica)).Replace('.', ','));

            if (negocio.HorarioTeorico == DateTime.MinValue)
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_HORARIO_TEORICO, "00000000000000"); //negocio.HorarioTeorico.ToString("yyyyMMddHHmmss"));
            }
            else
            {
                mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_HORARIO_TEORICO, negocio.HorarioTeorico.ToString("yyyyMMddHHmmss"));
            }

            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_ESTADO_GRUPO, negocio.EstadoGrupo);
            mensagem.Add(ConstantesMDS.HTTP_NEGOCIO_ESTADO_PAPEL2, negocio.EstadoPapel2);

            return(mensagem);
        }