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); }
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); } }
/// <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); } }
/// <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); }
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); }
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); }
/// <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); } }
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); }