Thread: [Quickfix-developers] Fwd: Problems with MarketDataIncrementalRefresh
Brought to you by:
orenmnero
From: Andre D. <and...@al...> - 2009-03-06 19:05:04
|
Hi All, I'm new with quickfix, but I'm creating a application to read a text file with FIX lines. I use the Parser class to validate the message and it's OK. ------------------------------------- 8=FIX.4.4 9=628 35=X 34=2 49=TradingEngineDerivatives01A 52=20080501-03:35:23.379 56=FIXGatewayDerivatives_MD 10016=15977_1 75=20080501 268=5 279=1 269=c 278=1 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 279=1 269=b 278=3 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=034 8=FIX.4.4 9=630 35=X 34=3 49=TradingEngineDerivatives01A 52=20080501-03:35:23.395 56=FIXGatewayDerivatives_MD 10016=14827_105 75=20080501 268=5 279=1 269=c 278=1 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 279=1 269=b 278=3 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=165 ------------------------------------- But when I send to the MessageCracker I have problems. When I try to get the NoMDEntries group I got an error: FieldNotFound. ------------------------------------- // Test if we have the groups FIX44::MarketDataIncrementalRefresh::NoMDEntries noMDEntriesGroup; if( !message.hasGroup( noMDEntriesGroup ) ) { std::cout << "\n\tInvalid Message: no Group\n]\n"; return; } // Read a entry group try { message.getGroup( 1, noMDEntriesGroup ); } catch( FIX::FieldNotFound e ) { std::cout << "\tnoGroup(" << e.field << ")"; continue; } ------------------------------------- Investigating the problem, I try to use the DataDictinary to validate the message: ------------------------------------- DD_FIX44 = new FIX::DataDictionary( "/opt/quickfix/share/quickfix/FIX44.xml" ); try { const std::string& msgTypeValue = message.getHeader().getField( FIX::FIELD::MsgType ); std::string str; DD_FIX44->getFieldName( 22, str ); std::cout << "[ " << str << " ] " << msgTypeValue << " " << DD_FIX44->isMsgField( msgTypeValue, 22 ) << std::endl; DD_FIX44->validate( message ); } catch( FIX::TagNotDefinedForMessage e ) { std::cout << "Problems: [ TagNotDefinedForMessage " << e.field << e.detail << " ]" << std::endl; } OUTPUT: [ SecurityIDSource ] X 0 Problems: [ TagNotDefinedForMessage 22 ] ------------------------------------- The problem is: the tag 22 (SecurityIDSource), present in the FIX messages, is return that is NOT defined for the message. But looking at the XML and the "fix44/MarketDataIncrementalRefresh.h" is defined! So, any one with this problem? Any help? Thanks in advance, Andre B Derraik. ALBD Consulting |
From: Djalma R. d. S. F. <drs...@gm...> - 2009-06-21 14:53:14
|
Hi Andre, Make sure you are using the constructor bellow that receives the DataDictionary, otherwise quickfix won't be able to process the repeating groups in the message. Message( const std::string& string, const DataDictionary& dataDictionary, bool validate = true ) Djalma On Fri, Mar 6, 2009 at 3:38 PM, Andre Derraik<and...@al...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > Hi All, > > I'm new with quickfix, but I'm creating a application to read a text file with FIX lines. > I use the Parser class to validate the message and it's OK. > > ------------------------------------- > 8=FIX.4.4 9=628 35=X 34=2 49=TradingEngineDerivatives01A 52=20080501-03:35:23.379 56=FIXGatewayDerivatives_MD 10016=15977_1 75=20080501 268=5 279=1 269=c 278=1 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 279=1 269=b 278=3 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=034 > > 8=FIX.4.4 9=630 35=X 34=3 49=TradingEngineDerivatives01A 52=20080501-03:35:23.395 56=FIXGatewayDerivatives_MD 10016=14827_105 75=20080501 268=5 279=1 269=c 278=1 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 279=1 269=b 278=3 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=165 > ------------------------------------- > > But when I send to the MessageCracker I have problems. > > When I try to get the NoMDEntries group I got an error: FieldNotFound. > > ------------------------------------- > // Test if we have the groups > FIX44::MarketDataIncrementalRefresh::NoMDEntries noMDEntriesGroup; > if( !message.hasGroup( noMDEntriesGroup ) ) > { > std::cout << "\n\tInvalid Message: no Group\n]\n"; > return; > } > > // Read a entry group > try > { > message.getGroup( 1, noMDEntriesGroup ); > } > catch( FIX::FieldNotFound e ) > { > std::cout << "\tnoGroup(" << e.field << ")"; > continue; > } > ------------------------------------- > > Investigating the problem, I try to use the DataDictinary to validate the message: > > ------------------------------------- > DD_FIX44 = new FIX::DataDictionary( "/opt/quickfix/share/quickfix/FIX44.xml" ); > > try > { > const std::string& msgTypeValue = message.getHeader().getField( FIX::FIELD::MsgType ); > std::string str; > DD_FIX44->getFieldName( 22, str ); > std::cout << "[ " << str << " ] " > << msgTypeValue << " " > << DD_FIX44->isMsgField( msgTypeValue, 22 ) << std::endl; > > DD_FIX44->validate( message ); > } > catch( FIX::TagNotDefinedForMessage e ) > { > std::cout << "Problems: [ TagNotDefinedForMessage " << e.field << e.detail > << " ]" << std::endl; > } > > OUTPUT: > [ SecurityIDSource ] X 0 > Problems: [ TagNotDefinedForMessage 22 ] > > ------------------------------------- > > The problem is: the tag 22 (SecurityIDSource), present in the FIX messages, is return that is NOT defined for the message. > But looking at the XML and the "fix44/MarketDataIncrementalRefresh.h" is defined! > > So, any one with this problem? Any help? > > Thanks in advance, > Andre B Derraik. > ALBD Consulting > > > > > ------------------------------------------------------------------------------ > Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA > -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise > -Strategies to boost innovation and cut costs with open source participation > -Receive a $600 discount off the registration fee with the source code: SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Andre D. <an...@al...> - 2009-06-24 02:42:34
|
Hi Djalma, It works! Creating the message with the DataDictionary, the group was found. But just the first one! Even the method: message.toXML() is reporting one group as follow: <message> <header> <field number="8"><![CDATA[FIX.4.4]]></field> <field number="9"><![CDATA[529]]></field> <field number="35"><![CDATA[X]]></field> <field number="34"><![CDATA[7]]></field> <field number="49"><![CDATA[TradingEngineDerivatives01A]]></field> <field number="52"><![CDATA[20080501-03:35:23.395]]></field> <field number="56"><![CDATA[FIXGatewayDerivatives_MD]]></field> </header> <body> <field number="22"><![CDATA[8]]></field> <field number="22"><![CDATA[8]]></field> <field number="22"><![CDATA[8]]></field> <field number="48"><![CDATA[BMFBR7310047]]></field> <field number="48"><![CDATA[BMFBR7310047]]></field> <field number="48"><![CDATA[BMFBR7310047]]></field> <field number="55"><![CDATA[BGIJ08]]></field> <field number="55"><![CDATA[BGIJ08]]></field> <field number="55"><![CDATA[BGIJ08]]></field> <field number="75"><![CDATA[20080501]]></field> <field number="268"><![CDATA[4]]></field> <field number="269"><![CDATA[d]]></field> <field number="269"><![CDATA[b]]></field> <field number="269"><![CDATA[5]]></field> <field number="270"><![CDATA[77.33]]></field> <field number="272"><![CDATA[20080501]]></field> <field number="272"><![CDATA[20080501]]></field> <field number="272"><![CDATA[20080501]]></field> <field number="273"><![CDATA[03:35:10]]></field> <field number="273"><![CDATA[03:35:10]]></field> <field number="273"><![CDATA[03:35:23]]></field> <field number="278"><![CDATA[2]]></field> <field number="278"><![CDATA[3]]></field> <field number="279"><![CDATA[2]]></field> <field number="279"><![CDATA[1]]></field> <field number="279"><![CDATA[0]]></field> <field number="326"><![CDATA[120]]></field> <field number="336"><![CDATA[TradingSessionID]]></field> <field number="336"><![CDATA[TradingSessionID]]></field> <field number="336"><![CDATA[TradingSessionID]]></field> <field number="625"><![CDATA[I]]></field> <field number="10016"><![CDATA[7993_739]]></field> <group> <field number="279"><![CDATA[1]]></field> <field number="269"><![CDATA[c]]></field> <field number="278"><![CDATA[1]]></field> <field number="55"><![CDATA[BGIJ08]]></field> <field number="48"><![CDATA[BMFBR7310047]]></field> <field number="22"><![CDATA[8]]></field> <field number="272"><![CDATA[20080501]]></field> <field number="273"><![CDATA[03:35:10]]></field> <field number="336"><![CDATA[TradingSessionID]]></field> </group> </body> <trailer> <field number="10"><![CDATA[167]]></field> </trailer> ------------------------------------------ For this FIX message: 8=FIX.4.4 9=529 35=X 34=7 49=TradingEngineDerivatives01A 52=20080501-03:35:23.395 56=FIXGatewayDerivatives_MD 10016=7993_739 75=20080501 268=4 279=1 269=c 278=1 55=BGIJ08 48=BMFBR7310047 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=120 279=2 269=d 278=2 55=BGIJ08 48=BMFBR7310047 22=8 272=20080501 273=03:35:10 336=TradingSessionID 279=1 269=b 278=3 55=BGIJ08 48=BMFBR7310047 22=8 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=0 269=5 55=BGIJ08 48=BMFBR7310047 22=8 270=77.33 272=20080501 273=03:35:23 336=TradingSessionID 10=167 ---------------------------------------- I'm missing something? Thanks, Andre B Derraik. ALBD Consulting On Sun, Jun 21, 2009 at 11:53 AM, Djalma Rosa dos Santos Filho < drs...@gm...> wrote: > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > Hi Andre, > > Make sure you are using the constructor bellow that receives the > DataDictionary, otherwise quickfix won't be able to process the > repeating groups in the message. > > Message( const std::string& string, const DataDictionary& > dataDictionary, > bool validate = true ) > > Djalma > > On Fri, Mar 6, 2009 at 3:38 PM, Andre > Derraik<and...@al... <andre%2B...@al...>> > wrote: > > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > > QuickFIX Support: http://www.quickfixengine.org/services.html > > > > > > Hi All, > > > > I'm new with quickfix, but I'm creating a application to read a text file > with FIX lines. > > I use the Parser class to validate the message and it's OK. > > > > ------------------------------------- > > 8=FIX.4.4 9=628 35=X 34=2 49=TradingEngineDerivatives01A > 52=20080501-03:35:23.379 56=FIXGatewayDerivatives_MD 10016=15977_1 > 75=20080501 268=5 279=1 269=c 278=1 55=BGIJ09 48=BMFBR7312910 22=8 > 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 > 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 > 336=TradingSessionID 279=1 269=b 278=3 55=BGIJ09 48=BMFBR7312910 22=8 > 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 > 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 > 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIJ09 48=BMFBR7312910 > 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=034 > > > > 8=FIX.4.4 9=630 35=X 34=3 49=TradingEngineDerivatives01A > 52=20080501-03:35:23.395 56=FIXGatewayDerivatives_MD 10016=14827_105 > 75=20080501 268=5 279=1 269=c 278=1 55=BGIH09 48=BMFBR7312795 22=8 > 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 > 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 > 336=TradingSessionID 279=1 269=b 278=3 55=BGIH09 48=BMFBR7312795 22=8 > 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 > 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 > 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIH09 48=BMFBR7312795 > 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=165 > > ------------------------------------- > > > > But when I send to the MessageCracker I have problems. > > > > When I try to get the NoMDEntries group I got an error: FieldNotFound. > > > > ------------------------------------- > > // Test if we have the groups > > FIX44::MarketDataIncrementalRefresh::NoMDEntries noMDEntriesGroup; > > if( !message.hasGroup( noMDEntriesGroup ) ) > > { > > std::cout << "\n\tInvalid Message: no Group\n]\n"; > > return; > > } > > > > // Read a entry group > > try > > { > > message.getGroup( 1, noMDEntriesGroup ); > > } > > catch( FIX::FieldNotFound e ) > > { > > std::cout << "\tnoGroup(" << e.field << ")"; > > continue; > > } > > ------------------------------------- > > > > Investigating the problem, I try to use the DataDictinary to validate the > message: > > > > ------------------------------------- > > DD_FIX44 = new FIX::DataDictionary( > "/opt/quickfix/share/quickfix/FIX44.xml" ); > > > > try > > { > > const std::string& msgTypeValue = message.getHeader().getField( > FIX::FIELD::MsgType ); > > std::string str; > > DD_FIX44->getFieldName( 22, str ); > > std::cout << "[ " << str << " ] " > > << msgTypeValue << " " > > << DD_FIX44->isMsgField( msgTypeValue, 22 ) << std::endl; > > > > DD_FIX44->validate( message ); > > } > > catch( FIX::TagNotDefinedForMessage e ) > > { > > std::cout << "Problems: [ TagNotDefinedForMessage " << e.field << > e.detail > > << " ]" << std::endl; > > } > > > > OUTPUT: > > [ SecurityIDSource ] X 0 > > Problems: [ TagNotDefinedForMessage 22 ] > > > > ------------------------------------- > > > > The problem is: the tag 22 (SecurityIDSource), present in the FIX > messages, is return that is NOT defined for the message. > > But looking at the XML and the "fix44/MarketDataIncrementalRefresh.h" is > defined! > > > > So, any one with this problem? Any help? > > > > Thanks in advance, > > Andre B Derraik. > > ALBD Consulting > > > |
From: amit k. <kha...@gm...> - 2009-06-24 18:26:07
|
Probably this should not be outside the group? <field number="279"><![CDATA[2]]></field> <field number="279"><![CDATA[1]]></field> <field number="279"><![CDATA[0]]></field> On Tue, Jun 23, 2009 at 10:14 PM, Andre Derraik <an...@al...>wrote: > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > Hi Djalma, > > It works! > Creating the message with the DataDictionary, the group was found. > > But just the first one! > Even the method: message.toXML() is reporting one group as follow: > > <message> > <header> > <field number="8"><![CDATA[FIX.4.4]]></field> > <field number="9"><![CDATA[529]]></field> > <field number="35"><![CDATA[X]]></field> > <field number="34"><![CDATA[7]]></field> > <field number="49"><![CDATA[TradingEngineDerivatives01A]]></field> > <field number="52"><![CDATA[20080501-03:35:23.395]]></field> > <field number="56"><![CDATA[FIXGatewayDerivatives_MD]]></field> > </header> > <body> > <field number="22"><![CDATA[8]]></field> > <field number="22"><![CDATA[8]]></field> > <field number="22"><![CDATA[8]]></field> > <field number="48"><![CDATA[BMFBR7310047]]></field> > <field number="48"><![CDATA[BMFBR7310047]]></field> > <field number="48"><![CDATA[BMFBR7310047]]></field> > <field number="55"><![CDATA[BGIJ08]]></field> > <field number="55"><![CDATA[BGIJ08]]></field> > <field number="55"><![CDATA[BGIJ08]]></field> > <field number="75"><![CDATA[20080501]]></field> > <field number="268"><![CDATA[4]]></field> > <field number="269"><![CDATA[d]]></field> > <field number="269"><![CDATA[b]]></field> > <field number="269"><![CDATA[5]]></field> > <field number="270"><![CDATA[77.33]]></field> > <field number="272"><![CDATA[20080501]]></field> > <field number="272"><![CDATA[20080501]]></field> > <field number="272"><![CDATA[20080501]]></field> > <field number="273"><![CDATA[03:35:10]]></field> > <field number="273"><![CDATA[03:35:10]]></field> > <field number="273"><![CDATA[03:35:23]]></field> > <field number="278"><![CDATA[2]]></field> > <field number="278"><![CDATA[3]]></field> > <field number="279"><![CDATA[2]]></field> > <field number="279"><![CDATA[1]]></field> > <field number="279"><![CDATA[0]]></field> > <field number="326"><![CDATA[120]]></field> > <field number="336"><![CDATA[TradingSessionID]]></field> > <field number="336"><![CDATA[TradingSessionID]]></field> > <field number="336"><![CDATA[TradingSessionID]]></field> > <field number="625"><![CDATA[I]]></field> > <field number="10016"><![CDATA[7993_739]]></field> > <group> > <field number="279"><![CDATA[1]]></field> > <field number="269"><![CDATA[c]]></field> > <field number="278"><![CDATA[1]]></field> > <field number="55"><![CDATA[BGIJ08]]></field> > <field number="48"><![CDATA[BMFBR7310047]]></field> > <field number="22"><![CDATA[8]]></field> > <field number="272"><![CDATA[20080501]]></field> > <field number="273"><![CDATA[03:35:10]]></field> > <field number="336"><![CDATA[TradingSessionID]]></field> > </group> > </body> > <trailer> > <field number="10"><![CDATA[167]]></field> > </trailer> > ------------------------------------------ > > For this FIX message: > > 8=FIX.4.4 9=529 35=X 34=7 49=TradingEngineDerivatives01A > 52=20080501-03:35:23.395 56=FIXGatewayDerivatives_MD 10016=7993_739 > 75=20080501 268=4 279=1 269=c 278=1 55=BGIJ08 48=BMFBR7310047 22=8 > 272=20080501 273=03:35:10 336=TradingSessionID 326=120 279=2 269=d 278=2 > 55=BGIJ08 48=BMFBR7310047 22=8 272=20080501 273=03:35:10 > 336=TradingSessionID 279=1 269=b 278=3 55=BGIJ08 48=BMFBR7310047 22=8 > 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=0 269=5 55=BGIJ08 > 48=BMFBR7310047 22=8 270=77.33 272=20080501 273=03:35:23 > 336=TradingSessionID 10=167 > > ---------------------------------------- > > I'm missing something? > > Thanks, > Andre B Derraik. > ALBD Consulting > > > On Sun, Jun 21, 2009 at 11:53 AM, Djalma Rosa dos Santos Filho < > drs...@gm...> wrote: > >> QuickFIX Documentation: >> http://www.quickfixengine.org/quickfix/doc/html/index.html >> QuickFIX Support: http://www.quickfixengine.org/services.html >> >> Hi Andre, >> >> Make sure you are using the constructor bellow that receives the >> DataDictionary, otherwise quickfix won't be able to process the >> repeating groups in the message. >> >> Message( const std::string& string, const DataDictionary& >> dataDictionary, >> bool validate = true ) >> >> Djalma >> >> On Fri, Mar 6, 2009 at 3:38 PM, Andre >> Derraik<and...@al... <andre%2B...@al...>> >> wrote: >> > QuickFIX Documentation: >> http://www.quickfixengine.org/quickfix/doc/html/index.html >> > QuickFIX Support: http://www.quickfixengine.org/services.html >> > >> > >> > Hi All, >> > >> > I'm new with quickfix, but I'm creating a application to read a text >> file with FIX lines. >> > I use the Parser class to validate the message and it's OK. >> > >> > ------------------------------------- >> > 8=FIX.4.4 9=628 35=X 34=2 49=TradingEngineDerivatives01A >> 52=20080501-03:35:23.379 56=FIXGatewayDerivatives_MD 10016=15977_1 >> 75=20080501 268=5 279=1 269=c 278=1 55=BGIJ09 48=BMFBR7312910 22=8 >> 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 >> 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 >> 336=TradingSessionID 279=1 269=b 278=3 55=BGIJ09 48=BMFBR7312910 22=8 >> 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 >> 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 >> 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIJ09 48=BMFBR7312910 >> 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=034 >> > >> > 8=FIX.4.4 9=630 35=X 34=3 49=TradingEngineDerivatives01A >> 52=20080501-03:35:23.395 56=FIXGatewayDerivatives_MD 10016=14827_105 >> 75=20080501 268=5 279=1 269=c 278=1 55=BGIH09 48=BMFBR7312795 22=8 >> 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 >> 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 >> 336=TradingSessionID 279=1 269=b 278=3 55=BGIH09 48=BMFBR7312795 22=8 >> 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 >> 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 >> 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIH09 48=BMFBR7312795 >> 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=165 >> > ------------------------------------- >> > >> > But when I send to the MessageCracker I have problems. >> > >> > When I try to get the NoMDEntries group I got an error: FieldNotFound. >> > >> > ------------------------------------- >> > // Test if we have the groups >> > FIX44::MarketDataIncrementalRefresh::NoMDEntries noMDEntriesGroup; >> > if( !message.hasGroup( noMDEntriesGroup ) ) >> > { >> > std::cout << "\n\tInvalid Message: no Group\n]\n"; >> > return; >> > } >> > >> > // Read a entry group >> > try >> > { >> > message.getGroup( 1, noMDEntriesGroup ); >> > } >> > catch( FIX::FieldNotFound e ) >> > { >> > std::cout << "\tnoGroup(" << e.field << ")"; >> > continue; >> > } >> > ------------------------------------- >> > >> > Investigating the problem, I try to use the DataDictinary to validate >> the message: >> > >> > ------------------------------------- >> > DD_FIX44 = new FIX::DataDictionary( >> "/opt/quickfix/share/quickfix/FIX44.xml" ); >> > >> > try >> > { >> > const std::string& msgTypeValue = message.getHeader().getField( >> FIX::FIELD::MsgType ); >> > std::string str; >> > DD_FIX44->getFieldName( 22, str ); >> > std::cout << "[ " << str << " ] " >> > << msgTypeValue << " " >> > << DD_FIX44->isMsgField( msgTypeValue, 22 ) << std::endl; >> > >> > DD_FIX44->validate( message ); >> > } >> > catch( FIX::TagNotDefinedForMessage e ) >> > { >> > std::cout << "Problems: [ TagNotDefinedForMessage " << e.field << >> e.detail >> > << " ]" << std::endl; >> > } >> > >> > OUTPUT: >> > [ SecurityIDSource ] X 0 >> > Problems: [ TagNotDefinedForMessage 22 ] >> > >> > ------------------------------------- >> > >> > The problem is: the tag 22 (SecurityIDSource), present in the FIX >> messages, is return that is NOT defined for the message. >> > But looking at the XML and the "fix44/MarketDataIncrementalRefresh.h" is >> defined! >> > >> > So, any one with this problem? Any help? >> > >> > Thanks in advance, >> > Andre B Derraik. >> > ALBD Consulting >> > >> > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > -- ------------------------------------------------------------------- Ph : (973)-896-8208 Email: kha...@gm... Web: http://khandelwal.amit.googlepages.com/home ------------------------------------------------------------------- |
From: Andre D. <an...@al...> - 2009-06-24 18:47:08
|
Hi Amit, That's my point. The message indicate that it has 4 groups: <field number="268"><![CDATA[4]]></field> But the XML shows only one. I'm doing something wrong? Thanks, Andre B Derraik. ALBD Consulting On Wed, Jun 24, 2009 at 3:26 PM, amit khandelwal <kha...@gm...>wrote: > Probably this should not be outside the group? > > <field number="279"><![CDATA[2]]></field> > <field number="279"><![CDATA[1]]></field> > <field number="279"><![CDATA[0]]></field> > > > > On Tue, Jun 23, 2009 at 10:14 PM, Andre Derraik <an...@al...>wrote: > >> QuickFIX Documentation: >> http://www.quickfixengine.org/quickfix/doc/html/index.html >> QuickFIX Support: http://www.quickfixengine.org/services.html >> >> >> Hi Djalma, >> >> It works! >> Creating the message with the DataDictionary, the group was found. >> >> But just the first one! >> Even the method: message.toXML() is reporting one group as follow: >> >> <message> >> <header> >> <field number="8"><![CDATA[FIX.4.4]]></field> >> <field number="9"><![CDATA[529]]></field> >> <field number="35"><![CDATA[X]]></field> >> <field number="34"><![CDATA[7]]></field> >> <field number="49"><![CDATA[TradingEngineDerivatives01A]]></field> >> <field number="52"><![CDATA[20080501-03:35:23.395]]></field> >> <field number="56"><![CDATA[FIXGatewayDerivatives_MD]]></field> >> </header> >> <body> >> <field number="22"><![CDATA[8]]></field> >> <field number="22"><![CDATA[8]]></field> >> <field number="22"><![CDATA[8]]></field> >> <field number="48"><![CDATA[BMFBR7310047]]></field> >> <field number="48"><![CDATA[BMFBR7310047]]></field> >> <field number="48"><![CDATA[BMFBR7310047]]></field> >> <field number="55"><![CDATA[BGIJ08]]></field> >> <field number="55"><![CDATA[BGIJ08]]></field> >> <field number="55"><![CDATA[BGIJ08]]></field> >> <field number="75"><![CDATA[20080501]]></field> >> <field number="268"><![CDATA[4]]></field> >> <field number="269"><![CDATA[d]]></field> >> <field number="269"><![CDATA[b]]></field> >> <field number="269"><![CDATA[5]]></field> >> <field number="270"><![CDATA[77.33]]></field> >> <field number="272"><![CDATA[20080501]]></field> >> <field number="272"><![CDATA[20080501]]></field> >> <field number="272"><![CDATA[20080501]]></field> >> <field number="273"><![CDATA[03:35:10]]></field> >> <field number="273"><![CDATA[03:35:10]]></field> >> <field number="273"><![CDATA[03:35:23]]></field> >> <field number="278"><![CDATA[2]]></field> >> <field number="278"><![CDATA[3]]></field> >> <field number="279"><![CDATA[2]]></field> >> <field number="279"><![CDATA[1]]></field> >> <field number="279"><![CDATA[0]]></field> >> <field number="326"><![CDATA[120]]></field> >> <field number="336"><![CDATA[TradingSessionID]]></field> >> <field number="336"><![CDATA[TradingSessionID]]></field> >> <field number="336"><![CDATA[TradingSessionID]]></field> >> <field number="625"><![CDATA[I]]></field> >> <field number="10016"><![CDATA[7993_739]]></field> >> <group> >> <field number="279"><![CDATA[1]]></field> >> <field number="269"><![CDATA[c]]></field> >> <field number="278"><![CDATA[1]]></field> >> <field number="55"><![CDATA[BGIJ08]]></field> >> <field number="48"><![CDATA[BMFBR7310047]]></field> >> <field number="22"><![CDATA[8]]></field> >> <field number="272"><![CDATA[20080501]]></field> >> <field number="273"><![CDATA[03:35:10]]></field> >> <field number="336"><![CDATA[TradingSessionID]]></field> >> </group> >> </body> >> <trailer> >> <field number="10"><![CDATA[167]]></field> >> </trailer> >> ------------------------------------------ >> >> For this FIX message: >> >> 8=FIX.4.4 9=529 35=X 34=7 49=TradingEngineDerivatives01A >> 52=20080501-03:35:23.395 56=FIXGatewayDerivatives_MD 10016=7993_739 >> 75=20080501 268=4 279=1 269=c 278=1 55=BGIJ08 48=BMFBR7310047 22=8 >> 272=20080501 273=03:35:10 336=TradingSessionID 326=120 279=2 269=d 278=2 >> 55=BGIJ08 48=BMFBR7310047 22=8 272=20080501 273=03:35:10 >> 336=TradingSessionID 279=1 269=b 278=3 55=BGIJ08 48=BMFBR7310047 22=8 >> 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=0 269=5 55=BGIJ08 >> 48=BMFBR7310047 22=8 270=77.33 272=20080501 273=03:35:23 >> 336=TradingSessionID 10=167 >> >> ---------------------------------------- >> >> I'm missing something? >> >> Thanks, >> Andre B Derraik. >> ALBD Consulting >> >> >> On Sun, Jun 21, 2009 at 11:53 AM, Djalma Rosa dos Santos Filho < >> drs...@gm...> wrote: >> >>> QuickFIX Documentation: >>> http://www.quickfixengine.org/quickfix/doc/html/index.html >>> QuickFIX Support: http://www.quickfixengine.org/services.html >>> >>> Hi Andre, >>> >>> Make sure you are using the constructor bellow that receives the >>> DataDictionary, otherwise quickfix won't be able to process the >>> repeating groups in the message. >>> >>> Message( const std::string& string, const DataDictionary& >>> dataDictionary, >>> bool validate = true ) >>> >>> Djalma >>> >>> On Fri, Mar 6, 2009 at 3:38 PM, Andre >>> Derraik<and...@al... <andre%2B...@al...>> >>> wrote: >>> > QuickFIX Documentation: >>> http://www.quickfixengine.org/quickfix/doc/html/index.html >>> > QuickFIX Support: http://www.quickfixengine.org/services.html >>> > >>> > >>> > Hi All, >>> > >>> > I'm new with quickfix, but I'm creating a application to read a text >>> file with FIX lines. >>> > I use the Parser class to validate the message and it's OK. >>> > >>> > ------------------------------------- >>> > 8=FIX.4.4 9=628 35=X 34=2 49=TradingEngineDerivatives01A >>> 52=20080501-03:35:23.379 56=FIXGatewayDerivatives_MD 10016=15977_1 >>> 75=20080501 268=5 279=1 269=c 278=1 55=BGIJ09 48=BMFBR7312910 22=8 >>> 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 >>> 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 >>> 336=TradingSessionID 279=1 269=b 278=3 55=BGIJ09 48=BMFBR7312910 22=8 >>> 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 >>> 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 >>> 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIJ09 48=BMFBR7312910 >>> 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=034 >>> > >>> > 8=FIX.4.4 9=630 35=X 34=3 49=TradingEngineDerivatives01A >>> 52=20080501-03:35:23.395 56=FIXGatewayDerivatives_MD 10016=14827_105 >>> 75=20080501 268=5 279=1 269=c 278=1 55=BGIH09 48=BMFBR7312795 22=8 >>> 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 >>> 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 >>> 336=TradingSessionID 279=1 269=b 278=3 55=BGIH09 48=BMFBR7312795 22=8 >>> 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 >>> 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 >>> 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIH09 48=BMFBR7312795 >>> 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=165 >>> > ------------------------------------- >>> > >>> > But when I send to the MessageCracker I have problems. >>> > >>> > When I try to get the NoMDEntries group I got an error: FieldNotFound. >>> > >>> > ------------------------------------- >>> > // Test if we have the groups >>> > FIX44::MarketDataIncrementalRefresh::NoMDEntries noMDEntriesGroup; >>> > if( !message.hasGroup( noMDEntriesGroup ) ) >>> > { >>> > std::cout << "\n\tInvalid Message: no Group\n]\n"; >>> > return; >>> > } >>> > >>> > // Read a entry group >>> > try >>> > { >>> > message.getGroup( 1, noMDEntriesGroup ); >>> > } >>> > catch( FIX::FieldNotFound e ) >>> > { >>> > std::cout << "\tnoGroup(" << e.field << ")"; >>> > continue; >>> > } >>> > ------------------------------------- >>> > >>> > Investigating the problem, I try to use the DataDictinary to validate >>> the message: >>> > >>> > ------------------------------------- >>> > DD_FIX44 = new FIX::DataDictionary( >>> "/opt/quickfix/share/quickfix/FIX44.xml" ); >>> > >>> > try >>> > { >>> > const std::string& msgTypeValue = message.getHeader().getField( >>> FIX::FIELD::MsgType ); >>> > std::string str; >>> > DD_FIX44->getFieldName( 22, str ); >>> > std::cout << "[ " << str << " ] " >>> > << msgTypeValue << " " >>> > << DD_FIX44->isMsgField( msgTypeValue, 22 ) << std::endl; >>> > >>> > DD_FIX44->validate( message ); >>> > } >>> > catch( FIX::TagNotDefinedForMessage e ) >>> > { >>> > std::cout << "Problems: [ TagNotDefinedForMessage " << e.field << >>> e.detail >>> > << " ]" << std::endl; >>> > } >>> > >>> > OUTPUT: >>> > [ SecurityIDSource ] X 0 >>> > Problems: [ TagNotDefinedForMessage 22 ] >>> > >>> > ------------------------------------- >>> > >>> > The problem is: the tag 22 (SecurityIDSource), present in the FIX >>> messages, is return that is NOT defined for the message. >>> > But looking at the XML and the "fix44/MarketDataIncrementalRefresh.h" >>> is defined! >>> > >>> > So, any one with this problem? Any help? >>> > >>> > Thanks in advance, >>> > Andre B Derraik. >>> > ALBD Consulting >>> > >>> >> >> >> >> ------------------------------------------------------------------------------ >> >> _______________________________________________ >> Quickfix-developers mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfix-developers >> > > > > -- > ------------------------------------------------------------------- > Ph : (973)-896-8208 > Email: kha...@gm... > Web: http://khandelwal.amit.googlepages.com/home > ------------------------------------------------------------------- > |
From: Andre D. <and...@al...> - 2009-06-17 19:14:58
|
Hi All, I'm new with quickfix, but I'm creating a application to read a file with FIX lines. I use the Parser class to validate the message and it's OK. ------------------------------------- 8=FIX.4.4 9=628 35=X 34=2 49=TradingEngineDerivatives01A 52=20080501-03:35:23.379 56=FIXGatewayDerivatives_MD 10016=15977_1 75=20080501 268=5 279=1 269=c 278=1 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 279=1 269=b 278=3 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=034 8=FIX.4.4 9=630 35=X 34=3 49=TradingEngineDerivatives01A 52=20080501-03:35:23.395 56=FIXGatewayDerivatives_MD 10016=14827_105 75=20080501 268=5 279=1 269=c 278=1 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 279=1 269=b 278=3 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=165 ------------------------------------- But when I send to the MessageCracker I have problems. When I try to get the NoMDEntries group I got an error: FieldNotFound. ------------------------------------- // Test if we have the groups FIX44::MarketDataIncrementalRefresh::NoMDEntries noMDEntriesGroup; if( !message.hasGroup( noMDEntriesGroup ) ) { std::cout << "\n\tInvalid Message: no Group\n]\n"; return; } // Read a entry group try { message.getGroup( 1, noMDEntriesGroup ); } catch( FIX::FieldNotFound e ) { std::cout << "\tnoGroup(" << e.field << ")"; continue; } ------------------------------------- Investigating the problem, I try to use the DataDictinary to validate the message: ------------------------------------- DD_FIX44 = new FIX::DataDictionary( "/opt/quickfix/share/quickfix/FIX44.xml" ); try { const std::string& msgTypeValue = message.getHeader().getField( FIX::FIELD::MsgType ); std::string str; DD_FIX44->getFieldName( 22, str ); std::cout << "[ " << str << " ] " << msgTypeValue << " " << DD_FIX44->isMsgField( msgTypeValue, 22 ) << std::endl; DD_FIX44->validate( message ); } catch( FIX::TagNotDefinedForMessage e ) { std::cout << "Problems: [ TagNotDefinedForMessage " << e.field << e.detail << " ]" << std::endl; } OUTPUT: [ SecurityIDSource ] X 0 Problems: [ TagNotDefinedForMessage 22 ] ------------------------------------- The problem is: the tag 22 (SecurityIDSource), present in the FIX messages, is return that is NOT defined for the message. But looking at the XML and the "fix44/MarketDataIncrementalRefresh.h" is defined! So, any one with this problem? Any help? Thanks in advance, Andre B Derraik. ALBD Consulting |
From: Andre D. <an...@al...> - 2009-06-17 18:47:39
|
Hi All, I'm new with quickfix, but I'm creating a application to read a file with FIX lines. I use the Parser class to validate the message and it's OK. ------------------------------------- 8=FIX.4.4 9=628 35=X 34=2 49=TradingEngineDerivatives01A 52=20080501-03:35:23.379 56=FIXGatewayDerivatives_MD 10016=15977_1 75=20080501 268=5 279=1 269=c 278=1 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 279=1 269=b 278=3 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=034 8=FIX.4.4 9=630 35=X 34=3 49=TradingEngineDerivatives01A 52=20080501-03:35:23.395 56=FIXGatewayDerivatives_MD 10016=14827_105 75=20080501 268=5 279=1 269=c 278=1 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 279=1 269=b 278=3 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=165 ------------------------------------- But when I send to the MessageCracker I have problems. When I try to get the NoMDEntries group I got an error: FieldNotFound. ------------------------------------- // Test if we have the groups FIX44::MarketDataIncrementalRefresh::NoMDEntries noMDEntriesGroup; if( !message.hasGroup( noMDEntriesGroup ) ) { std::cout << "\n\tInvalid Message: no Group\n]\n"; return; } // Read a entry group try { message.getGroup( 1, noMDEntriesGroup ); } catch( FIX::FieldNotFound e ) { std::cout << "\tnoGroup(" << e.field << ")"; continue; } ------------------------------------- Investigating the problem, I try to use the DataDictinary to validate the message: ------------------------------------- DD_FIX44 = new FIX::DataDictionary( "/opt/quickfix/share/quickfix/FIX44.xml" ); try { const std::string& msgTypeValue = message.getHeader().getField( FIX::FIELD::MsgType ); std::string str; DD_FIX44->getFieldName( 22, str ); std::cout << "[ " << str << " ] " << msgTypeValue << " " << DD_FIX44->isMsgField( msgTypeValue, 22 ) << std::endl; DD_FIX44->validate( message ); } catch( FIX::TagNotDefinedForMessage e ) { std::cout << "Problems: [ TagNotDefinedForMessage " << e.field << e.detail << " ]" << std::endl; } OUTPUT: [ SecurityIDSource ] X 0 Problems: [ TagNotDefinedForMessage 22 ] ------------------------------------- The problem is: the tag 22 (SecurityIDSource), present in the FIX messages, is return that is NOT defined for the message. But looking at the XML and the "fix44/MarketDataIncrementalRefresh.h" is defined! So, any one with this problem? Any help? Thanks in advance, Andre B Derraik. ALBD Consulting |