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