/** * Monta e envia requisição para assinatura de um instrumento. * */ private void requisitaInstrumento( char tipoAssinatura, string instrumento, string codigo, string identificacao) { try { string mdReqID; MarketDataRequest mensagemFIX = new MarketDataRequest(); if (codigo != null && codigo.Length > 0) { mdReqID = codigo; } else { mdReqID = FIX_MDREQID_PADRAO; } mensagemFIX.setField(new MDReqID(mdReqID)); mensagemFIX.setField(new SubscriptionRequestType(tipoAssinatura)); mensagemFIX.setField(new MarketDepth(0)); mensagemFIX.setField(new MDUpdateType(MDUpdateType.INCREMENTAL_REFRESH)); MarketDataRequest.NoMDEntryTypes grupoTipo = new MarketDataRequest.NoMDEntryTypes(); grupoTipo.set(new QuickFix.MDEntryType(MDEntryType.BID)); mensagemFIX.addGroup(grupoTipo); grupoTipo.set(new QuickFix.MDEntryType(MDEntryType.OFFER)); mensagemFIX.addGroup(grupoTipo); grupoTipo.set(new QuickFix.MDEntryType(MDEntryType.TRADE)); mensagemFIX.addGroup(grupoTipo); grupoTipo.set(new QuickFix.MDEntryType(MDEntryType.OPENING_PRICE)); mensagemFIX.addGroup(grupoTipo); grupoTipo.set(new QuickFix.MDEntryType(MDEntryType.CLOSING_PRICE)); mensagemFIX.addGroup(grupoTipo); grupoTipo.set(new QuickFix.MDEntryType(MDEntryType.TRADING_SESSION_HIGH_PRICE)); mensagemFIX.addGroup(grupoTipo); grupoTipo.set(new QuickFix.MDEntryType(MDEntryType.TRADING_SESSION_LOW_PRICE)); mensagemFIX.addGroup(grupoTipo); grupoTipo.set(new QuickFix.MDEntryType(MDEntryType.TRADING_SESSION_VWAP_PRICE)); mensagemFIX.addGroup(grupoTipo); grupoTipo.set(new QuickFix.MDEntryType(MDEntryType.TRADE_VOLUME)); mensagemFIX.addGroup(grupoTipo); grupoTipo.set(new QuickFix.MDEntryType('a')); mensagemFIX.addGroup(grupoTipo); grupoTipo.set(new QuickFix.MDEntryType('b')); mensagemFIX.addGroup(grupoTipo); grupoTipo.set(new QuickFix.MDEntryType('c')); mensagemFIX.addGroup(grupoTipo); MarketDataRequest.NoRelatedSym grupo = new MarketDataRequest.NoRelatedSym(); grupo.set(new Symbol(instrumento)); if (codigo != null && codigo.Length > 0) { grupo.set(new SecurityID(codigo)); } if (identificacao != null && identificacao.Length > 0) { grupo.set(new SecurityIDSource(identificacao)); } mensagemFIX.addGroup(grupo); mensagemFIX.getHeader().setField( new SenderCompID(sessao.getSenderCompID())); mensagemFIX.getHeader().setField( new TargetCompID(sessao.getTargetCompID())); try { Session.sendToTarget(mensagemFIX, sessao); } catch (SessionNotFound e) { logger.Error("Sessao invalida: " + e.Message, e); } } catch (Exception ex) { logger.Error("requisitaMensagem: " + ex.Message, ex); } }