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