Ejemplo n.º 1
0
        private void button1_Click(object sender, EventArgs e)
        {
            //Method in charge of handle a new smartorder request
            //Setting things up
            SmartTraderOrderProcessor Broker   = new SmartTraderOrderProcessor();
            EnviarOrdemSmartRequest   request  = new EnviarOrdemSmartRequest();
            EnviarOrdemSmartResponse  response = new EnviarOrdemSmartResponse();

            OrdemSmart OrdemSmart = new OrdemSmart();

            OrdemSmart.Account    = 31940;
            OrdemSmart.Instrument = "OIBR4";
            OrdemSmart.Qty        = 100;
            OrdemSmart.OperacaoInicio.PrecoOrdem     = 3;
            OrdemSmart.OperacaoInicio.PrecoDisparo   = 3.30;
            OrdemSmart.OperacaoInicio.PrecoOrdemTipo = TipoPreco.EntrarImediatamente;


            OrdemSmart.OperacaoLucro.PrecoOrdem     = 3;
            OrdemSmart.OperacaoLucro.PrecoDisparo   = 3.30;
            OrdemSmart.OperacaoLucro.PrecoOrdemTipo = TipoPreco.Indefinido;

            OrdemSmart.OperacaoPerda.PrecoOrdem     = 3;
            OrdemSmart.OperacaoPerda.PrecoDisparo   = 3.30;
            OrdemSmart.OperacaoPerda.PrecoOrdemTipo = TipoPreco.Indefinido;

            request.SmartOrder = OrdemSmart;
            response           = Broker.EnviarOrdemSmartTrader(request);
        }
Ejemplo n.º 2
0
 public EnviarOrdemSmartResponse EnviarOrdemSmart(EnviarOrdemSmartRequest ordemReq)
 {
     try
     {
         EnviarOrdemSmartResponse resp = new EnviarOrdemSmartResponse();
         resp = _orderProcessing.EnviarOrdem(ordemReq);
         return(resp);
     }
     catch (Exception ex)
     {
         logger.Error("Problemas no envio da ordem smart: " + ex.Message, ex);
         return(null);
     }
 }
Ejemplo n.º 3
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);
            }
        }
Ejemplo n.º 4
0
 public EnviarOrdemSmartResponse EnviarOrdem(EnviarOrdemSmartRequest ordem)
 {
     try
     {
         EnviarOrdemSmartResponse resp = new EnviarOrdemSmartResponse();
         if (null != _smtMonitor)
         {
             _smtMonitor.AddInstrument(ordem.SmartOrder.Instrument, ordem.SmartOrder);
         }
         return(resp);
     }
     catch (Exception ex)
     {
         logger.Error("Erro na Ordem Smart: " + ex.Message, ex);
         return(null);
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Method accountable for managing a new SmartTrader order
        /// </summary>
        /// <param name="request"> SmartTrader order parameters </param>
        /// <returns></returns>
        public EnviarOrdemSmartResponse EnviarOrdemSmartTrader(EnviarOrdemSmartRequest request)
        {
            EnviarOrdemSmartResponse response = new EnviarOrdemSmartResponse();

            try
            {
                /* TRACING */
                logger.Info("ACCOUNT............................................." + request.SmartOrder.Account.ToString());
                logger.Info("INSTRUMENT.........................................." + request.SmartOrder.Instrument.ToString());
                logger.Info("PRECOORDEM.........................................." + request.SmartOrder.OperacaoInicio.PrecoOrdem.ToString());
                logger.Info("PRECODISPARO........................................" + request.SmartOrder.OperacaoInicio.PrecoDisparo.ToString());
                logger.Info("OPERACAO LUCRO [PRECOORDEM] ........................" + request.SmartOrder.OperacaoLucro.PrecoOrdem.ToString());
                logger.Info("OPERACAO LUCRO [PRECODISPARO] ......................" + request.SmartOrder.OperacaoLucro.PrecoDisparo.ToString());
                logger.Info("OPERACAO LUCRO [TIPOORDEM] ........................." + request.SmartOrder.OperacaoLucro.PrecoOrdemTipo.ToString());
                logger.Info("OPERACAO LUCRO [VALOR] ............................." + request.SmartOrder.OperacaoLucro.Valor.ToString());
                logger.Info("OPERACAO PERDA [PRECOORDEM] ........................" + request.SmartOrder.OperacaoPerda.PrecoOrdem.ToString());
                logger.Info("OPERACAO PERDA [PRECODISPARO] ......................" + request.SmartOrder.OperacaoPerda.PrecoDisparo.ToString());
                logger.Info("OPERACAO LUCRO [TIPOORDEM] ........................." + request.SmartOrder.OperacaoPerda.PrecoOrdemTipo.ToString());
                logger.Info("OPERACAO LUCRO [VALOR] ............................." + request.SmartOrder.OperacaoPerda.Valor.ToString());

                //REGISTERING THE ORDER IN THE DB
                PersistenciaSmartTrader _PersistenciaSmartTrader = new PersistenciaSmartTrader();

                // RETURN THE SAME OBJECT ,HOWEVER THE PROPERTY "ID" IS FILLED IN
                response.OrdemSmart     = _PersistenciaSmartTrader.InserirOrdem(request.SmartOrder);
                response.StatusResponse = "OK";

                ThreadPool.QueueUserWorkItem(new WaitCallback(SendOrder), request);
            }
            catch (Exception ex)
            {
                response.DescricaoErro  = "OCORREU UM ERRO AO GRAVAR A SMARTORDER NO BANCO DE DADOS. DESCRICAO DO ERRO: " + ex.Message;
                response.StackTrace     = ex.StackTrace;
                response.StatusResponse = "ERRO";
                logger.Info("OCORREU UM ERRO AO GRAVAR A SMARTORDER NO BANCO DE DADOS. DESCRICAO DO ERRO: " + ex.Message);
            }

            return(response);
        }