void Application::queryMarketDataRequest()
{

  FIX::MDReqID genMDReqID;
  genMDReqID = m_generator.genOrderID();
  FIX::MDReqID mdReqID( genMDReqID );
  FIX::SubscriptionRequestType subType( '1' );
  FIX::MarketDepth marketDepth( 2 );
  FIX::MDUpdateType mDUpdateType(1);
  FIX::AggregatedBook aggregatedBook(true);

  FIX42::MarketDataRequest::NoMDEntryTypes marketDataEntryGroup;
  FIX::MDEntryType mdEntryType1( FIX::MDEntryType_BID );
  FIX::MDEntryType mdEntryType2( FIX::MDEntryType_OFFER);
  marketDataEntryGroup.set( mdEntryType1 );
  marketDataEntryGroup.set( mdEntryType2 );

  FIX42::MarketDataRequest::NoRelatedSym symbolGroup;

  FIX::Symbol symbol( "IBM" );
  symbolGroup.set( symbol );

  FIX42::MarketDataRequest message( mdReqID, subType, marketDepth );
  message.addGroup( marketDataEntryGroup );
  message.addGroup( symbolGroup );

  message.set(mDUpdateType);
  message.set(aggregatedBook);

  setHeader( message.getHeader() );
  FIX::Session::sendToTarget( message );
}
Esempio n. 2
0
void FixProviderImpl::unsubscribe(std::vector<std::string> symbols) {
    std::string uuid = FreeQuant::toGuidString();
    FIX::MDReqID mdReqId(uuid);
    FIX::SubscriptionRequestType subType(FIX::SubscriptionRequestType_DISABLE_PREVIOUS_SNAPSHOT_PLUS_UPDATE_REQUEST);
    FIX::MarketDepth marketDepth(1);

    FIX44::MarketDataRequest message(mdReqId, subType, marketDepth);

    message.set(FIX::MDUpdateType(FIX::MDUpdateType_INCREMENTAL_REFRESH));
    message.set(FIX::AggregatedBook(true));
    std::string s;
    s.append(1, FIX::Scope_LOCAL);

    FIX::Scope scope(s);
    message.set(scope);

    message.set(FIX::MDImplicitDelete(false));

    FIX44::MarketDataRequest::NoMDEntryTypes typeGroup;
    typeGroup.set(FIX::MDEntryType(FIX::MDEntryType_OPENING_PRICE));
    message.addGroup(typeGroup);
    typeGroup.set(FIX::MDEntryType(FIX::MDEntryType_CLOSING_PRICE));
    message.addGroup(typeGroup);
    typeGroup.set(FIX::MDEntryType(FIX::MDEntryType_TRADING_SESSION_HIGH_PRICE));
    message.addGroup(typeGroup);
    typeGroup.set(FIX::MDEntryType(FIX::MDEntryType_TRADING_SESSION_LOW_PRICE));
    message.addGroup(typeGroup);
    typeGroup.set(FIX::MDEntryType(FIX::MDEntryType_BID));
    message.addGroup(typeGroup);
    typeGroup.set(FIX::MDEntryType(FIX::MDEntryType_OFFER));
    message.addGroup(typeGroup);
    typeGroup.set(FIX::MDEntryType(FIX::MDEntryType_TRADE_VOLUME));
    message.addGroup(typeGroup);
    typeGroup.set(FIX::MDEntryType(FIX::MDEntryType_OPEN_INTEREST));
    message.addGroup(typeGroup);

    FIX44::MarketDataRequest::NoRelatedSym symGroup;
    symGroup.set(FIX::Symbol("GOOG"));
    message.addGroup(symGroup);
    symGroup.set(FIX::Symbol("IF1210"));
    message.addGroup(symGroup);


    FIX::SessionID sessionID;
    sessionID.fromString(_sessionString);
    try {
        FIX::Session::sendToTarget(message, sessionID);
    } catch (FIX::SessionNotFound&) {}
}