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
|