Пример #1
0
        private void EnviarOrdemRisco()
        {
            DateTime Inicio = DateTime.Now;

            EnviarOrdemRequest OrdemRequest = new EnviarOrdemRequest
            {
                OrdemInfo = new OrdemInfo
                {
                    Account      = IdCliente,
                    ChannelID    = 1,
                    ExecBroker   = "227",
                    ExpireDate   = DateTime.Now.AddDays(30),
                    OrderQty     = 1800,
                    OrdType      = OrdemTipoEnum.OnClose,
                    OrdStatus    = OrdemStatusEnum.NOVA,
                    Price        = 35.00,
                    RegisterTime = DateTime.Now,
                    Side         = OrdemDirecaoEnum.Compra,
                    Symbol       = "PETRH42",
                    TimeInForce  = OrdemValidadeEnum.ValidaAteSerCancelada,
                    Description  = "Envio de ordem de compra de opções."
                }
            };

            IServicoOrdens      servicoOrdem = Ativador.Get <IServicoOrdens>();
            EnviarOrdemResponse response     = servicoOrdem.EnviarOrdem(OrdemRequest);

            TimeSpan TempoGasto = (Inicio - DateTime.Now);
        }
Пример #2
0
        public EnviarOrdemBasketResponse EnviarOrdemBasket(EnviarOrdemBasketRequest _request)
        {
            EnviarOrdemBasketResponse _response = new EnviarOrdemBasketResponse();

            IServicoOrdens _gServico = Ativador.Get <IServicoOrdens>();

            try
            {
                ListarItensBasketResponse _resposta = new PersistenciaOrdens().SelecionarItemsBasket(_request.CodigoBasket);

                foreach (BasketItemInfo info in _resposta.ListaItemsBasket)
                {
                    EnviarOrdemRequest OrdemRequest = new EnviarOrdemRequest();

                    ClienteOrdemInfo _ClienteOrdemInfo = new ClienteOrdemInfo();

                    _ClienteOrdemInfo.CodigoCliente       = info.CodigoCliente;
                    _ClienteOrdemInfo.DataHoraSolicitacao = DateTime.Now;
                    _ClienteOrdemInfo.DataValidade        = info.DataValidade;

                    if (info.LadoOferta == "C")
                    {
                        _ClienteOrdemInfo.DirecaoOrdem = OrdemDirecaoEnum.Compra;
                    }
                    else
                    {
                        _ClienteOrdemInfo.DirecaoOrdem = OrdemDirecaoEnum.Venda;
                    }

                    _ClienteOrdemInfo.Instrumento        = info.Papel;
                    _ClienteOrdemInfo.PortaControleOrdem = _request.PortaControle.ToString();
                    _ClienteOrdemInfo.Preco              = double.Parse(info.Preco.ToString());
                    _ClienteOrdemInfo.Quantidade         = info.Quantidade;
                    _ClienteOrdemInfo.QuantidadeAparente = info.QuantidadeAparente;
                    _ClienteOrdemInfo.QuantidadeMinima   = info.QuantidadeMinima;
                    _ClienteOrdemInfo.TipoDeOrdem        = OrdemTipoEnum.Limitada;
                    _ClienteOrdemInfo.ValidadeOrdem      = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.ValidaParaODia;

                    OrdemRequest.ClienteOrdemInfo = _ClienteOrdemInfo;

                    EnviarOrdemResponse _resp = _gServico.EnviarOrdem(OrdemRequest);
                }

                new PersistenciaOrdens().AtualizarStatusBasket("D", _request.CodigoBasket);

                _response.Sucesso = true;

                return(_response);
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
Пример #3
0
        /// <summary>
        /// Method in charge of handle with the IServicoOrdens
        /// </summary>
        /// <param name="pEnviarOrdemSmartRequest"></param>
        private void SendOrder(object pEnviarOrdemSmartRequest)
        {
            //unboxing
            EnviarOrdemSmartRequest _EnviarOrdemSmartRequest = (EnviarOrdemSmartRequest)(pEnviarOrdemSmartRequest);

            EnviarOrdemRequest  OrderRequest  = new EnviarOrdemRequest();
            EnviarOrdemResponse OrderResponse = new EnviarOrdemResponse();

            try
            {
                IServicoOrdens ServicoOrdens = Ativador.Get <IServicoOrdens>();

                //FILLING SMARTTRADER ORDER

                OrderRequest.ClienteOrdemInfo.Account     = _EnviarOrdemSmartRequest.SmartOrder.Account;
                OrderRequest.ClienteOrdemInfo.Symbol      = _EnviarOrdemSmartRequest.SmartOrder.Instrument;
                OrderRequest.ClienteOrdemInfo.ExpireDate  = DateTime.Now;
                OrderRequest.ClienteOrdemInfo.TimeInForce = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.ValidaParaODia;

                if (_EnviarOrdemSmartRequest.SmartOrder.Side == Side.Compra)
                {
                    OrderRequest.ClienteOrdemInfo.Side = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemDirecaoEnum.Compra;
                }
                else if (_EnviarOrdemSmartRequest.SmartOrder.Side == Side.Venda)
                {
                    OrderRequest.ClienteOrdemInfo.Side = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemDirecaoEnum.Venda;
                }

                OrderRequest.ClienteOrdemInfo.Price       = _EnviarOrdemSmartRequest.SmartOrder.OperacaoInicio.PrecoDisparo;
                OrderRequest.ClienteOrdemInfo.OrdType     = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemTipoEnum.Limitada;
                OrderRequest.ClienteOrdemInfo.TimeInForce = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.ValidaParaODia;
                OrderRequest.ClienteOrdemInfo.OrderQty    = _EnviarOrdemSmartRequest.SmartOrder.Qty;
                OrderRequest.ClienteOrdemInfo.ChannelID   = 362;
                OrderRequest.ClienteOrdemInfo.CompIDOMS   = "SMART";
                OrderRequest.ClienteOrdemInfo.CumQty      = 0;
                OrderRequest.ClienteOrdemInfo.MinQty      = 0;
                OrderRequest.ClienteOrdemInfo.OrigClOrdID = "";
                OrderRequest.ClienteOrdemInfo.Memo5149    = "SMART";
                OrderRequest.ClienteOrdemInfo.StopStartID = _EnviarOrdemSmartRequest.SmartOrder.Id;

                OrderResponse = ServicoOrdens.EnviarOrdem(OrderRequest);
            }
            catch (Exception ex)
            {
                logger.Info("OCORREU UM ERRO AO ENVIAR A ORDEM PARA O SERVICO DE ORDENS. DESCRICAO: " + ex.Message);
            }
        }
Пример #4
0
        /// <summary>
        /// Metodo responsável por efetuar o controle de risco e tratamento da solicitação de envio de ordens.
        /// </summary>
        /// <param name="pParametroOrdemResquest">Informações da Ordem</param>
        /// <returns>EnviarOrdemResponse</returns>
        public EnviarOrdemResponse EnviarOrdem(EnviarOrdemRequest pParametroOrdemResquest)
        {
            EnviarOrdemResponse _response = new EnviarOrdemResponse();

            try
            {
                logger.Info("***** INICIA O PROCESSAMENTO DE UMA NOVA OFERTA *****");
                _response = new ProcessarOrdem().
                            EnviarOrdem(pParametroOrdemResquest);

                logger.Info("***** FINALIZA O PROCESSAMENTO DA OFERTA ********");
            }
            catch (Exception ex)
            {
                logger.Error("Ocorreu um erro ao invocar o método EnviarOrdem.", ex);
            }

            return(_response);
        }
Пример #5
0
        static void Main(string[] args)
        {
            EnviarOrdemRequest  request  = new EnviarOrdemRequest();
            EnviarOrdemResponse response = new EnviarOrdemResponse();

            ServicoOrdens ServicoOrdens = new ServicoOrdens();

            request.ClienteOrdemInfo.Account      = 31940;
            request.ClienteOrdemInfo.TransactTime = DateTime.Now;
            request.ClienteOrdemInfo.Side         = OrdemDirecaoEnum.Venda;
            request.ClienteOrdemInfo.Symbol       = "BVMF3";
            request.ClienteOrdemInfo.ChannelID    = 800;
            request.ClienteOrdemInfo.Price        = 12;
            request.ClienteOrdemInfo.OrderQty     = 150;
            request.ClienteOrdemInfo.CumQty       = 0;
            request.ClienteOrdemInfo.MinQty       = 0;
            request.ClienteOrdemInfo.OrdType      = OrdemTipoEnum.Limitada;
            request.ClienteOrdemInfo.TimeInForce  = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.ValidaParaODia;

            response = ServicoOrdens.EnviarOrdem(request);
        }
Пример #6
0
        public EnviarOrdemResponse EnviarOrdem(EnviarOrdemRequest pParametros, string CodigoCarteiraRecomendada)
        {
            EnviarOrdemResponse OrdemResposta = new EnviarOrdemResponse();

            OrdemFIXResponse <OrdemInfo> OrdemFixResponse = this.ParsearOrdemCliente(pParametros.ClienteOrdemInfo, CodigoCarteiraRecomendada);

            if (OrdemFixResponse.StatusResposta == OMS.Ordens.Lib.Enum.CriticaRiscoEnum.Sucesso)
            {
                EnviarOrdemRoteadorRequest OrdemRoteadorRequest = new EnviarOrdemRoteadorRequest();
                OrdemRoteadorRequest.OrdemInfo = OrdemFixResponse.Objeto;

                ValidacaoRiscoRequest RiscoRequisicao = new ValidacaoRiscoRequest();
                RiscoRequisicao.EnviarOrdemRequest = OrdemRoteadorRequest;

                ValidacaoRiscoResponse RiscoResposta = this.ValidarPipeLineOrdem(RiscoRequisicao, CodigoCarteiraRecomendada);

                if (RiscoResposta.CriticaInfo.Count >= 0)
                {
                    OrdemResposta.CriticaInfo = new List <PipeLineCriticaInfo>();

                    foreach (var RiscoItem in RiscoResposta.CriticaInfo)
                    {
                        PipeLineCriticaInfo _PipeLineCriticaInfo = new PipeLineCriticaInfo();

                        OrdemResposta.CriticaInfo.Add(
                            new PipeLineCriticaInfo()
                        {
                            Critica         = RiscoItem.Critica,
                            CriticaTipo     = (OMS.Ordens.Lib.Enum.CriticaRiscoEnum)RiscoItem.CriticaTipo,
                            DataHoraCritica = RiscoItem.DataHoraCritica
                        });
                    }

                    OrdemResposta.DataResposta      = RiscoResposta.DataResposta;
                    OrdemResposta.DescricaoResposta = RiscoResposta.DescricaoResposta;
                    OrdemResposta.StackTrace        = RiscoResposta.StackTrace;
                    OrdemResposta.StatusResposta    = (OMS.Ordens.Lib.Enum.CriticaRiscoEnum)RiscoResposta.StatusResposta;
                }
                else
                {
                    OrdemResposta.CriticaInfo = new List <PipeLineCriticaInfo>();

                    foreach (var RiscoItem in OrdemFixResponse.CriticaInfo)
                    {
                        PipeLineCriticaInfo _PipeLineCriticaInfo = new PipeLineCriticaInfo();

                        OrdemResposta.CriticaInfo.Add(
                            new PipeLineCriticaInfo()
                        {
                            Critica         = RiscoItem.Critica,
                            CriticaTipo     = (OMS.Ordens.Lib.Enum.CriticaRiscoEnum)RiscoItem.CriticaTipo,
                            DataHoraCritica = RiscoItem.DataHoraCritica
                        });
                    }

                    OrdemResposta.DataResposta      = OrdemResposta.DataResposta;
                    OrdemResposta.DescricaoResposta = OrdemResposta.DescricaoResposta;
                    OrdemResposta.StackTrace        = OrdemResposta.StackTrace;
                    OrdemResposta.StatusResposta    = (OMS.Ordens.Lib.Enum.CriticaRiscoEnum)OrdemResposta.StatusResposta;
                }
            }

            return(OrdemResposta);
        }
Пример #7
0
        /// <summary>
        /// Metodo responsável por invocar o pipeline de risco a verificar todos os parametros e permissões
        /// da ordem a ser enviada para o roteador de ordem. [ Efetua todo o controle pré-trading da ordem ]
        /// </summary>
        /// <param name="pParametros">Objeto de entidade da ordem do cliente</param>
        /// <returns> Resposta da requisição </returns>
        public EnviarOrdemResponse EnviarOrdem(EnviarOrdemRequest pParametros)
        {
            try
            {
                logger.Info("Solicitacao en envio de ordem acatada. Cliente: " + pParametros.ClienteOrdemInfo.CodigoCliente.ToString());

                logger.Info("Cliente.....             " + pParametros.ClienteOrdemInfo.CodigoCliente.ToString());
                logger.Info("CodigoStopStart.....     " + pParametros.ClienteOrdemInfo.CodigoStopStart.ToString());
                logger.Info("DataHoraSolicitacao..... " + pParametros.ClienteOrdemInfo.DataHoraSolicitacao.ToString());
                logger.Info("DataValidade.....        " + pParametros.ClienteOrdemInfo.DataValidade.ToString());
                logger.Info("DirecaoOrdem.....        " + pParametros.ClienteOrdemInfo.DirecaoOrdem.ToString());
                logger.Info("Instrumento.....         " + pParametros.ClienteOrdemInfo.Instrumento.ToString());
                logger.Info("Preco.....               " + pParametros.ClienteOrdemInfo.Preco.ToString());
                logger.Info("Quantidade.....          " + pParametros.ClienteOrdemInfo.Quantidade.ToString());
                logger.Info("TipoDeOrdem.....         " + pParametros.ClienteOrdemInfo.TipoDeOrdem.ToString());
                logger.Info("ValidadeOrdem.....       " + pParametros.ClienteOrdemInfo.ValidadeOrdem.ToString());
                logger.Info("QuantidadeMinima...      " + pParametros.ClienteOrdemInfo.QuantidadeMinima.ToString());
                logger.Info("QuantidadeAparente...    " + pParametros.ClienteOrdemInfo.QuantidadeAparente.ToString());

                EnviarOrdemResponse OrdemResposta = new EnviarOrdemResponse();

                #region  [ Validação do formato da mensagem enviada ]

                logger.Info("Verifica se todos os campos da solicitação foram preenchidos corretamente");

                // VALIDA SE OS ATRIBUTOS INFORMADOS PELO CLIENTE SÃO VALIDOS
                ValidarFormatoOrdemResponse ValidarFormatoOrdemResponse =
                    this.ValidarFormatoOrdemCliente(pParametros.ClienteOrdemInfo);

                //Obtem o numero da porta de controle a ser roteada pelo OMS

                #region Obter a porta de roteamento pelo perfil do cliente

                //logger.Info("Verifica a porta que a ordem sera roteada");
                //if (pParametros.ClienteOrdemInfo.PortaControleOrdem != CodigoPortaRepassadorOrdem.ToString())
                //{
                //    int GrupoAlavancagemCliente = new PersistenciaOrdens().ObterCodigoGrupoAlavancagem(pParametros.ClienteOrdemInfo.CodigoCliente);
                //    logger.Info("Codigo do grupo de alavancagem do cliente : " + GrupoAlavancagemCliente.ToString());

                //    if(GrupoAlavancagemCliente == CodigoGrupoAlavancagemHomeBroker)
                //    {
                //        logger.Info("Cliente HomeBroker");
                //        pParametros.ClienteOrdemInfo.PortaControleOrdem = CodigoPortaClienteHomeBroker.ToString();
                //    }

                //    if (GrupoAlavancagemCliente == CodigoGrupoAlavancagemDesktop)
                //    {
                //        logger.Info("Cliente Assessor");
                //        pParametros.ClienteOrdemInfo.PortaControleOrdem = CodigoPortaClienteAssessor.ToString();
                //    }

                //    if ((GrupoAlavancagemCliente != CodigoGrupoAlavancagemDesktop) && (GrupoAlavancagemCliente != CodigoGrupoAlavancagemHomeBroker))
                //    {
                //        // caso não encontre cobrar tabela mesa.
                //        pParametros.ClienteOrdemInfo.PortaControleOrdem = CodigoPortaClienteAssessor.ToString();
                //    }

                //    logger.Info("Numero da porta a ser roteado : " + pParametros.ClienteOrdemInfo.PortaControleOrdem);
                //}
                //else
                //{
                //    pParametros.ClienteOrdemInfo.PortaControleOrdem = CodigoPortaRepassadorOrdem.ToString();
                //    logger.Info("Numero da porta a ser roteado : " + pParametros.ClienteOrdemInfo.PortaControleOrdem);
                //}

                #endregion

                // VERIFICA SE A MENSAGEM ENVIADA PELO CLIENTE É VALIDA.
                if (ValidarFormatoOrdemResponse.StatusResposta == CriticaRiscoEnum.Sucesso)
                {
                    #region  [ Parseador de Mensagem FIX ]

                    logger.Info("Inicia composição da mensagem FIX");

                    // INICIA PARSEADOR DE MENSAGEM PARA O FORMATO FIX.
                    OrdemFIXResponse <OrdemInfo> OrdemFixResponse = this.ParsearOrdemCliente(pParametros.ClienteOrdemInfo);

                    if (OrdemFixResponse.StatusResposta == CriticaRiscoEnum.ErroNegocio)
                    {
                        logger.Info("Mensagem FIX contem com sucesso");
                        logger.Info("Descrição da critica    : Instrumento não encontrado");

                        //VERIFICA SE EXISTEM CRITICAS A SEREM OBSERVADAS
                        if (OrdemFixResponse.CriticaInfo.Count >= 0)
                        {
                            OrdemResposta.CriticaInfo =
                                new List <PipeLineCriticaInfo>();

                            // EFETUA O DE / PARA DOS OBJETOS PARA NÃO CRIAR VINCULO ALGUM ENTRE
                            // AS BIBLIOTECAS DE RISCO E ORDEM
                            foreach (var RiscoItem in OrdemFixResponse.CriticaInfo)
                            {
                                PipeLineCriticaInfo _PipeLineCriticaInfo
                                    = new PipeLineCriticaInfo();

                                OrdemResposta.CriticaInfo.Add(
                                    new PipeLineCriticaInfo()
                                {
                                    Critica         = RiscoItem.Critica,
                                    CriticaTipo     = (CriticaRiscoEnum)RiscoItem.CriticaTipo,
                                    DataHoraCritica = RiscoItem.DataHoraCritica
                                });
                            }

                            // FORMATA A MENSAGEM DE SAIDA
                            OrdemResposta.DataResposta      = OrdemFixResponse.DataResposta;
                            OrdemResposta.DescricaoResposta = OrdemFixResponse.DescricaoResposta;
                            OrdemResposta.StackTrace        = OrdemFixResponse.StackTrace;
                            OrdemResposta.StatusResposta    = (CriticaRiscoEnum)OrdemFixResponse.StatusResposta;

                            return(OrdemResposta);
                        }
                    }

                    #endregion

                    logger.Info("Mensagem FIX composta com sucesso");

                    // OBTEM A ORDEM JÁ PARSEADA NO FORMATO FIX.
                    EnviarOrdemRoteadorRequest OrdemRoteadorRequest = new EnviarOrdemRoteadorRequest()
                    {
                        OrdemInfo = OrdemFixResponse.Objeto
                    };

                    #endregion

                    #region [ Efetua chamada para as validações do sistema de risco ]

                    ValidacaoRiscoRequest RiscoRequisicao = new ValidacaoRiscoRequest()
                    {
                        EnviarOrdemRequest = OrdemRoteadorRequest
                    };

                    logger.Info("Inicia rotina de validação de risco: PipeLine Risco");

                    DateTime DataInicioExecucao = DateTime.Now;
                    logger.Info("Data inicial da solicitação:     " + DataInicioExecucao.ToString());

                    // EFETUA CHAMADA DO METODO VALIDAPIPEPINE RISCO PARA VALIDAR A ORDEM ENVIADA PELO CLIENTE.
                    ValidacaoRiscoResponse RiscoResposta =
                        new ServicoRisco().ValidarPipeLineRisco(RiscoRequisicao);

                    TimeSpan datafinal = (DateTime.Now - DataInicioExecucao);

                    #endregion

                    #region [ Tratamento da resposta da validação de risco ]

                    logger.Info("Prepara a resposta da solicitação");

                    //VERIFICA SE EXISTEM CRITICAS A SEREM OBSERVADAS
                    if (RiscoResposta.CriticaInfo.Count >= 0)
                    {
                        OrdemResposta.CriticaInfo =
                            new List <PipeLineCriticaInfo>();

                        // EFETUA O DE / PARA DOS OBJETOS PARA NÃO CRIAR VINCULO ALGUM ENTRE
                        // AS BIBLIOTECAS DE RISCO E ORDEM
                        foreach (var RiscoItem in RiscoResposta.CriticaInfo)
                        {
                            PipeLineCriticaInfo _PipeLineCriticaInfo
                                = new PipeLineCriticaInfo();

                            OrdemResposta.CriticaInfo.Add(
                                new PipeLineCriticaInfo()
                            {
                                Critica         = RiscoItem.Critica,
                                CriticaTipo     = (CriticaRiscoEnum)RiscoItem.CriticaTipo,
                                DataHoraCritica = RiscoItem.DataHoraCritica
                            });
                        }

                        // FORMATA A MENSAGEM DE SAIDA
                        OrdemResposta.DataResposta      = RiscoResposta.DataResposta;
                        OrdemResposta.DescricaoResposta = RiscoResposta.DescricaoResposta;
                        OrdemResposta.StackTrace        = RiscoResposta.StackTrace;
                        OrdemResposta.StatusResposta    = (CriticaRiscoEnum)RiscoResposta.StatusResposta;

                        logger.Info("Solicitação de resposta enviado ao solicitante com sucesso.");
                        logger.Info("Tempo Total de execução   :" + datafinal.ToString());
                    }

                    #endregion
                }
                else
                // ERRO NA FORMATACAO DA MENSAGEM
                if (ValidarFormatoOrdemResponse.StatusResposta == CriticaRiscoEnum.ErroFormatoMensagem)
                {
                    logger.Info("Ocorreu um erro ao formatar a mensagem de retorno.");

                    #region [ Efetua tratamento da resposta da validação da mensamgem ]

                    OrdemResposta.CriticaInfo =
                        new List <PipeLineCriticaInfo>();

                    // EFETUA O DE / PARA DOS OBJETOS PARA NÃO CRIAR VINCULO ALGUM ENTRE
                    // AS BIBLIOTECAS DE RISCO E ORDEM
                    foreach (var RiscoItem in ValidarFormatoOrdemResponse.CriticaInfo)
                    {
                        PipeLineCriticaInfo _PipeLineCriticaInfo
                            = new PipeLineCriticaInfo();

                        OrdemResposta.CriticaInfo.Add(
                            new PipeLineCriticaInfo()
                        {
                            Critica         = RiscoItem.Critica,
                            CriticaTipo     = (CriticaRiscoEnum)RiscoItem.CriticaTipo,
                            DataHoraCritica = RiscoItem.DataHoraCritica
                        });
                    }

                    // FORMATA A MENSAGEM DE SAIDA
                    OrdemResposta.DataResposta      = ValidarFormatoOrdemResponse.DataResposta;
                    OrdemResposta.DescricaoResposta = ValidarFormatoOrdemResponse.DescricaoResposta;
                    OrdemResposta.StackTrace        = ValidarFormatoOrdemResponse.StackTrace;
                    OrdemResposta.StatusResposta    = (CriticaRiscoEnum)ValidarFormatoOrdemResponse.StatusResposta;

                    logger.Info("Envia mensagem de retorno com o erro.");

                    #endregion
                }

                return(OrdemResposta);
            }
            catch (Exception ex)
            {
                logger.Error("Erro :" + ex.Message, ex);
                return(null);
            }
        }
Пример #8
0
        private void EnviarOrdem()
        {
            EnviarOrdemRequest  request  = new EnviarOrdemRequest();
            EnviarOrdemResponse response = new EnviarOrdemResponse();


            ServicoOrdens ServicoOrdens = new ServicoOrdens();

            // IServicoOrdens ServicoOrdens = Ativador.Get<IServicoOrdens>();

            request.ClienteOrdemInfo.Account = txtCliente.Text.DBToInt32();

            request.ClienteOrdemInfo.Symbol = txtPapel.Text.ToString();

            #region Validade

            if (cboValidade.Text == "ValidaParaoDia")
            {
                request.ClienteOrdemInfo.ExpireDate  = DateTime.Parse(txtData.Text);
                request.ClienteOrdemInfo.TimeInForce = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.ValidaParaODia;
            }

            if (cboValidade.Text == "ValidaAteDeterminadaData")
            {
                request.ClienteOrdemInfo.ExpireDate  = DateTime.Parse(txtData.Text);
                request.ClienteOrdemInfo.TimeInForce = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.ValidaParaODia;
            }

            if (cboValidade.Text == "ExecutaIntegralouCancela")
            {
                request.ClienteOrdemInfo.ExpireDate  = DateTime.Parse(txtData.Text);
                request.ClienteOrdemInfo.TimeInForce = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.ExecutaIntegralOuCancela;
            }

            if (cboValidade.Text == "ExecutaIntegralParcialouCancela")
            {
                request.ClienteOrdemInfo.ExpireDate  = DateTime.Parse(txtData.Text);
                request.ClienteOrdemInfo.TimeInForce = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.ExecutaIntegralParcialOuCancela;
            }

            if (cboValidade.Text == "FechamentoDoMercado")
            {
                request.ClienteOrdemInfo.ExpireDate  = DateTime.Parse(txtData.Text);
                request.ClienteOrdemInfo.TimeInForce = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.FechamentoDoMercado;
            }

            if (cboValidade.Text == "BoaParaLeilao")
            {
                request.ClienteOrdemInfo.ExpireDate  = DateTime.Parse(txtData.Text);
                request.ClienteOrdemInfo.TimeInForce = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.BoaParaLeilao;
            }

            if (cboValidade.Text == "ValidaParaAberturaDoMercado")
            {
                request.ClienteOrdemInfo.ExpireDate  = DateTime.Parse(txtData.Text);
                request.ClienteOrdemInfo.TimeInForce = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.ValidaParaAberturaDoMercado;
            }

            #endregion

            #region Tipo Ordem

            // request.ClienteOrdemInfo.TimeInForce = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.ValidaAteSerCancelada;

            #endregion


            if (cboSentido.SelectedItem == "COMPRA")
            {
                request.ClienteOrdemInfo.Side = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemDirecaoEnum.Compra;
            }
            else
            {
                request.ClienteOrdemInfo.Side = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemDirecaoEnum.Venda;
            }



            request.ClienteOrdemInfo.Price       = double.Parse(cboPreco.Text.ToString());
            request.ClienteOrdemInfo.OrdType     = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemTipoEnum.Limitada;
            request.ClienteOrdemInfo.TimeInForce = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.ValidaParaODia;
            // request.ClienteOrdemInfo.ExecBroker = "156";

            request.ClienteOrdemInfo.OrderQty    = int.Parse(txtQuantidade.Text);
            request.ClienteOrdemInfo.MaxFloor    = int.Parse(txtQuantidadeAparente.Text);
            request.ClienteOrdemInfo.MinQty      = int.Parse(txtQuantidadeMinima.Text);
            request.ClienteOrdemInfo.ChannelID   = int.Parse(txtChannelID.Text);
            request.ClienteOrdemInfo.OrigClOrdID = txtCLordID.Text;
            //request.ClienteOrdemInfo.StopPrice = double.Parse(txtStopStart.Text);

            if (txtStopStart.Text != string.Empty)
            {
                request.ClienteOrdemInfo.StopPrice = double.Parse(txtStopStart.Text);
            }

            request.ClienteOrdemInfo.CompIDOMS = "HB";

            response = ServicoOrdens.EnviarOrdem(request);

            MessageBox.Show(response.CriticaInfo[0].Critica);
        }