Thread: [Quickfix-users] Problem with custom data dictionary
Brought to you by:
orenmnero
From: Dan B. <dbo...@so...> - 2011-02-07 19:42:14
|
Hi, I'm using quickfix 4.4 with .NET. I have a need to take a Trade Capture message stored as a string, and then create the Trade Capture object from that. It has been working fine, but now I'm needing to use TrdType (828) from ICE. Per the FIX spec, this should be an int, but ICE can send characters, so I tried to change the FIX44.xml file to define this field as a string. <field number="828" name="TrdType" type="STRING"> <value enum="0" description="REGULAR_TRADE" /> <value enum="1" description="BLOCK_TRADE" /> <value enum="2" description="EFP" /> <value enum="3" description="TRANSFER" /> <value enum="4" description="LATE_TRADE" /> <value enum="5" description="T_TRADE" /> <value enum="6" description="WEIGHTED_AVERAGE_PRICE_TRADE" /> <value enum="7" description="BUNCHED_TRADE" /> <value enum="8" description="LATE_BUNCHED_TRADE" /> <!--<value enum="9" description="PRIOR_REFERENCE_PRICE_TRADE" />--> <value enum="9" /> <!-- CCX EFP Trade --> <value enum="K" /> <!-- Block Trade --> <value enum="E" /> <!-- EFP Trade --> .... When I get a trade where 828=E, I get an exception when the Trade Capture object is set using this code: var trade = new TradeCaptureReport(); trade.setString(message, true, new QuickFix.DataDictionary("C:\IceConfig\FIX44.xml")); {"Exception of type 'QuickFix.InvalidMessage' was thrown."} System.Exception {QuickFix.InvalidMessage} What am I doing wrong? Thanks, Dan |
From: Grant B. <gbi...@co...> - 2011-02-07 20:07:44
|
I think you can just delete all the "value" tags inside the field tag. They don't make sense with a string field. Basically, just make the TrdType field look like any other string field. -Grant On Mon, Feb 7, 2011 at 1:27 PM, Dan Bonnett <dbo...@so...> wrote: > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > Hi, > > > > I’m using quickfix 4.4 with .NET. I have a need to take a Trade Capture > message stored as a string, and then create the Trade Capture object from > that. > > > > It has been working fine, but now I’m needing to use TrdType (828) from > ICE. Per the FIX spec, this should be an int, but ICE can send characters, > so I tried to change the FIX44.xml file to define this field as a string. > > > > <field number="828" name="TrdType" type="STRING"> > > <value enum="0" description="REGULAR_TRADE" /> > > <value enum="1" description="BLOCK_TRADE" /> > > <value enum="2" description="EFP" /> > > <value enum="3" description="TRANSFER" /> > > <value enum="4" description="LATE_TRADE" /> > > <value enum="5" description="T_TRADE" /> > > <value enum="6" description="WEIGHTED_AVERAGE_PRICE_TRADE" /> > > <value enum="7" description="BUNCHED_TRADE" /> > > <value enum="8" description="LATE_BUNCHED_TRADE" /> > > <!--<value enum="9" description="PRIOR_REFERENCE_PRICE_TRADE" />--> > > <value enum="9" /> > > <!-- CCX EFP Trade --> > > <value enum="K" /> > > <!-- Block Trade --> > > <value enum="E" /> > > <!-- EFP Trade --> > > …. > > > > > > When I get a trade where 828=E, I get an exception when the Trade Capture > object is set using this code: > > > > var trade = new TradeCaptureReport(); > > trade.setString(message, true, new QuickFix.DataDictionary( > “C:\IceConfig\FIX44.xml”)); > > > > > > {"Exception of type 'QuickFix.InvalidMessage' was thrown."} > System.Exception {QuickFix.InvalidMessage} > > > > What am I doing wrong? > > > > Thanks, > > Dan > > > > > > > > > ------------------------------------------------------------------------------ > The modern datacenter depends on network connectivity to access resources > and provide services. The best practices for maximizing a physical server's > connectivity to a physical network are well understood - see how these > rules translate into the virtual world? > http://p.sf.net/sfu/oracle-sfdevnlfb > _______________________________________________ > Quickfix-users mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-users > > |
From: Mike P. <mic...@ya...> - 2011-02-07 20:21:13
|
I think you need to rebuild the API. The TrdType field is probably still defined as a 'Integer' and not a 'String'. --- On Mon, 2/7/11, Dan Bonnett <dbo...@so...> wrote: From: Dan Bonnett <dbo...@so...> Subject: [Quickfix-users] Problem with custom data dictionary To: "qui...@li..." <qui...@li...> Date: Monday, February 7, 2011, 1:27 PM QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html Hi, I’m using quickfix 4.4 with .NET. I have a need to take a Trade Capture message stored as a string, and then create the Trade Capture object from that. It has been working fine, but now I’m needing to use TrdType (828) from ICE. Per the FIX spec, this should be an int, but ICE can send characters, so I tried to change the FIX44.xml file to define this field as a string. <field number="828" name="TrdType" type="STRING"> <value enum="0" description="REGULAR_TRADE" /> <value enum="1" description="BLOCK_TRADE" /> <value enum="2" description="EFP" /> <value enum="3" description="TRANSFER" /> <value enum="4" description="LATE_TRADE" /> <value enum="5" description="T_TRADE" /> <value enum="6" description="WEIGHTED_AVERAGE_PRICE_TRADE" /> <value enum="7" description="BUNCHED_TRADE" /> <value enum="8" description="LATE_BUNCHED_TRADE" /> <!--<value enum="9" description="PRIOR_REFERENCE_PRICE_TRADE" />--> <value enum="9" /> <!-- CCX EFP Trade --> <value enum="K" /> <!-- Block Trade --> <value enum="E" /> <!-- EFP Trade -->…. When I get a trade where 828=E, I get an exception when the Trade Capture object is set using this code: var trade = new TradeCaptureReport();trade.setString(message, true, new QuickFix.DataDictionary(“C:\IceConfig\FIX44.xml”)); {"Exception of type 'QuickFix.InvalidMessage' was thrown."} System.Exception {QuickFix.InvalidMessage} What am I doing wrong? Thanks,Dan -----Inline Attachment Follows----- ------------------------------------------------------------------------------ The modern datacenter depends on network connectivity to access resources and provide services. The best practices for maximizing a physical server's connectivity to a physical network are well understood - see how these rules translate into the virtual world? http://p.sf.net/sfu/oracle-sfdevnlfb -----Inline Attachment Follows----- _______________________________________________ Quickfix-users mailing list Qui...@li... https://lists.sourceforge.net/lists/listinfo/quickfix-users |
From: Dan B. <dbo...@so...> - 2011-02-07 20:34:24
|
Are you talking about the QuickFix API? I’ve not modified the quick fix source for my project, I’m using the standard .dll provided by the quickfixengine site. I was hoping that having a configurable dictionary would be enough. I’ve had success in adding custom fields, but this is the first standard field that I’ve had to modify. Grant, I tried to change it to a String and remove all the values under that field, but it’s still not working. From: Mike Perik [mailto:mic...@ya...] Sent: Monday, February 07, 2011 2:21 PM To: qui...@li...; Dan Bonnett Subject: Re: [Quickfix-users] Problem with custom data dictionary I think you need to rebuild the API. The TrdType field is probably still defined as a 'Integer' and not a 'String'. --- On Mon, 2/7/11, Dan Bonnett <dbo...@so...<mailto:dbo...@so...>> wrote: From: Dan Bonnett <dbo...@so...<mailto:dbo...@so...>> Subject: [Quickfix-users] Problem with custom data dictionary To: "qui...@li...<mailto:qui...@li...>" <qui...@li...<mailto:qui...@li...>> Date: Monday, February 7, 2011, 1:27 PM QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html Hi, I’m using quickfix 4.4 with .NET. I have a need to take a Trade Capture message stored as a string, and then create the Trade Capture object from that. It has been working fine, but now I’m needing to use TrdType (828) from ICE. Per the FIX spec, this should be an int, but ICE can send characters, so I tried to change the FIX44.xml file to define this field as a string. <field number="828" name="TrdType" type="STRING"> <value enum="0" description="REGULAR_TRADE" /> <value enum="1" description="BLOCK_TRADE" /> <value enum="2" description="EFP" /> <value enum="3" description="TRANSFER" /> <value enum="4" description="LATE_TRADE" /> <value enum="5" description="T_TRADE" /> <value enum="6" description="WEIGHTED_AVERAGE_PRICE_TRADE" /> <value enum="7" description="BUNCHED_TRADE" /> <value enum="8" description="LATE_BUNCHED_TRADE" /> <!--<value enum="9" description="PRIOR_REFERENCE_PRICE_TRADE" />--> <value enum="9" /> <!-- CCX EFP Trade --> <value enum="K" /> <!-- Block Trade --> <value enum="E" /> <!-- EFP Trade --> …. When I get a trade where 828=E, I get an exception when the Trade Capture object is set using this code: var trade = new TradeCaptureReport(); trade.setString(message, true, new QuickFix.DataDictionary(“C:\IceConfig\FIX44.xml”)); {"Exception of type 'QuickFix.InvalidMessage' was thrown."} System.Exception {QuickFix.InvalidMessage} What am I doing wrong? Thanks, Dan -----Inline Attachment Follows----- ------------------------------------------------------------------------------ The modern datacenter depends on network connectivity to access resources and provide services. The best practices for maximizing a physical server's connectivity to a physical network are well understood - see how these rules translate into the virtual world? http://p.sf.net/sfu/oracle-sfdevnlfb -----Inline Attachment Follows----- _______________________________________________ Quickfix-users mailing list Qui...@li...</mc/compose?to=Qui...@li...> https://lists.sourceforge.net/lists/listinfo/quickfix-users |
From: Grant B. <gbi...@co...> - 2011-02-07 20:44:46
|
Some QuickFIX source files are generated from the XML file. For some changes, you may need to regenerate and recompile. This might be one of those times. Regardless, it is worth your time to know how to build it from source. (Thanks to Mike for mentioning the regeneration; it completely slipped my mind.) -Grant On Mon, Feb 7, 2011 at 2:34 PM, Dan Bonnett <dbo...@so...> wrote: > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > Are you talking about the QuickFix API? I’ve not modified the quick fix > source for my project, I’m using the standard .dll provided by the > quickfixengine site. I was hoping that having a configurable dictionary > would be enough. I’ve had success in adding custom fields, but this is the > first standard field that I’ve had to modify. > > > > Grant, I tried to change it to a String and remove all the values under > that field, but it’s still not working. > > > > *From:* Mike Perik [mailto:mic...@ya...] > *Sent:* Monday, February 07, 2011 2:21 PM > *To:* qui...@li...; Dan Bonnett > *Subject:* Re: [Quickfix-users] Problem with custom data dictionary > > > > I think you need to rebuild the API. The TrdType field is probably still > defined as a 'Integer' and not a 'String'. > > > > --- On *Mon, 2/7/11, Dan Bonnett <dbo...@so...>* wrote: > > > From: Dan Bonnett <dbo...@so...> > Subject: [Quickfix-users] Problem with custom data dictionary > To: "qui...@li..." < > qui...@li...> > Date: Monday, February 7, 2011, 1:27 PM > > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > Hi, > > > > I’m using quickfix 4.4 with .NET. I have a need to take a Trade Capture > message stored as a string, and then create the Trade Capture object from > that. > > > > It has been working fine, but now I’m needing to use TrdType (828) from > ICE. Per the FIX spec, this should be an int, but ICE can send characters, > so I tried to change the FIX44.xml file to define this field as a string. > > > > <field number="828" name="TrdType" type="STRING"> > > <value enum="0" description="REGULAR_TRADE" /> > > <value enum="1" description="BLOCK_TRADE" /> > > <value enum="2" description="EFP" /> > > <value enum="3" description="TRANSFER" /> > > <value enum="4" description="LATE_TRADE" /> > > <value enum="5" description="T_TRADE" /> > > <value enum="6" description="WEIGHTED_AVERAGE_PRICE_TRADE" /> > > <value enum="7" description="BUNCHED_TRADE" /> > > <value enum="8" description="LATE_BUNCHED_TRADE" /> > > <!--<value enum="9" description="PRIOR_REFERENCE_PRICE_TRADE" />--> > > <value enum="9" /> > > <!-- CCX EFP Trade --> > > <value enum="K" /> > > <!-- Block Trade --> > > <value enum="E" /> > > <!-- EFP Trade --> > > …. > > > > > > When I get a trade where 828=E, I get an exception when the Trade Capture > object is set using this code: > > > > var trade = new TradeCaptureReport(); > > trade.setString(message, true, new QuickFix.DataDictionary( > “C:\IceConfig\FIX44.xml”)); > > > > > > {"Exception of type 'QuickFix.InvalidMessage' was thrown."} > System.Exception {QuickFix.InvalidMessage} > > > > What am I doing wrong? > > > > Thanks, > > Dan > > > > > > > > > -----Inline Attachment Follows----- > > > ------------------------------------------------------------------------------ > The modern datacenter depends on network connectivity to access resources > and provide services. The best practices for maximizing a physical server's > connectivity to a physical network are well understood - see how these > rules translate into the virtual world? > http://p.sf.net/sfu/oracle-sfdevnlfb > > > -----Inline Attachment Follows----- > > _______________________________________________ > Quickfix-users mailing list > Qui...@li...<http://mc/compose?to=Qui...@li...> > https://lists.sourceforge.net/lists/listinfo/quickfix-users > > > > > ------------------------------------------------------------------------------ > The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE: > Pinpoint memory and threading errors before they happen. > Find and fix more than 250 security defects in the development cycle. > Locate bottlenecks in serial and parallel code that limit performance. > http://p.sf.net/sfu/intel-dev2devfeb > _______________________________________________ > Quickfix-users mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-users > > |
From: Evans, J. \(IT Woodbridge\) <JF...@he...> - 2011-02-07 21:13:28
|
I'm an ICE user, too Here is what I did... Commented out the original def and added the ICE version: <!--<field number="828" name="TrdType" type="INT"> <value enum="0" description="REGULAR_TRADE" /> <value enum="1" description="BLOCK_TRADE" /> <value enum="2" description="EFP" /> <value enum="3" description="TRANSFER" /> <value enum="4" description="LATE_TRADE" /> <value enum="5" description="T_TRADE" /> <value enum="6" description="WEIGHTED_AVERAGE_PRICE_TRADE" /> <value enum="7" description="BUNCHED_TRADE" /> <value enum="8" description="LATE_BUNCHED_TRADE" /> <value enum="9" description="PRIOR_REFERENCE_PRICE_TRADE" /> </field>--> <field number="828" name="TrdType" type="STRING"> <value enum="0" description="REGULAR_TRADE" /> <value enum="K" description="BLOCK_TRADE" /> <value enum="E" description="EFP_TRADE" /> <value enum="S" description="EFS_TRADE" /> <value enum="V" description="BILATERAL_OFF_EXCHANGE_TRADE" /> <value enum="O" description="NG_EFP/EFS_TRADE" /> <value enum="9" description="CCX_EFP_TRADE" /> <value enum="J" description="EFR_TRADE" /> <value enum="T" description="CONTRA_TRADE" /> <value enum="Y" description="CROSS_CONTRA_TRADE" /> <value enum="F" description="EFS/EFP_CONTRA_TRADE" /> </field> In my code (VB), I used the generic methods to get the TrdType: Private qff_TrdType As New QuickFix.StringField(828) . . . If message.isSetField(qff_TrdType) Then myTradeCaptureData.TrdType = message.getField(qff_TrdType).getValue End If 'must use above because we cannot use strongly typed field because ICE is using it as a string whereas QuickFix as an integer. 'If message.isSetTrdType Then ' myTradeCaptureData.TrdType = message.getTrdType.getValue 'End If -----Original Message----- From: Dan Bonnett [mailto:dbo...@so...] Sent: Monday February 07, 2011 3:34 PM To: Mike Perik; qui...@li... Subject: Re: [Quickfix-users] Problem with custom data dictionary QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html This e-mail and any attachments are for the sole use of the intended recipient(s) and may contain information that is confidential. If you are not the intended recipient(s) and have received this e-mail in error, please immediately notify the sender by return e-mail and delete this e-mail from your computer. Any distribution, disclosure or the taking of any other action by anyone other than the intended recipient(s) is strictly prohibited. |