예제 #1
0
파일: UnitTest1.cs 프로젝트: radtek/Gradual
        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
파일: Program.cs 프로젝트: radtek/Gradual
        private static void testesOrdens()
        {
            int            qtde          = 2000;
            IServicoOrdens servicoOrdens = Ativador.Get <IServicoOrdens>();
            DateTime       dtIni         = DateTime.Now;

            for (int i = 0; i < qtde; i++)
            {
                servicoOrdens.ExecutarOrdem(
                    new ExecutarOrdemRequest()
                {
                    Account     = "1230",
                    CodigoBolsa = "BOVESPA",
                    OrderQty    = 100,
                    Symbol      = "USIM5",
                    Side        = OrdemDirecaoEnum.Compra,
                    TimeInForce = OrdemValidadeEnum.ExecutaIntegralOuCancela,
                    OrdType     = OrdemTipoEnum.Limitada,
                    Price       = 35
                });
            }
            DateTime dtFim = DateTime.Now;
            TimeSpan diff  = dtFim - dtIni;

            MessageBox.Show(diff.TotalMilliseconds.ToString() + "; " + (diff.TotalMilliseconds / qtde).ToString());
        }
예제 #3
0
        private void ControleEnvioMensagens_Load(object sender, EventArgs e)
        {
            // Referencia aos serviços
            _servicoOrdens = Ativador.Get <IServicoOrdens>();
            _servicoCanais = Ativador.Get <IServicoCanaisNegociacao>();

            // Carrega lista de mensagens de requisicao
            Assembly[] assemblies = System.AppDomain.CurrentDomain.GetAssemblies();
            foreach (Assembly assembly in assemblies)
            {
                foreach (Type tipo in assembly.GetTypes())
                {
                    if (tipo.IsSubclassOf(typeof(MensagemRequestBase)))
                    {
                        lstMensagem.Items.Add(tipo);
                    }
                }
            }

            // Carrega parametros
            if (_parametros != null)
            {
                splitter1.SplitPosition = (int)_parametros["splitter"];
            }
        }
예제 #4
0
        private static void CancelarOrdensExperiradas(object state)
        {
            if (DateTime.Now.Hour < HorarioFechamentoBolsa)
            {
                OrdensExpiradasAtualizadas = false;
            }

            if ((DateTime.Now.Hour >= HorarioFechamentoBolsa) && (OrdensExpiradasAtualizadas == false))
            {
                CamadaDeDados _CamadaDeDados = new CamadaDeDados();

                _CamadaDeDados.AbrirConexao();
                List <string> Ordens = _CamadaDeDados.BuscarOrdensValidasParaoDia();

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

                for (int i = 0; i <= Ordens.Count - 1; i++)
                {
                    ClienteCancelamentoInfo ClienteCancelamentoInfo = new ClienteCancelamentoInfo()
                    {
                        OrderID = Ordens[i].ToString()
                    };

                    EnviarCancelamentoOrdemRequest request = new EnviarCancelamentoOrdemRequest()
                    {
                        ClienteCancelamentoInfo = ClienteCancelamentoInfo
                    };

                    EnviarCancelamentoOrdemResponse response =
                        ServicoOrdens.CancelarOrdem(request);
                }

                OrdensExpiradasAtualizadas = true;
            }
        }
예제 #5
0
        void ControleListaAtivos_Load(object sender, EventArgs e)
        {
            // Referencia aos serviços
            _servicoOrdens = Ativador.Get <IServicoOrdens>();
            _servicoCanais = Ativador.Get <IServicoCanaisNegociacao>();

            // Pede lista de ativos
            System.Threading.ThreadPool.QueueUserWorkItem(
                new System.Threading.WaitCallback(
                    delegate(object parametros)
            {
                ListarInstrumentosResponse listarInstrumentosResponse =
                    _servicoOrdens.ListarInstrumentos(
                        new ListarInstrumentosRequest()
                {
                    CodigoMensagem = "reqi01",
                    CodigoBolsa    = "BMF",
                    CodigoCliente  = "123",
                    DataReferencia = DateTime.Now
                });
                var t = from s in listarInstrumentosResponse.Instrumentos
                        select new InstrumentoInfo()
                {
                    Symbol = s
                };
                grdInstrumentos.Invoke(
                    new InvokeDelegate(
                        delegate()
                {
                    grdInstrumentos.DataSource = new List <InstrumentoInfo>(t);
                }));
            }));
        }
예제 #6
0
        protected override void OnLoad(EventArgs e)
        {
            // Repassa mensagem
            base.OnLoad(e);

            // Referencia aos serviços
            _servicoOrdens = Ativador.Get <IServicoOrdens>();
            _servicoCanais = Ativador.Get <IServicoCanaisNegociacao>();

            // Carrega lista de mensagens de requisicao
            Assembly[] assemblies = System.AppDomain.CurrentDomain.GetAssemblies();
            foreach (Assembly assembly in assemblies)
            {
                foreach (Type tipo in assembly.GetTypes())
                {
                    if (tipo.IsSubclassOf(typeof(MensagemRequestBase)))
                    {
                        lstMensagem.Items.Add(tipo);
                    }
                }
            }

            // Monitora mensagens recebidas
            _servicoOrdens.EventoSinalizacao += new EventHandler <SinalizarEventArgs>(_servicoOrdens_EventoSinalizacao);

            // Status
            lblStatusCanais.Text = _servicoCanais.ReceberStatusServico().ToString();
        }
예제 #7
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);
            }
        }
예제 #8
0
        void ControleMonitorEventos_Load(object sender, EventArgs e)
        {
            // Referencia aos serviços
            _servicoOrdens = Ativador.Get <IServicoOrdens>();
            _servicoCanais = Ativador.Get <IServicoCanaisNegociacao>();

            // Monitora mensagens recebidas
            _servicoOrdens.EventoSinalizacao += new EventHandler <SinalizarEventArgs>(_servicoOrdens_EventoSinalizacao);

            // Detalhe das linhas do grid
            grdMensagens.DoubleClick += new EventHandler(grdMensagens_DoubleClick);
        }
예제 #9
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);
            }
        }
예제 #10
0
 private void testeToolStripMenuItem_Click(object sender, EventArgs e)
 {
     IServicoOrdens        servicoOrdens = Ativador.Get <IServicoOrdens>();
     ExecutarOrdemResponse response      =
         servicoOrdens.ExecutarOrdem(
             new ExecutarOrdemRequest()
     {
         Account        = "1",
         ClOrdID        = "o1",
         CodigoBolsa    = "BOVESPA",
         CodigoCliente  = "123",
         DataReferencia = DateTime.Now,
         OrderQty       = 100,
         OrdType        = OrdemTipoEnum.Limitada,
         Price          = 85,
         Side           = OrdemDirecaoEnum.Compra,
         Symbol         = "USIM5",
         TimeInForce    = OrdemValidadeEnum.ValidaParaODia
     });
 }
예제 #11
0
파일: UnitTest1.cs 프로젝트: radtek/Gradual
        private void EnviarOrdemRisco()
        {
            DateTime       dataInicio = DateTime.Now;
            IServicoOrdens _gServico  = Ativador.Get <IServicoOrdens>();



            EnviarOrdemRequest OrdemRequest = new EnviarOrdemRequest
            {
                ClienteOrdemInfo = new ClienteOrdemInfo
                {
                    CodigoCliente = 31940,
                    // NumeroControleOrdem = "16042012123433-94912441",
                    DataHoraSolicitacao = DateTime.Now,
                    DataValidade        = new DateTime(2012, 05, 28, 23, 59, 59),
                    DirecaoOrdem        = OrdemDirecaoEnum.Compra,
                    Instrumento         = "ICFU12",
                    PortaControleOrdem  = "0",
                    Preco              = 100,
                    Quantidade         = 1,
                    QuantidadeAparente = 0,
                    QuantidadeMinima   = 0,
                    TipoDeOrdem        = OrdemTipoEnum.Limitada,
                    ValidadeOrdem      = Gradual.OMS.RoteadorOrdens.Lib.Dados.OrdemValidadeEnum.ValidaParaODia,
                }
            };

            // EnviarOrdemResponse response = _gServico.EnviarOrdem(OrdemRequest);
            EnviarOrdemResponse response = new ServicoOrdens().EnviarOrdem(OrdemRequest);

            Thread.Sleep(1000);


            TimeSpan datafinal = (DateTime.Now - dataInicio);

            bool solicitacao = true;
        }
예제 #12
0
        /// <summary>
        /// Exclui as ordens selecionadas
        /// </summary>
        /// <returns>Retorna uma string com mensagem de sucesso ou erro ao excluir as ordens</returns>
        private string ResponderExcluirOrdens()
        {
            string lRetorno = string.Empty;

            try
            {
                string lIds = Request.Form["Ids"];

                string lPortas = Request.Form["Portas"];

                string lMensagem = "";

                List <string> lstIdOrdem = new List <string>();

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

                Dictionary <string, string> lCriticas = new Dictionary <string, string>();

                EnviarCancelamentoOrdemResponse lResponse = new EnviarCancelamentoOrdemResponse();

                string[] Ordens = lIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                string[] Portas = lPortas.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                ClienteCancelamentoInfo info;

                EnviarCancelamentoOrdemRequest lRequestCancel;

                for (int i = 0; i < Ordens.Length; i++)
                {
                    info = new ClienteCancelamentoInfo();

                    info.OrderID = Ordens[i];

                    info.PortaControleOrdem = Portas[i];

                    lRequestCancel = new EnviarCancelamentoOrdemRequest()
                    {
                        ClienteCancelamentoInfo = info
                    };

                    lResponse = lOrdem.CancelarOrdem(lRequestCancel);

                    if (lResponse.StatusResposta != OMS.Ordens.Lib.Enum.CriticaRiscoEnum.Sucesso)
                    {
                        lCriticas.Add(info.OrderID, lResponse.DescricaoResposta);
                    }
                }

                if (lCriticas.Count > 0)
                {
                    foreach (KeyValuePair <string, string> critica in lCriticas)
                    {
                        lMensagem += string.Concat("Ordem: ", critica.Key, "Crítica - ", critica.Value);
                    }

                    lRetorno = RetornarSucessoAjax(lMensagem);
                }
                else
                {
                    lRetorno = RetornarSucessoAjax("Orden(s) cancelada(s) com sucesso");
                    base.RegistrarLogExclusao(string.Concat("Foram EXCLUÍDAS as seguintes ordens: ", lIds));
                }
            }
            catch (Exception ex)
            {
                lRetorno = base.RetornarErroAjax("Erro ao tentar cancelar ordem.", ex);
            }

            return(lRetorno);
        }