Ejemplo n.º 1
0
        private void cancelarOrdem(OrdemInfo ordem)
        {
            try
            {
                OrdemCancelamentoInfo info = new OrdemCancelamentoInfo();
                info.ClOrdID     = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-C" + ordem.Symbol + ordem.ChannelID + ordem.Account;
                info.Account     = ordem.Account;
                info.ChannelID   = ordem.ChannelID;
                info.Exchange    = ordem.Exchange;
                info.OrigClOrdID = ordem.ClOrdID;
                info.Symbol      = ordem.Symbol;
                info.SecurityID  = ordem.SecurityID;
                info.Side        = ordem.Side;
                if (!String.IsNullOrEmpty(ordem.ExecBroker))
                {
                    info.ExecBroker = ordem.ExecBroker;
                }
                ExecutarCancelamentoOrdemRequest request = new ExecutarCancelamentoOrdemRequest();

                IRoteadorOrdens roteador = Ativador.Get <IRoteadorOrdens>();
                ExecutarCancelamentoOrdemResponse response = roteador.CancelarOrdem(request);

                if (response.DadosRetorno.StatusResposta != StatusRoteamentoEnum.Sucesso)
                {
                    logger.Error("Erro ao cancelar ordem [" + ordem.ClOrdID + "] alteracao de [" + ordem.ClOrdID + "]");
                    foreach (OcorrenciaRoteamentoOrdem ocorr in response.DadosRetorno.Ocorrencias)
                    {
                        logger.Error("Erro: " + ocorr.Ocorrencia);
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("cancelarOrdem(): " + ex.Message, ex);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Cancelamento da ordem
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btCancelar_Click(object sender, EventArgs e)
        {
            try
            {
                OrdemCancelamentoInfo ordem = new OrdemCancelamentoInfo();
                ordem.ClOrdID     = txtClOrdID.Text;
                ordem.OrigClOrdID = txtOrigOrdID.Text;
                ordem.ChannelID   = Convert.ToInt32(txtOperador.Text);
                if (cmbBolsa.SelectedItem.Equals("BOVESPA"))
                {
                    ordem.Exchange = "BOVESPA";
                }
                else
                {
                    ordem.Exchange = "BMF";
                }
                ordem.OrderID    = txtExchangeNumber.Text;
                ordem.Account    = Convert.ToInt32(txtCodCliente.Text);
                ordem.Symbol     = txtPapel.Text;
                ordem.SecurityID = txtSecurityId.Text;
                ordem.ExecBroker = txtTraderID.Text;
                ordem.Memo5149   = "Cancelto " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss.fff");

                if (txtSenderLocation.Text.Length > 0)
                {
                    ordem.SenderLocation = txtSenderLocation.Text;
                }

                if (txtExecTrader.Text.Length > 0)
                {
                    ordem.ExecutingTrader = txtExecTrader.Text;
                }

                /*if (!String.IsNullOrEmpty(txtCompIDBolsa.Text))
                 * {
                 *  ordem.CompIDBolsa = txtCompIDBolsa.Text;
                 * }*/


                if (rdCompra.Checked)
                {
                    ordem.Side = OrdemDirecaoEnum.Compra;
                }
                else
                {
                    ordem.Side = OrdemDirecaoEnum.Venda;
                }
                ordem.OrderQty = Convert.ToInt32(txtQtde.Text);

                IRoteadorOrdens roteador = Ativador.Get <IRoteadorOrdens>();

                if (roteador != null)
                {
                    ExecutarCancelamentoOrdemRequest request = new ExecutarCancelamentoOrdemRequest();

                    request.info = ordem;

                    ExecutarCancelamentoOrdemResponse resp = roteador.CancelarOrdem(request);

                    if (resp.DadosRetorno != null)
                    {
                        string msg = "";

                        foreach (OcorrenciaRoteamentoOrdem ocorr in resp.DadosRetorno.Ocorrencias)
                        {
                            msg += ocorr.Ocorrencia + "\r\n";
                        }

                        if (resp.DadosRetorno.StatusResposta == StatusRoteamentoEnum.Erro)
                        {
                            MessageBox.Show(msg);
                        }
                        else
                        {
                            _addMsg(msg);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
                logger.Error("Erro: " + ex.Message, ex);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Método responsável por enviar um cancelamento de ordens para o roteador cancelar.
        /// </summary>
        /// <param name="pParametroCancelamentoRequest"></param>
        /// <returns></returns>
        public EnviarCancelamentoOrdemResponse CancelarOrdem(EnviarCancelamentoOrdemRequest pParametroCancelamentoRequest)
        {
            logger.Info("Iniciar rotina de cancelamento de ordens");


            DateTime DataInicioExecucao = DateTime.Now;

            logger.Info("Data de inicio de execução:    " + DataInicioExecucao.ToString());

            EnviarCancelamentoOrdemResponse CancelamentoOrderResponse = new EnviarCancelamentoOrdemResponse();

            OrdemFIXResponse <OrdemCancelamentoInfo> OrdemCancelamentoInfo = this.ParsearOrdemCancelamentoCliente(pParametroCancelamentoRequest.ClienteCancelamentoInfo);

            if (OrdemCancelamentoInfo.StatusResposta == CriticaRiscoEnum.Sucesso)
            {
                logger.Info("Solicitação de cancelamento de ordem enviado ");
                logger.Info("Bovespa       : " + OrdemCancelamentoInfo.Objeto.Account.ToString());
                logger.Info("ChannelID     : " + OrdemCancelamentoInfo.Objeto.ChannelID.ToString());
                logger.Info("ClOrdID       : " + OrdemCancelamentoInfo.Objeto.ClOrdID.ToString());
                logger.Info("Exchange      : " + OrdemCancelamentoInfo.Objeto.Exchange.ToString());
                logger.Info("OrderID       : " + OrdemCancelamentoInfo.Objeto.OrderID.ToString());
                logger.Info("OrigClOrdID   : " + OrdemCancelamentoInfo.Objeto.OrigClOrdID.ToString());
                logger.Info("Side          : " + OrdemCancelamentoInfo.Objeto.Side.ToString());
                logger.Info("Symbol        : " + OrdemCancelamentoInfo.Objeto.Symbol.ToString());


                logger.Info("Mensagem parseado com sucesso!");

                logger.Info("Inicializa serviço de roteamento de ordem");
                //Invoca o serviço de roteamento de ordem
                IRoteadorOrdens ServicoRoteador = Ativador.Get <IRoteadorOrdens>();
                logger.Info("Serviço do ativador inicializado com sucesso");

                logger.Info("Calculando digito do cliente");
                OrdemCancelamentoInfo.Objeto.Account = RetornaCodigoCliente(CodigoCorretora, OrdemCancelamentoInfo.Objeto.Account);


                logger.Info("Envia ordem para o roteador");
                // Enviar a ordem para o roteador de ordens e aguarda o retorno.

                ExecutarCancelamentoOrdemResponse RespostaOrdem = ServicoRoteador.CancelarOrdem(
                    new ExecutarCancelamentoOrdemRequest()
                {
                    info = OrdemCancelamentoInfo.Objeto
                });

                if (RespostaOrdem.DadosRetorno.StatusResposta == StatusRoteamentoEnum.Sucesso)
                {
                    logger.Info("Cancelamento enviado com sucesso.");

                    CancelamentoOrderResponse.DescricaoResposta = RespostaOrdem.DadosRetorno.Ocorrencias[0].Ocorrencia;
                    CancelamentoOrderResponse.DataResposta      = DateTime.Now;
                    CancelamentoOrderResponse.StatusResposta    = CriticaRiscoEnum.Sucesso;
                }
                else
                {
                    logger.Info("Erro ao enviar o cancelamento para o Roteador.");

                    CancelamentoOrderResponse.DescricaoResposta = RespostaOrdem.DadosRetorno.Ocorrencias[0].Ocorrencia;
                    CancelamentoOrderResponse.DataResposta      = DateTime.Now;
                    CancelamentoOrderResponse.StatusResposta    = CriticaRiscoEnum.ErroNegocio;
                }
            }
            else
            {
                CancelamentoOrderResponse.DescricaoResposta = OrdemCancelamentoInfo.CriticaInfo[0].Critica.ToString();
                CancelamentoOrderResponse.CriticaInfo       = OrdemCancelamentoInfo.CriticaInfo;
                CancelamentoOrderResponse.DataResposta      = DateTime.Now;
                CancelamentoOrderResponse.StatusResposta    = CriticaRiscoEnum.Sucesso;
            }

            TimeSpan datafinal = (DateTime.Now - DataInicioExecucao);

            logger.Info("Tempo total de execução     :" + datafinal.ToString());

            return(CancelamentoOrderResponse);
        }