コード例 #1
0
        /// <summary>
        /// Alteracao da Ordem
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btAlterar_Click(object sender, EventArgs e)
        {
            try
            {
                OrdemInfo ordem = new OrdemInfo();

                ordem.OrigClOrdID = txtOrigOrdID.Text;
                ordem.ClOrdID     = txtClOrdID.Text;
                ordem.Account     = Convert.ToInt32(txtCodCliente.Text);
                ordem.ChannelID   = Convert.ToInt32(txtOperador.Text);

                if (cmbBolsa.SelectedItem.Equals("BOVESPA"))
                {
                    ordem.Exchange = "BOVESPA";
                }
                else
                {
                    ordem.Exchange = "BMF";
                }

                ordem.ExchangeNumberID = txtExchangeNumber.Text;
                ordem.Price            = Convert.ToDouble(txtPreco.Text);
                ordem.OrderQty         = Convert.ToInt32(txtQtde.Text);
                ordem.MinQty           = Convert.ToInt32(txtQtdeMin.Text);
                ordem.MaxFloor         = Convert.ToInt32(txtQtdeAparente.Text);

                ordem.Symbol     = txtPapel.Text;
                ordem.SecurityID = txtSecurityId.Text;
                ordem.ExecBroker = txtTraderID.Text;
                ordem.Memo5149   = "Alteracao " + 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 (rdCompra.Checked)
                {
                    ordem.Side = OrdemDirecaoEnum.Compra;
                }
                else
                {
                    ordem.Side = OrdemDirecaoEnum.Venda;
                }

                switch (cmbOrderType.SelectedIndex)
                {
                case 0: ordem.OrdType = OrdemTipoEnum.Limitada; break;

                case 1: ordem.OrdType = OrdemTipoEnum.StopLimitada; break;

                case 2: ordem.OrdType = OrdemTipoEnum.MarketWithLeftOverLimit; break;

                case 3: ordem.OrdType = OrdemTipoEnum.OnClose; break;

                case 4: ordem.OrdType = OrdemTipoEnum.StopStart; break;

                case 5: ordem.OrdType = OrdemTipoEnum.Mercado; break;

                case 6: ordem.OrdType = OrdemTipoEnum.StopLoss; break;

                default:
                    ordem.OrdType = OrdemTipoEnum.OnClose; break;
                }


                //0- Para o dia");
                //1- Executa ou cancela");
                //2- Tudo ou Nada");
                //3- Ate cancelar");
                //4- Data especifica");
                //5- Abertura Mercado");
                //6- Fechamento Mercado");
                //7- Boa para Leilao");
                switch (cmbTipoValidade.SelectedIndex)
                {
                case 0:
                    ordem.TimeInForce = OrdemValidadeEnum.ValidaParaODia;
                    ordem.ExpireDate  = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
                    break;

                case 1: ordem.TimeInForce = OrdemValidadeEnum.ExecutaIntegralParcialOuCancela; break;

                case 2: ordem.TimeInForce = OrdemValidadeEnum.ExecutaIntegralOuCancela; break;

                case 3: ordem.TimeInForce = OrdemValidadeEnum.ValidaAteSerCancelada; break;

                case 4:
                    ordem.TimeInForce = OrdemValidadeEnum.ValidoAteDeterminadaData;

                    ordem.ExpireDate = DateTime.ParseExact(txtDataValidade.Text + " 23:59:59", "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                    break;

                case 5: ordem.TimeInForce = OrdemValidadeEnum.ValidaParaAberturaDoMercado; break;

                case 6: ordem.TimeInForce = OrdemValidadeEnum.FechamentoDoMercado; break;

                case 7: ordem.TimeInForce = OrdemValidadeEnum.BoaParaLeilao; break;

                default:
                    MessageBox.Show("Time in force invalido");
                    break;
                }

                if (txtStopPX.Text.Length > 0 && Convert.ToDouble(txtStopPX.Text) > 0)
                {
                    ordem.StopPrice = Convert.ToDouble(txtStopPX.Text);
                }

                if (txtInvestorID.Text.Length > 0)
                {
                    ordem.InvestorID = txtInvestorID.Text;
                }

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

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

                    request.info = ordem;

                    ExecutarModificacaoOrdensResponse resp = roteador.ModificarOrdem(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);

                            lock (ofertasenviadas)
                            {
                                ofertasenviadas.Add(ordem);

                                SerializadorOfertas.SaveOfertas(ofertasenviadas);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
                logger.Error("Erro: " + ex.Message, ex);
            }
        }
コード例 #2
0
        private void btOrderX_Click(object sender, EventArgs e)
        {
            try
            {
                frmPontaVenda frm = new frmPontaVenda();

                OrdemInfo ordemCompra = new OrdemInfo();

                ordemCompra.ClOrdID   = txtClOrdID.Text;
                ordemCompra.Account   = Convert.ToInt32(txtCodCliente.Text);
                ordemCompra.ChannelID = Convert.ToInt32(txtOperador.Text);

                if (cmbBolsa.SelectedItem.Equals("BOVESPA"))
                {
                    ordemCompra.Exchange = "BOVESPA";
                }
                else
                {
                    ordemCompra.Exchange = "BMF";
                }

                ordemCompra.ExchangeNumberID = txtExchangeNumber.Text;
                ordemCompra.Price            = Convert.ToDouble(txtPreco.Text);
                ordemCompra.OrderQty         = Convert.ToInt32(txtQtde.Text);
                ordemCompra.MinQty           = Convert.ToInt32(txtQtdeMin.Text);
                ordemCompra.MaxFloor         = Convert.ToInt32(txtQtdeAparente.Text);
                ordemCompra.Symbol           = txtPapel.Text;
                ordemCompra.SecurityID       = txtSecurityId.Text;
                ordemCompra.RegisterTime     = DateTime.Now;
                ordemCompra.TransactTime     = DateTime.Now;
                ordemCompra.ExecBroker       = txtTraderID.Text;

                if (rdCompra.Checked)
                {
                    ordemCompra.Side = OrdemDirecaoEnum.Compra;
                }
                else
                {
                    ordemCompra.Side = OrdemDirecaoEnum.Venda;
                }

                if (txtStopPX.Text.Length > 0 && Convert.ToDouble(txtStopPX.Text) > 0)
                {
                    ordemCompra.StopPrice = Convert.ToDouble(txtStopPX.Text);
                }

                if (txtInvestorID.Text.Length > 0)
                {
                    ordemCompra.InvestorID = txtInvestorID.Text;
                }

                switch (cmbOrderType.SelectedIndex)
                {
                case 0: ordemCompra.OrdType = OrdemTipoEnum.Limitada; break;

                case 1: ordemCompra.OrdType = OrdemTipoEnum.StopLimitada; break;

                case 2: ordemCompra.OrdType = OrdemTipoEnum.MarketWithLeftOverLimit; break;

                case 3: ordemCompra.OrdType = OrdemTipoEnum.OnClose; break;

                case 4: ordemCompra.OrdType = OrdemTipoEnum.StopStart; break;

                case 5: ordemCompra.OrdType = OrdemTipoEnum.Mercado; break;

                case 6: ordemCompra.OrdType = OrdemTipoEnum.StopLoss; break;

                default:
                    ordemCompra.OrdType = OrdemTipoEnum.OnClose; break;
                }


                switch (cmbTipoValidade.SelectedIndex)
                {
                case 0:
                    ordemCompra.TimeInForce = OrdemValidadeEnum.ValidaParaODia;
                    ordemCompra.ExpireDate  = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
                    break;

                case 1: ordemCompra.TimeInForce = OrdemValidadeEnum.ExecutaIntegralParcialOuCancela; break;

                case 2: ordemCompra.TimeInForce = OrdemValidadeEnum.ExecutaIntegralOuCancela; break;

                case 3: ordemCompra.TimeInForce = OrdemValidadeEnum.ValidaAteSerCancelada; break;

                case 4:
                    ordemCompra.TimeInForce = OrdemValidadeEnum.ValidoAteDeterminadaData;

                    ordemCompra.ExpireDate = DateTime.ParseExact(txtDataValidade.Text + " 23:59:59", "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                    break;

                default:
                    ordemCompra.TimeInForce = OrdemValidadeEnum.ValidaParaAberturaDoMercado;
                    break;
                }

                lastCLOrdID++;
                frm.ClOrdID = lastCLOrdID.ToString();
                frm.Qtde    = txtQtde.Text;

                DialogResult result = frm.ShowDialog();

                if (result == DialogResult.OK)
                {
                    OrdemInfo ordemVenda = RoteadorOrdensUtil.CloneOrder(ordemCompra);

                    ordemVenda.Account  = Convert.ToInt32(frm.Account);
                    ordemVenda.OrderQty = Convert.ToInt32(frm.Qtde);
                    ordemVenda.ClOrdID  = frm.ClOrdID;
                    if (frm.InvestorID.Length > 0)
                    {
                        ordemVenda.InvestorID = frm.ClOrdID;
                    }

                    OrdemCrossInfo cross = new OrdemCrossInfo();
                    cross.ChannelID        = ordemCompra.ChannelID;
                    cross.CrossID          = ordemCompra.ClOrdID + "X";
                    cross.Exchange         = ordemCompra.Exchange;
                    cross.OrdType          = ordemCompra.OrdType;
                    cross.Price            = ordemCompra.Price;
                    cross.SecurityID       = ordemCompra.SecurityID;
                    cross.SecurityIDSource = ordemCompra.SecurityIDSource;
                    cross.Symbol           = ordemCompra.Symbol;
                    cross.TransactTime     = ordemCompra.RegisterTime;

                    cross.OrdemInfoCompra = ordemCompra;
                    cross.OrdemInfoVenda  = ordemVenda;

                    cross.Memo5149 = "Cross " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss.fff");

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

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

                        request.info = cross;

                        ExecutarOrdemCrossResponse resp = roteador.ExecutarOrdemCross(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);

                                lock (ofertasenviadas)
                                {
                                    ofertasenviadas.Add(ordemCompra);

                                    SerializadorOfertas.SaveOfertas(ofertasenviadas);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _addMsg(ex.Message);
                logger.Error("Erro: " + ex.Message, ex);
            }

            lastCLOrdID++;
            txtClOrdID.Text = lastCLOrdID.ToString();
        }
コード例 #3
0
        public void OrdemAlterada(OrdemInfo report)
        {
            string msg = "Order Dump Begin =======================\r\n";

            msg += "\r\n";

            msg += "OrdemInfo:\r\n";
            msg += "==========\r\n";
            msg += "Account .........: " + report.Account + "\r\n";
            msg += "Numero da ordem .: " + report.ClOrdID + "\r\n";
            msg += "Symbol ..........: " + report.Symbol + "\r\n";
            msg += "Bolsa ...........: " + report.Exchange + "\r\n";
            msg += "ExchangeNumber ..: " + report.ExchangeNumberID + "\r\n";
            msg += "Status ..........: " + report.OrdStatus + "\r\n";
            msg += "Quantidade ......: " + report.OrderQty + "\r\n";
            msg += "Qtde restante ...: " + report.OrderQtyRemmaining + "\r\n";
            msg += "Preco ...........: " + report.Price + "\r\n";
            msg += "Memo5149 ........: " + report.Memo5149 + "\r\n";

            msg += "\r\n";
            msg += "AcompanhamentoOrdemInfo:\r\n";
            msg += "========================\r\n";

            int i = 0;

            foreach (AcompanhamentoOrdemInfo acompanhamento in report.Acompanhamentos)
            {
                msg += "Item " + i++ + " \r\n";
                msg += "---------\r\n";
                msg += "NumeroControleOrdem ..: " + acompanhamento.NumeroControleOrdem + "\r\n";
                msg += "CodigoDoCliente ......: " + acompanhamento.CodigoDoCliente + "\r\n";
                msg += "CodigoResposta .......: " + acompanhamento.CodigoResposta + "\r\n";
                msg += "CodigoTransacao ......: " + acompanhamento.CodigoTransacao + "\r\n";
                msg += "Instrumento ..........: " + acompanhamento.Instrumento + "\r\n";
                msg += "CanalNegociacao ......: " + acompanhamento.CanalNegociacao + "\r\n";
                msg += "Direcao ..............: " + acompanhamento.Direcao + "\r\n";
                msg += "QuantidadeSoliciada ..: " + acompanhamento.QuantidadeSolicitada + "\r\n";
                msg += "QuantidadeExecutada ..: " + acompanhamento.QuantidadeExecutada + "\r\n";
                msg += "Preco ................: " + acompanhamento.Preco + "\r\n";
                msg += "StatusOrdem ..........: " + acompanhamento.StatusOrdem + "\r\n";
                msg += "DataOrdemEnvio .......: " + acompanhamento.DataOrdemEnvio + "\r\n";
                msg += "DataAtualizacao ......: " + acompanhamento.DataAtualizacao + "\r\n";
                msg += "CodigoRejeicao .......: " + acompanhamento.CodigoRejeicao + "\r\n";
                msg += "Descricao ............: " + acompanhamento.Descricao + "\r\n";
            }

            msg += "\r\nOrder Dump End =========================\r\n";

            if (report.FixMsgSeqNum > 0)
            {
                txtFixBeginSeqNo.Text = report.FixMsgSeqNum.ToString();
                txtFixEndSeqNo.Text   = (report.FixMsgSeqNum + 1).ToString();
            }

            _addMsg(msg);

            lock (ofertasenviadas)
            {
                for (int j = 0; j < ofertasenviadas.Count; j++)
                {
                    if (ofertasenviadas[j].ClOrdID.Equals(report.OrigClOrdID))
                    {
                        if (report.OrdStatus == OrdemStatusEnum.CANCELADA ||
                            report.OrdStatus == OrdemStatusEnum.SUBSTITUIDA)
                        {
                            ofertasenviadas[j].OrdStatus = report.OrdStatus;
                        }
                    }

                    if (ofertasenviadas[j].ClOrdID.Equals(report.ClOrdID))
                    {
                        ofertasenviadas[j].OrdStatus = report.OrdStatus;
                        break;
                    }
                }
                SerializadorOfertas.SaveOfertas(ofertasenviadas);
            }
        }