Пример #1
0
        private void ProcessarMensagemComposicaoIndice(string mensagem)
        {
            try
            {
                // Layout mensagem COMPOSICAO INDICE:
                //
                // Tipo de Mensagem     X(2)
                // Data                 N(8)        Formato AAAAMMDD
                // Hora                 N(9)        Formato HHMMSSmmm (mmm = milisegundos)
                // Código Instrumento   X(20)
                //
                // Quantidade itens     N(4)
                // Item 1               X(20)
                // ...
                // Item n               X(20)
                //
                string indice   = mensagem.Substring(19, 20).Trim();
                int    qtdItens = Convert.ToInt16(mensagem.Substring(39, 4), ciBR);

                for (int ct = 0; ct < qtdItens; ct++)
                {
                    CadastroBasico cadastroBasico = new CadastroBasico();

                    cadastroBasico.Instrumento          = indice + "@" + mensagem.Substring(43 + 20 * ct, 20).Trim();
                    cadastroBasico.InstrumentoPrincipal = indice;

                    _db.GravaCadastroBasico(cadastroBasico);
                    logger.DebugFormat("Gravado Composicao Indice: Indice/Instrumento[{0}]", cadastroBasico.Instrumento);
                }
            }
            catch (Exception ex)
            {
                logger.Error("ProcessarMensagemComposicaoIndice: " + ex.Message, ex);
            }
        }
Пример #2
0
        private void ProcessarMensagemCadastroBasico(string mensagem)
        {
            try
            {
                ANGCadastroBasico xxx = Utils.FromBinaryString <ANGCadastroBasico>(mensagem);
                // Layout mensagem CADASTRO BASICO:
                //
                // Tipo de Mensagem          X(2)
                // Data                      N(8)       Formato AAAAMMDD
                // Hora                      N(9)       Formato HHMMSSmmm (mmm = milisegundos)
                // Código Instrumento        X(20)
                //
                // Código ISIN               X(20)
                // Instrumento Principal     X(20)
                // Lote padrão               N(8)
                // Segmento Mercado          X(8)
                // Forma Cotação             N(8)
                // Grupo Cotação             X(4)
                // Data Vencimento           N(8)
                // Preço Exercício           N(13)
                // Indicador Opção           X(1)
                // Coeficiente Multiplicação N(13)
                // Data último negócio       N(8)       Formato AAAAMMDD
                // Hora último negócio       N(6)       Formato HHMMSS
                // Security Id Source        X(4)
                // Especificação             X(100)
                CadastroBasico cadastroBasico = new CadastroBasico();


                cadastroBasico.Instrumento          = xxx.Instrumento.ByteArrayToString().Trim();
                cadastroBasico.CodigoISIN           = xxx.CodigoIsin.ByteArrayToString().Trim();
                cadastroBasico.InstrumentoPrincipal = xxx.CodigoPapelObjeto.ByteArrayToString().Trim();
                cadastroBasico.LotePadrao           = Convert.ToInt32(xxx.LotePadrao.ByteArrayToString().Trim());
                cadastroBasico.SegmentoMercado      = xxx.SegmentoMercado.ByteArrayToString().Trim();
                cadastroBasico.FormaCotacao         = Convert.ToInt16(xxx.FormaCotacao.ByteArrayToString());
                cadastroBasico.GrupoCotacao         = xxx.GrupoCotacao.ByteArrayToString().Trim();
                if (!mensagem.Substring(107, 8).Equals("00000000"))
                {
                    cadastroBasico.DataVencimento = DateTime.ParseExact(xxx.DataVencimento.ByteArrayToString(), "yyyyMMdd", ciBR);
                }
                cadastroBasico.PrecoExercicio           = Convert.ToDouble(xxx.PrecoExercicio.ByteArrayToString(), ciBR);
                cadastroBasico.IndicadorOpcao           = xxx.IndicadorOpcao.ByteArrayToString();
                cadastroBasico.CoeficienteMultiplicacao = Convert.ToDouble(xxx.CoeficienteMultiplicacao.ByteArrayToString(), ciBR);
                if (!mensagem.Substring(142, 14).Equals("00000000000000"))
                {
                    cadastroBasico.DataUltimoNegocio = DateTime.ParseExact(xxx.DataHoraNegocio.ByteArrayToString(), "yyyyMMddHHmmss", ciBR);
                }
                cadastroBasico.SecurityIDSource = xxx.SecurityIDSource.ByteArrayToString().Trim();
                cadastroBasico.Especificacao    = xxx.Especificacao.ByteArrayToString().Trim();



                //cadastroBasico.Instrumento = mensagem.Substring(19, 20).Trim();
                //cadastroBasico.CodigoISIN = mensagem.Substring(39, 20).Trim();
                //cadastroBasico.InstrumentoPrincipal = mensagem.Substring(59, 20).Trim();
                //cadastroBasico.LotePadrao = Convert.ToInt32(mensagem.Substring(79, 8));
                //cadastroBasico.SegmentoMercado = mensagem.Substring(87, 8).Trim();
                //cadastroBasico.FormaCotacao = Convert.ToInt16(mensagem.Substring(95, 8));
                //cadastroBasico.GrupoCotacao = mensagem.Substring(103, 4).Trim();
                //if (!mensagem.Substring(107, 8).Equals("00000000"))
                //    cadastroBasico.DataVencimento = DateTime.ParseExact(mensagem.Substring(107, 8), "yyyyMMdd", ciBR);
                //cadastroBasico.PrecoExercicio = Convert.ToDouble(mensagem.Substring(115, 13), ciBR);
                //cadastroBasico.IndicadorOpcao = mensagem.Substring(128, 1);
                //cadastroBasico.CoeficienteMultiplicacao = Convert.ToDouble(mensagem.Substring(129, 13), ciBR);
                //if (!mensagem.Substring(142, 14).Equals("00000000000000"))
                //    cadastroBasico.DataUltimoNegocio = DateTime.ParseExact(mensagem.Substring(142, 14), "yyyyMMddHHmmss", ciBR);
                //cadastroBasico.SecurityIDSource = mensagem.Substring(156, 4).Trim();
                //cadastroBasico.Especificacao = mensagem.Substring(160).Trim();

                _db.GravaCadastroBasico(cadastroBasico);
                _db.GravaCadastroBasicoOMS(cadastroBasico);
                logger.DebugFormat("Gravado Cadastro Basico: Instrumento[{0}] DataUltimoNegocio[{1}] CodigoISIN[{2}] InstrumentoPrincipal[{3}] LotePadrao[{4}] SegmentoMercado[{5}] FormaCotacao[{6}] GrupoCotacao[{7}] DataVencimento[{8}] PrecoExercicio[{9}] IndicadorOpcao[{10}] CoeficienteMultiplicacao[{11}] Especificacao[{12}]",
                                   cadastroBasico.Instrumento,
                                   cadastroBasico.DataUltimoNegocio,
                                   cadastroBasico.CodigoISIN,
                                   cadastroBasico.InstrumentoPrincipal,
                                   cadastroBasico.LotePadrao,
                                   cadastroBasico.SegmentoMercado,
                                   cadastroBasico.FormaCotacao,
                                   cadastroBasico.GrupoCotacao,
                                   cadastroBasico.DataVencimento,
                                   cadastroBasico.PrecoExercicio,
                                   cadastroBasico.IndicadorOpcao,
                                   cadastroBasico.CoeficienteMultiplicacao,
                                   cadastroBasico.Especificacao);

                _db.GravaSecurityList(cadastroBasico);
                logger.DebugFormat("Gravado SecurityList: Instrumento[{0}] SecurityID[{1}]", cadastroBasico.Instrumento, cadastroBasico.CodigoISIN);
            }
            catch (Exception ex)
            {
                if (!String.IsNullOrEmpty(mensagem))
                {
                    logger.Error("MENSAGEM [" + mensagem + "]");
                }

                logger.Error("ProcessarMensagemCadastroBasico: " + ex.Message, ex);
            }
        }