quickfix-developers Mailing List for QuickFIX (Page 166)
Brought to you by:
orenmnero
You can subscribe to this list here.
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
|
Feb
(5) |
Mar
(16) |
Apr
(15) |
May
(17) |
Jun
(33) |
Jul
(35) |
Aug
(34) |
Sep
(19) |
Oct
(40) |
Nov
(51) |
Dec
(43) |
| 2003 |
Jan
(45) |
Feb
(79) |
Mar
(124) |
Apr
(121) |
May
(132) |
Jun
(77) |
Jul
(110) |
Aug
(57) |
Sep
(48) |
Oct
(83) |
Nov
(60) |
Dec
(40) |
| 2004 |
Jan
(67) |
Feb
(72) |
Mar
(74) |
Apr
(87) |
May
(70) |
Jun
(96) |
Jul
(75) |
Aug
(147) |
Sep
(128) |
Oct
(83) |
Nov
(67) |
Dec
(42) |
| 2005 |
Jan
(110) |
Feb
(84) |
Mar
(68) |
Apr
(55) |
May
(51) |
Jun
(192) |
Jul
(111) |
Aug
(100) |
Sep
(79) |
Oct
(127) |
Nov
(73) |
Dec
(112) |
| 2006 |
Jan
(95) |
Feb
(120) |
Mar
(138) |
Apr
(127) |
May
(124) |
Jun
(97) |
Jul
(103) |
Aug
(88) |
Sep
(138) |
Oct
(91) |
Nov
(112) |
Dec
(57) |
| 2007 |
Jan
(55) |
Feb
(35) |
Mar
(56) |
Apr
(16) |
May
(20) |
Jun
(77) |
Jul
(43) |
Aug
(47) |
Sep
(29) |
Oct
(54) |
Nov
(39) |
Dec
(40) |
| 2008 |
Jan
(69) |
Feb
(79) |
Mar
(122) |
Apr
(106) |
May
(114) |
Jun
(76) |
Jul
(83) |
Aug
(71) |
Sep
(53) |
Oct
(75) |
Nov
(54) |
Dec
(43) |
| 2009 |
Jan
(32) |
Feb
(31) |
Mar
(64) |
Apr
(48) |
May
(38) |
Jun
(43) |
Jul
(35) |
Aug
(15) |
Sep
(52) |
Oct
(62) |
Nov
(62) |
Dec
(21) |
| 2010 |
Jan
(44) |
Feb
(10) |
Mar
(47) |
Apr
(22) |
May
(5) |
Jun
(54) |
Jul
(19) |
Aug
(54) |
Sep
(16) |
Oct
(15) |
Nov
(7) |
Dec
(8) |
| 2011 |
Jan
(18) |
Feb
(9) |
Mar
(5) |
Apr
(5) |
May
(41) |
Jun
(40) |
Jul
(29) |
Aug
(17) |
Sep
(12) |
Oct
(23) |
Nov
(22) |
Dec
(11) |
| 2012 |
Jan
(8) |
Feb
(24) |
Mar
(5) |
Apr
(5) |
May
(6) |
Jun
(5) |
Jul
(5) |
Aug
(5) |
Sep
(2) |
Oct
(9) |
Nov
(2) |
Dec
(18) |
| 2013 |
Jan
(25) |
Feb
(16) |
Mar
(8) |
Apr
(2) |
May
(16) |
Jun
(17) |
Jul
(2) |
Aug
(13) |
Sep
(3) |
Oct
(4) |
Nov
(1) |
Dec
|
| 2014 |
Jan
(2) |
Feb
|
Mar
(22) |
Apr
(9) |
May
(3) |
Jun
(1) |
Jul
(5) |
Aug
(11) |
Sep
(18) |
Oct
(4) |
Nov
(4) |
Dec
(3) |
| 2015 |
Jan
(2) |
Feb
|
Mar
|
Apr
(3) |
May
(4) |
Jun
(37) |
Jul
|
Aug
(4) |
Sep
(6) |
Oct
(1) |
Nov
(4) |
Dec
(2) |
| 2016 |
Jan
(9) |
Feb
(3) |
Mar
(7) |
Apr
(1) |
May
(8) |
Jun
|
Jul
|
Aug
|
Sep
(7) |
Oct
(3) |
Nov
(16) |
Dec
|
| 2017 |
Jan
(1) |
Feb
(15) |
Mar
(2) |
Apr
(12) |
May
(4) |
Jun
(7) |
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
(23) |
Dec
(8) |
| 2018 |
Jan
(2) |
Feb
(4) |
Mar
(2) |
Apr
(8) |
May
(3) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2019 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(5) |
Nov
(3) |
Dec
|
| 2020 |
Jan
|
Feb
(4) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
(12) |
Aug
(5) |
Sep
(3) |
Oct
(1) |
Nov
|
Dec
(1) |
| 2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2026 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Shankar K. <skr...@jw...> - 2006-02-07 15:55:17
|
Thanks, Done, apologies. Fixed most of my issues by following what you mentioned. The only issue I have is with the an Admin level message That my app is sending out - Required Tag missing for tag 37 which is order Id, I can see tag 37 in the trade capture report, I do have My own onMessage for TradeCaptureReport msgType = AD, why should this happen. Thanks _____ From: Shepheard, Toby (London) [mailto:Tob...@ml...] Sent: Tuesday, February 07, 2006 9:59 AM To: Shankar Krishnan; qui...@li... Subject: RE: [Quickfix-developers] ToApp : 58=Unsupported Message Type messages 1) If you haven't already, make sure you read this: http://www.quickfixengine.org/quickfix/doc/html/receiving_messages.html <http://www.quickfixengine.org/quickfix/doc/html/receiving_messages.html%20> 2) Follow the instructions under "Most Type Safe... DO THIS!" 3) Implement your version of onMessage which takes the TradeCaptureReportRequestAck message and acts on it in whatever manner you want to. 4) Implement your version of onMessage which takes the TradeCaptureReport message and acts on that appropriately. The following is from http://www.quickfixengine.org/quickfix/doc/html/application.html <http://www.quickfixengine.org/quickfix/doc/html/application.html> fromApp is one of the core entry points for your FIX application. Every application level request will come through here. If, for example, your application is a sell-side OMS, this is where you will get your new order requests. If you were a buy side, you would get your execution reports here. If a FieldNotFound exception is thrown, the counterparty will receive a reject indicating a conditionally required field is missing. The Message class will throw this exception when trying to retrieve a missing field, so you will rarely need the throw this explicitly. You can also throw an UnsupportedMessageType exception. This will result in the counterparty getting a reject informing them your application cannot process those types of messages. An IncorrectTagValue can also be thrown if a field contains a value that is out of range or you do not support. The default implementation will always result in the behaviour I've highlighted in bold. This is what is happening in your case. You need to override this default behaviour by implementing the onMessage calls for the application message types you are expecting (note that admin messages are handled for you) -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Shankar Krishnan Sent: 07 February 2006 14:51 To: Shankar Krishnan; qui...@li... Subject: RE: [Quickfix-developers] ToApp : 58=Unsupported Message Type messages Hi, My counterparty has sent me his logs, he does receive my TradeCaptureReportRequest , Followed by TradeCaptureReportRequestAck = AQ. This is followed by 3 TradeCaptureReports At this point my App is sending out a BusinessMessageReject, Why would the app send out a Business Message Reject on the AQ ? Any help appreciated. Thanks _____ From: Shankar Krishnan Sent: Tuesday, February 07, 2006 9:12 AM To: qui...@li... Subject: [Quickfix-developers] ToApp : 58=Unsupported Message Type messages Hi, ToApp is sending out the following message: The message type is Business Message Reject, 58=Unsupported Message Type 372=AQ 380=3 10=075 35 = j, Where j = Business Message Reject I donot see a reason why this reject should happen . Tks _____ If you are not an intended recipient of this e-mail, please notify the sender, delete it and do not read, act upon, print, disclose, copy, retain or redistribute it. Click here <http://www.ml.com/email_terms/> for important additional terms relating to this e-mail. http://www.ml.com/email_terms/ <http://www.ml.com/email_terms/> _____ |
|
From: Shepheard, T. (London) <Tob...@ml...> - 2006-02-07 14:59:40
|
1) If you haven't already, make sure you read this: http://www.quickfixengine.org/quickfix/doc/html/receiving_messages.html=20 2) Follow the instructions under "Most Type Safe... DO THIS!" 3) Implement your version of onMessage which takes the TradeCaptureReportRequestAck message and acts on it in whatever manner you want to. 4) Implement your version of onMessage which takes the TradeCaptureReport message and acts on that appropriately. =20 The following is from http://www.quickfixengine.org/quickfix/doc/html/application.html fromApp is one of the core entry points for your FIX application. Every application level request will come through here. If, for example, your application is a sell-side OMS, this is where you will get your new order requests. If you were a buy side, you would get your execution reports here. If a FieldNotFound exception is thrown, the counterparty will receive a reject indicating a conditionally required field is missing. The Message class will throw this exception when trying to retrieve a missing field, so you will rarely need the throw this explicitly. You can also throw an UnsupportedMessageType exception. This will result in the counterparty getting a reject informing them your application cannot process those types of messages. An IncorrectTagValue can also be thrown if a field contains a value that is out of range or you do not support. =20 The default implementation will always result in the behaviour I've highlighted in bold. This is what is happening in your case. You need to override this default behaviour by implementing the onMessage calls for the application message types you are expecting (note that admin messages are handled for you) =20 -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Shankar Krishnan Sent: 07 February 2006 14:51 To: Shankar Krishnan; qui...@li... Subject: RE: [Quickfix-developers] ToApp : 58=3DUnsupported Message Type messages =09 =09 =20 Hi, =20 =20 My counterparty has sent me his logs, he does receive my TradeCaptureReportRequest , Followed by TradeCaptureReportRequestAck =3D AQ. This is followed by 3 TradeCaptureReports At this point my App is sending out a BusinessMessageReject, =20 Why would the app send out a Business Message Reject on the AQ ? =20 Any help appreciated. =20 Thanks =20 =09 _____ =20 From: Shankar Krishnan=20 Sent: Tuesday, February 07, 2006 9:12 AM To: qui...@li... Subject: [Quickfix-developers] ToApp : 58=3DUnsupported Message Type messages =20 =20 Hi, =20 ToApp is sending out the following message: The message type is Business Message Reject,=20 =20 58=3DUnsupported Message Type 372=3DAQ 380=3D3 10=3D075 =20 35 =3D j, Where j =3D Business Message Reject =20 I donot see a reason why this reject should happen . Tks -------------------------------------------------------- If you are not an intended recipient of this e-mail, please notify the = sender, delete it and do not read, act upon, print, disclose, copy, = retain or redistribute it. Click here for important additional terms = relating to this e-mail. http://www.ml.com/email_terms/ -------------------------------------------------------- |
|
From: Shankar K. <skr...@jw...> - 2006-02-07 14:51:30
|
Hi, My counterparty has sent me his logs, he does receive my TradeCaptureReportRequest , Followed by TradeCaptureReportRequestAck = AQ. This is followed by 3 TradeCaptureReports At this point my App is sending out a BusinessMessageReject, Why would the app send out a Business Message Reject on the AQ ? Any help appreciated. Thanks _____ From: Shankar Krishnan Sent: Tuesday, February 07, 2006 9:12 AM To: qui...@li... Subject: [Quickfix-developers] ToApp : 58=Unsupported Message Type messages Hi, ToApp is sending out the following message: The message type is Business Message Reject, 58=Unsupported Message Type 372=AQ 380=3 10=075 35 = j, Where j = Business Message Reject I donot see a reason why this reject should happen . Tks |
|
From: Shankar K. <skr...@jw...> - 2006-02-07 14:12:06
|
Hi, ToApp is sending out the following message: The message type is Business Message Reject, 58=Unsupported Message Type 372=AQ 380=3 10=075 35 = j, Where j = Business Message Reject I donot see a reason why this reject should happen . Tks |
|
From: Shankar K. <skr...@jw...> - 2006-02-07 14:04:16
|
Apologies, my cfg file had the incorrect path set in the datadictionary tag.
Resolved this, problem does not exist anymore.
Regards
_____
From: Shankar Krishnan
Sent: Tuesday, February 07, 2006 8:41 AM
To: 'Shepheard, Toby (London)'
Cc: qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
Hi,
The AQ msgType has been changed to reflect that Instrument block is not
needed. I also built
QuickFix again. My Engine is sending out the same message, Appreciate any
helping resolving this
Issue.
58=Required tag missing
371=55
372=AQ
373=1
10=187
35=3
---------------------------------------------------------from
FIX44xml----------------------------spec modified----------------
<message name="TradeCaptureReportRequestAck" msgtype="AQ" msgcat="app">
<field name="TradeRequestID" required="Y" />
<field name="TradeRequestType" required="Y" />
<field name="SubscriptionRequestType" required="N" />
<field name="TotNumTradeReports" required="N" />
<field name="TradeRequestResult" required="Y" />
<field name="TradeRequestStatus" required="Y" />
<component name="Instrument" required="N" />
<group name="NoUnderlyings" required="N">
<component name="UnderlyingInstrument" required="N" />
</group>
<group name="NoLegs" required="N">
<component name="InstrumentLeg" required="N" />
</group>
<field name="MultiLegReportingType" required="N" />
<field name="ResponseTransportType" required="N" />
<field name="ResponseDestination" required="N" />
<field name="Text" required="N" />
<field name="EncodedTextLen" required="N" />
<field name="EncodedText" required="N" />
</message>
_____
From: Shepheard, Toby (London) [mailto:Tob...@ml...]
Sent: Tuesday, February 07, 2006 2:00 AM
To: Shankar Krishnan
Cc: qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
Looks like an error in the DataDictionary for the Trade Capture Report
Request Ack (AQ)
In FIX44.xml Instrument is given as a required component - it should be
optional as per the Trade Capture Report Request (AD)
Shankar, you'll have to edit this yourself and recompile QuickFIX - or wait
for one of the developers to do an update.
-----Original Message-----
From: Shankar Krishnan [mailto:skr...@jw...]
Sent: 06 February 2006 21:27
To: Shepheard, Toby (London)
Subject: RE: [Quickfix-developers] Required Tag missing - 58
Toby,
> Either get the counterparty to send, or change your code to not require an
Instrument block.
How do you make the code not require an instrument block ? thanks, I looked
around, anyhelp appreciated.
Thanks
_____
From: Shepheard, Toby (London) [mailto:Tob...@ml...]
Sent: Monday, February 06, 2006 12:33 PM
To: Shankar Krishnan
Cc: qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
Sorry yes, I got to and from confused. Although, it very much looks like the
sort of message I would expect you to be receiving given your code.
You're still using setField, just use set instead to keep things as type
safe as possible.
The Instrument block of a TCRR Ack (Msg AQ) is not a required part for that
message, although if you are getting an instrument block then the symbol is
a required part of it. Looks like you're expecting to receive one, and the
counterparty isn't sending it. Either get the counterparty to send, or
change your code to not require an Instrument block.
If you are receiving a TCRR Ack (AQ) then the counterparty must be seeing
your request or they wouldn't have replied.
Maybe you should run a network trace to see exactly what's being sent in and
out, and then double check that all required fields are being sent each way.
Also, if you have further problems please post a copy of your logs.
-----Original Message-----
From: Shankar Krishnan [mailto:skr...@jw...]
Sent: 06 February 2006 16:45
To: Shepheard, Toby (London)
Cc: qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
Thanks, I had no intention of creating a Generic message object, sorry
about that, hence the code should have looked like
private void application_Logon(object sender, FIXSessionIDEventArgs e)
{
QuickFix44.TradeCaptureReportRequest myTCRreport = new
QuickFix44.TradeCaptureReportRequest();
myTCRreport.setField(new
QuickFix.SubscriptionRequestType('1'));
myTCRreport.setField(new QuickFix.TradeRequestType(1));
myTCRreport.setField(new
QuickFix.TradeRequestID("abc101"));
myTCRreport.setField(new QuickFix.Text("TCR"));
Session.sendToTarget(myTCRreport,e.SessionID);
}
Also, looking up the quick doc, toAdmin - is actually what my server is
sending out to the counterparty., it is 55 which is SYMBOL.
Also the counterparty says he hasn't seen any report request come in from
me.
58=Required tag missing
371=55
372=AQ
373=1
10=182
_____
From: Shepheard, Toby (London) [mailto:Tob...@ml...]
Sent: Monday, February 06, 2006 11:10 AM
To: Shankar Krishnan; qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
First of all, you are misinterpreting the toAdmin message. This is a
response to you, from the other server, with a MsgType (tag 35) of 3 - a
reject message. The field 58 is a text field telling you why your message
was rejected - it was missing a required tag. Field 371, RefTagId, is saying
that the missing tag was tag 35. This isn't good, because tag 35 is the
message type! So, you were sending a message without setting the
msgType...now to look at why...
If you look at your code, you're actually sending a QuickFix.Message object.
This is a generic message object, and you're never telling it what type of
FIX message it is meant to be. You're creating the report-type message and
then not doing anything with it at the moment. You should really use the
typesafe set methods as described in the docs I pointed at earlier, not the
setField method.
(http://www.quickfixengine.org/quickfix/doc/html/sending_messages.html
<http://www.quickfixengine.org/quickfix/doc/html/sending_messages.html> ).
Whilst both work, the recommended method is recommended for good reasons -
including the fact that it sets the msgType and other header fields for you
:)
Thus:
QuickFix44.TradeCaptureReportRequest myTCRreport = new
QuickFix44.TradeCaptureReportRequest();
myTCRreport.set(new
QuickFix.SubscriptionRequestType('1'));
myTCRreport.set(new QuickFix.TradeRequestType(1));
myTCRreport.set(new QuickFix.TradeRequestID("abc101"));
myTCRreport.set(new QuickFix.Text("TCR"));
Session.sendToTarget(msg,e.SessionID);
As a minor aside, perhaps its worth adding a check in the QuickFIX code to
catch people trying to send messages formed from the base class and with no
specific type.
Regards
Toby
-----Original Message-----
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Shankar Krishnan
Sent: 06 February 2006 15:49
To: qui...@li...
Subject: [Quickfix-developers] Required Tag missing - 58
When sending a Session.sendToTarget request for a trade capture report
request coded as
QuickFix44.TradeCaptureReportRequest myTCRreport = new
QuickFix44.TradeCaptureReportRequest();
QuickFix.Message msg = new QuickFix.Message();
msg.setField(new QuickFix.SubscriptionRequestType('1'));
msg.setField(new QuickFix.TradeRequestType(1));
msg.setField(new QuickFix.TradeRequestID("abc101"));
msg.setField(new QuickFix.Text("TCR"));
Session.sendToTarget(msg,e.SessionID);
--
My ToAdmin message string looks like
To Admin:::::8=FIX.4.4_
9=117
35=3
34=2
49= XXXXX
52=20060206-15:44:09.729
56=xxxxxxxx
45=1
58=Required tag missing
371=35
372=A_
373=1
10=009
I am using FIX 4.4, the TCR request does not mention any tag 58, which seems
to be a text field, I tried inserting
A text field that did not work too.
Thanks
_____
If you are not an intended recipient of this e-mail, please notify the
sender, delete it and do not read, act upon, print, disclose, copy, retain
or redistribute it. Click here <http://www.ml.com/email_terms/> for
important additional terms relating to this e-mail.
http://www.ml.com/email_terms/ <http://www.ml.com/email_terms/>
_____
|
|
From: Shankar K. <skr...@jw...> - 2006-02-07 13:41:36
|
Hi,
The AQ msgType has been changed to reflect that Instrument block is not
needed. I also built
QuickFix again. My Engine is sending out the same message, Appreciate any
helping resolving this
Issue.
58=Required tag missing
371=55
372=AQ
373=1
10=187
35=3
---------------------------------------------------------from
FIX44xml----------------------------spec modified----------------
<message name="TradeCaptureReportRequestAck" msgtype="AQ" msgcat="app">
<field name="TradeRequestID" required="Y" />
<field name="TradeRequestType" required="Y" />
<field name="SubscriptionRequestType" required="N" />
<field name="TotNumTradeReports" required="N" />
<field name="TradeRequestResult" required="Y" />
<field name="TradeRequestStatus" required="Y" />
<component name="Instrument" required="N" />
<group name="NoUnderlyings" required="N">
<component name="UnderlyingInstrument" required="N" />
</group>
<group name="NoLegs" required="N">
<component name="InstrumentLeg" required="N" />
</group>
<field name="MultiLegReportingType" required="N" />
<field name="ResponseTransportType" required="N" />
<field name="ResponseDestination" required="N" />
<field name="Text" required="N" />
<field name="EncodedTextLen" required="N" />
<field name="EncodedText" required="N" />
</message>
_____
From: Shepheard, Toby (London) [mailto:Tob...@ml...]
Sent: Tuesday, February 07, 2006 2:00 AM
To: Shankar Krishnan
Cc: qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
Looks like an error in the DataDictionary for the Trade Capture Report
Request Ack (AQ)
In FIX44.xml Instrument is given as a required component - it should be
optional as per the Trade Capture Report Request (AD)
Shankar, you'll have to edit this yourself and recompile QuickFIX - or wait
for one of the developers to do an update.
-----Original Message-----
From: Shankar Krishnan [mailto:skr...@jw...]
Sent: 06 February 2006 21:27
To: Shepheard, Toby (London)
Subject: RE: [Quickfix-developers] Required Tag missing - 58
Toby,
> Either get the counterparty to send, or change your code to not require an
Instrument block.
How do you make the code not require an instrument block ? thanks, I looked
around, anyhelp appreciated.
Thanks
_____
From: Shepheard, Toby (London) [mailto:Tob...@ml...]
Sent: Monday, February 06, 2006 12:33 PM
To: Shankar Krishnan
Cc: qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
Sorry yes, I got to and from confused. Although, it very much looks like the
sort of message I would expect you to be receiving given your code.
You're still using setField, just use set instead to keep things as type
safe as possible.
The Instrument block of a TCRR Ack (Msg AQ) is not a required part for that
message, although if you are getting an instrument block then the symbol is
a required part of it. Looks like you're expecting to receive one, and the
counterparty isn't sending it. Either get the counterparty to send, or
change your code to not require an Instrument block.
If you are receiving a TCRR Ack (AQ) then the counterparty must be seeing
your request or they wouldn't have replied.
Maybe you should run a network trace to see exactly what's being sent in and
out, and then double check that all required fields are being sent each way.
Also, if you have further problems please post a copy of your logs.
-----Original Message-----
From: Shankar Krishnan [mailto:skr...@jw...]
Sent: 06 February 2006 16:45
To: Shepheard, Toby (London)
Cc: qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
Thanks, I had no intention of creating a Generic message object, sorry
about that, hence the code should have looked like
private void application_Logon(object sender, FIXSessionIDEventArgs e)
{
QuickFix44.TradeCaptureReportRequest myTCRreport = new
QuickFix44.TradeCaptureReportRequest();
myTCRreport.setField(new
QuickFix.SubscriptionRequestType('1'));
myTCRreport.setField(new QuickFix.TradeRequestType(1));
myTCRreport.setField(new
QuickFix.TradeRequestID("abc101"));
myTCRreport.setField(new QuickFix.Text("TCR"));
Session.sendToTarget(myTCRreport,e.SessionID);
}
Also, looking up the quick doc, toAdmin - is actually what my server is
sending out to the counterparty., it is 55 which is SYMBOL.
Also the counterparty says he hasn't seen any report request come in from
me.
58=Required tag missing
371=55
372=AQ
373=1
10=182
_____
From: Shepheard, Toby (London) [mailto:Tob...@ml...]
Sent: Monday, February 06, 2006 11:10 AM
To: Shankar Krishnan; qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
First of all, you are misinterpreting the toAdmin message. This is a
response to you, from the other server, with a MsgType (tag 35) of 3 - a
reject message. The field 58 is a text field telling you why your message
was rejected - it was missing a required tag. Field 371, RefTagId, is saying
that the missing tag was tag 35. This isn't good, because tag 35 is the
message type! So, you were sending a message without setting the
msgType...now to look at why...
If you look at your code, you're actually sending a QuickFix.Message object.
This is a generic message object, and you're never telling it what type of
FIX message it is meant to be. You're creating the report-type message and
then not doing anything with it at the moment. You should really use the
typesafe set methods as described in the docs I pointed at earlier, not the
setField method.
(http://www.quickfixengine.org/quickfix/doc/html/sending_messages.html
<http://www.quickfixengine.org/quickfix/doc/html/sending_messages.html> ).
Whilst both work, the recommended method is recommended for good reasons -
including the fact that it sets the msgType and other header fields for you
:)
Thus:
QuickFix44.TradeCaptureReportRequest myTCRreport = new
QuickFix44.TradeCaptureReportRequest();
myTCRreport.set(new
QuickFix.SubscriptionRequestType('1'));
myTCRreport.set(new QuickFix.TradeRequestType(1));
myTCRreport.set(new QuickFix.TradeRequestID("abc101"));
myTCRreport.set(new QuickFix.Text("TCR"));
Session.sendToTarget(msg,e.SessionID);
As a minor aside, perhaps its worth adding a check in the QuickFIX code to
catch people trying to send messages formed from the base class and with no
specific type.
Regards
Toby
-----Original Message-----
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Shankar Krishnan
Sent: 06 February 2006 15:49
To: qui...@li...
Subject: [Quickfix-developers] Required Tag missing - 58
When sending a Session.sendToTarget request for a trade capture report
request coded as
QuickFix44.TradeCaptureReportRequest myTCRreport = new
QuickFix44.TradeCaptureReportRequest();
QuickFix.Message msg = new QuickFix.Message();
msg.setField(new QuickFix.SubscriptionRequestType('1'));
msg.setField(new QuickFix.TradeRequestType(1));
msg.setField(new QuickFix.TradeRequestID("abc101"));
msg.setField(new QuickFix.Text("TCR"));
Session.sendToTarget(msg,e.SessionID);
--
My ToAdmin message string looks like
To Admin:::::8=FIX.4.4_
9=117
35=3
34=2
49= XXXXX
52=20060206-15:44:09.729
56=xxxxxxxx
45=1
58=Required tag missing
371=35
372=A_
373=1
10=009
I am using FIX 4.4, the TCR request does not mention any tag 58, which seems
to be a text field, I tried inserting
A text field that did not work too.
Thanks
_____
If you are not an intended recipient of this e-mail, please notify the
sender, delete it and do not read, act upon, print, disclose, copy, retain
or redistribute it. Click here <http://www.ml.com/email_terms/> for
important additional terms relating to this e-mail.
http://www.ml.com/email_terms/ <http://www.ml.com/email_terms/>
_____
|
|
From: Shepheard, T. (London) <Tob...@ml...> - 2006-02-07 07:00:11
|
Looks like an error in the DataDictionary for the Trade Capture Report
Request Ack (AQ)
=20
In FIX44.xml Instrument is given as a required component - it should be
optional as per the Trade Capture Report Request (AD)
=20
Shankar, you'll have to edit this yourself and recompile QuickFIX - or
wait for one of the developers to do an update.
=20
-----Original Message-----
From: Shankar Krishnan [mailto:skr...@jw...]=20
Sent: 06 February 2006 21:27
To: Shepheard, Toby (London)
Subject: RE: [Quickfix-developers] Required Tag missing - 58
=09
=09
=20
Toby,
=20
> Either get the counterparty to send, or change your code to
not require an Instrument block.
=20
How do you make the code not require an instrument block ?
thanks, I looked around, anyhelp appreciated.
=20
Thanks
=20
=20
=20
=09
_____ =20
From: Shepheard, Toby (London) [mailto:Tob...@ml...]=20
Sent: Monday, February 06, 2006 12:33 PM
To: Shankar Krishnan
Cc: qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
=20
Sorry yes, I got to and from confused. Although, it very much
looks like the sort of message I would expect you to be receiving given
your code.=20
=20
You're still using setField, just use set instead to keep things
as type safe as possible.=20
=20
The Instrument block of a TCRR Ack (Msg AQ) is not a required
part for that message, although if you are getting an instrument block
then the symbol is a required part of it. Looks like you're expecting to
receive one, and the counterparty isn't sending it. Either get the
counterparty to send, or change your code to not require an Instrument
block.
=20
If you are receiving a TCRR Ack (AQ) then the counterparty must
be seeing your request or they wouldn't have replied.=20
=20
Maybe you should run a network trace to see exactly what's being
sent in and out, and then double check that all required fields are
being sent each way. Also, if you have further problems please post a
copy of your logs.
-----Original Message-----
From: Shankar Krishnan [mailto:skr...@jw...]=20
Sent: 06 February 2006 16:45
To: Shepheard, Toby (London)
Cc: qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing
- 58
=20
=20
Thanks, I had no intention of creating a Generic
message object, sorry about that, hence the code should have looked like
=20
private void application_Logon(object sender,
FIXSessionIDEventArgs e)
{
QuickFix44.TradeCaptureReportRequest
myTCRreport =3D new QuickFix44.TradeCaptureReportRequest();
myTCRreport.setField(new
QuickFix.SubscriptionRequestType('1'));
myTCRreport.setField(new
QuickFix.TradeRequestType(1));
myTCRreport.setField(new
QuickFix.TradeRequestID("abc101"));
myTCRreport.setField(new
QuickFix.Text("TCR"));
=20
=20
=09
Session.sendToTarget(myTCRreport,e.SessionID);
=20
}
Also, looking up the quick doc, toAdmin - is actually
what my server is sending out to the counterparty., it is 55 which is
SYMBOL.
Also the counterparty says he hasn't seen any report
request come in from me.
=20
=20
58=3DRequired tag missing
371=3D55
372=3DAQ
373=3D1
10=3D182
=20
=09
_____ =20
From: Shepheard, Toby (London)
[mailto:Tob...@ml...]=20
Sent: Monday, February 06, 2006 11:10 AM
To: Shankar Krishnan;
qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing
- 58
=20
First of all, you are misinterpreting the toAdmin
message. This is a response to you, from the other server, with a
MsgType (tag 35) of 3 - a reject message. The field 58 is a text field
telling you why your message was rejected - it was missing a required
tag. Field 371, RefTagId, is saying that the missing tag was tag 35.
This isn't good, because tag 35 is the message type! So, you were
sending a message without setting the msgType...now to look at why...
=20
If you look at your code, you're actually sending a
QuickFix.Message object. This is a generic message object, and you're
never telling it what type of FIX message it is meant to be. You're
creating the report-type message and then not doing anything with it at
the moment. You should really use the typesafe set methods as described
in the docs I pointed at earlier, not the setField method.
(http://www.quickfixengine.org/quickfix/doc/html/sending_messages.html).
Whilst both work, the recommended method is recommended for good reasons
- including the fact that it sets the msgType and other header fields
for you :)
=20
Thus:
=20
QuickFix44.TradeCaptureReportRequest myTCRreport =3D new
QuickFix44.TradeCaptureReportRequest();
myTCRreport.set(new
QuickFix.SubscriptionRequestType('1'));
myTCRreport.set(new
QuickFix.TradeRequestType(1));
myTCRreport.set(new
QuickFix.TradeRequestID("abc101"));
myTCRreport.set(new
QuickFix.Text("TCR"));
=20
Session.sendToTarget(msg,e.SessionID);
=20
=20
As a minor aside, perhaps its worth adding a check in
the QuickFIX code to catch people trying to send messages formed from
the base class and with no specific type.
=20
Regards
Toby
-----Original Message-----
From:
qui...@li...
[mailto:qui...@li...] On Behalf Of
Shankar Krishnan
Sent: 06 February 2006 15:49
To: qui...@li...
Subject: [Quickfix-developers] Required Tag
missing - 58
=20
When sending a Session.sendToTarget request for
a trade capture report request coded as
=20
QuickFix44.TradeCaptureReportRequest myTCRreport
=3D new QuickFix44.TradeCaptureReportRequest();
QuickFix.Message msg =3D new
QuickFix.Message();
msg.setField(new
QuickFix.SubscriptionRequestType('1'));
msg.setField(new
QuickFix.TradeRequestType(1));
msg.setField(new
QuickFix.TradeRequestID("abc101"));
msg.setField(new
QuickFix.Text("TCR"));
=20
=09
Session.sendToTarget(msg,e.SessionID);
--
=20
My ToAdmin message string looks like
=20
To Admin:::::8=3DFIX.4.4_
9=3D117
35=3D3
34=3D2
49=3D XXXXX
52=3D20060206-15:44:09.729
56=3Dxxxxxxxx
45=3D1
58=3DRequired tag missing
371=3D35
372=3DA_
373=3D1
10=3D009
=20
I am using FIX 4.4, the TCR request does not
mention any tag 58, which seems to be a text field, I tried inserting
A text field that did not work too.
=20
Thanks
=20
=09
_____ =20
If you are not an intended recipient of this e-mail,
please notify the sender, delete it and do not read, act upon, print,
disclose, copy, retain or redistribute it. Click here
<http://www.ml.com/email_terms/> for important additional terms relating
to this e-mail. http://www.ml.com/email_terms/
=09
_____ =20
|
|
From: Oren M. <or...@qu...> - 2006-02-06 18:16:08
|
Exploit-QtPICT is apparently some sort of trojan that takes advantage of a buffer overflow in QuickTime: http://vil.nai.com//vil/content/v_137972.htm http://cve.mitre.org/cgi-bin/cvename.cgi?name=2005-2340 My feeling is that this is a false alarm. The exploit was discovered last month, while tagline.jpg is over 3 1/2 years old. The potential for exploit has probably always been there, but I don't this the awareness of it (by good guys or bad guys) has. My guess is that there is something about the file that makes it suspicious as a potential abuser of the exploit. If the alarm is ligitimate, it can only do anything if viewed through the QuickTime picture viewer. So don't do that. The file itself is not used anywhere so it can and should be deleted regardless. There have been no reports of any virus infections from any of the QuickFIX release packages. That particular package has been available for over 6 months and has been downloaded over 3,000 times. --oren Subert Mladen wrote: >QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html >QuickFIX Support: http://www.quickfixengine.org/services.html > >Our virus scanner has reported the following. It this a real problem ? >Thanks > >06.02.2006 05:01:49 No Action Taken EX\rpa >xcopy.exe C:\develop\rpa_s_TNS_TSDP016\TnsCopy\TestTools\FIX >Client Simulator\quickfix-1.10.2.zip\TAGLINE.JPG Exploit-QtPICT >(Trojan) >06.02.2006 05:01:49 Deleted (Clean failed because the file >isn't cleanable) EX\rpa xcopy.exe >C:\develop\rpa_s_TNS_TSDP016\TnsCopy\TestTools\FIX Client >Simulator\quickfix-1.10.2.zip\TAGLINE.JPG Exploit-QtPICT (Trojan) >06.02.2006 05:01:49 Delete failed (Clean failed because the >file isn't cleanable) EX\rpa xcopy.exe >C:\develop\rpa_s_TNS_TSDP016\TnsCopy\TestTools\FIX Client >Simulator\quickfix-1.10.2.zip\QUICKFIX-1.10.2.ZIP Exploit-QtPICT >(Trojan) >06.02.2006 05:07:26 No Action Taken EX\rpa ct.exe >C:\develop\rpa_s_TNS_TSDP016\tns\TestTools\FIX Client >Simulator\quickfix-1.10.2.zip.loading\TAGLINE.JPG Exploit-QtPICT >(Trojan) >06.02.2006 05:07:26 Deleted (Clean failed because the file >isn't cleanable) EX\rpa ct.exe >C:\develop\rpa_s_TNS_TSDP016\tns\TestTools\FIX Client >Simulator\quickfix-1.10.2.zip.loading\TAGLINE.JPG Exploit-QtPICT >(Trojan) >06.02.2006 05:07:26 Delete failed (Clean failed because the >file isn't cleanable) EX\rpa ct.exe >C:\develop\rpa_s_TNS_TSDP016\tns\TestTools\FIX Client >Simulator\quickfix-1.10.2.zip.loading\QUICKFIX-1.10.2.ZIP.LOADING >Exploit-QtPICT (Trojan) > > >This message is for the named person's use only. It may contain confidential, proprietary or legally privileged information. No confidentiality or privilege is waived or lost by any mistransmission. If you receive this message in error, please notify the sender urgently and then immediately delete the message and any copies of it from your system. Please also immediately destroy any hardcopies of the message. You must not, directly or indirectly, use, disclose, distribute, print, or copy any part of this message if you are not the intended recipient. The sender's company reserves the right to monitor all e-mail communications through their networks. Any views expressed in this message are those of the individual sender, except where the message states otherwise and the sender is authorised to state them to be the views of the sender's company. > > >------------------------------------------------------- >This SF.net email is sponsored by: Splunk Inc. Do you grep through log files >for problems? Stop! Download the new AJAX search engine that makes >searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! >http://sel.as-us.falkag.net/sel?cmd=k&kid3432&bid#0486&dat1642 >_______________________________________________ >Quickfix-developers mailing list >Qui...@li... >https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > > > |
|
From: Shepheard, T. (London) <Tob...@ml...> - 2006-02-06 17:33:32
|
Sorry yes, I got to and from confused. Although, it very much looks like
the sort of message I would expect you to be receiving given your code.=20
=20
You're still using setField, just use set instead to keep things as type
safe as possible.=20
=20
The Instrument block of a TCRR Ack (Msg AQ) is not a required part for
that message, although if you are getting an instrument block then the
symbol is a required part of it. Looks like you're expecting to receive
one, and the counterparty isn't sending it. Either get the counterparty
to send, or change your code to not require an Instrument block.
=20
If you are receiving a TCRR Ack (AQ) then the counterparty must be
seeing your request or they wouldn't have replied.=20
=20
Maybe you should run a network trace to see exactly what's being sent in
and out, and then double check that all required fields are being sent
each way. Also, if you have further problems please post a copy of your
logs.
-----Original Message-----
From: Shankar Krishnan [mailto:skr...@jw...]=20
Sent: 06 February 2006 16:45
To: Shepheard, Toby (London)
Cc: qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
=09
=09
=20
=20
Thanks, I had no intention of creating a Generic message
object, sorry about that, hence the code should have looked like
=20
private void application_Logon(object sender,
FIXSessionIDEventArgs e)
{
QuickFix44.TradeCaptureReportRequest
myTCRreport =3D new QuickFix44.TradeCaptureReportRequest();
myTCRreport.setField(new
QuickFix.SubscriptionRequestType('1'));
myTCRreport.setField(new
QuickFix.TradeRequestType(1));
myTCRreport.setField(new
QuickFix.TradeRequestID("abc101"));
myTCRreport.setField(new
QuickFix.Text("TCR"));
=20
=20
=09
Session.sendToTarget(myTCRreport,e.SessionID);
=20
}
Also, looking up the quick doc, toAdmin - is actually what my
server is sending out to the counterparty., it is 55 which is SYMBOL.
Also the counterparty says he hasn't seen any report request
come in from me.
=20
=20
58=3DRequired tag missing
371=3D55
372=3DAQ
373=3D1
10=3D182
=20
=09
_____ =20
From: Shepheard, Toby (London) [mailto:Tob...@ml...]=20
Sent: Monday, February 06, 2006 11:10 AM
To: Shankar Krishnan; qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
=20
First of all, you are misinterpreting the toAdmin message. This
is a response to you, from the other server, with a MsgType (tag 35) of
3 - a reject message. The field 58 is a text field telling you why your
message was rejected - it was missing a required tag. Field 371,
RefTagId, is saying that the missing tag was tag 35. This isn't good,
because tag 35 is the message type! So, you were sending a message
without setting the msgType...now to look at why...
=20
If you look at your code, you're actually sending a
QuickFix.Message object. This is a generic message object, and you're
never telling it what type of FIX message it is meant to be. You're
creating the report-type message and then not doing anything with it at
the moment. You should really use the typesafe set methods as described
in the docs I pointed at earlier, not the setField method.
(http://www.quickfixengine.org/quickfix/doc/html/sending_messages.html).
Whilst both work, the recommended method is recommended for good reasons
- including the fact that it sets the msgType and other header fields
for you :)
=20
Thus:
=20
QuickFix44.TradeCaptureReportRequest myTCRreport =3D new
QuickFix44.TradeCaptureReportRequest();
myTCRreport.set(new
QuickFix.SubscriptionRequestType('1'));
myTCRreport.set(new
QuickFix.TradeRequestType(1));
myTCRreport.set(new
QuickFix.TradeRequestID("abc101"));
myTCRreport.set(new QuickFix.Text("TCR"));
=20
Session.sendToTarget(msg,e.SessionID);
=20
=20
As a minor aside, perhaps its worth adding a check in the
QuickFIX code to catch people trying to send messages formed from the
base class and with no specific type.
=20
Regards
Toby
-----Original Message-----
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Shankar Krishnan
Sent: 06 February 2006 15:49
To: qui...@li...
Subject: [Quickfix-developers] Required Tag missing - 58
=20
When sending a Session.sendToTarget request for a trade
capture report request coded as
=20
QuickFix44.TradeCaptureReportRequest myTCRreport =3D new
QuickFix44.TradeCaptureReportRequest();
QuickFix.Message msg =3D new
QuickFix.Message();
msg.setField(new
QuickFix.SubscriptionRequestType('1'));
msg.setField(new
QuickFix.TradeRequestType(1));
msg.setField(new
QuickFix.TradeRequestID("abc101"));
msg.setField(new
QuickFix.Text("TCR"));
=20
Session.sendToTarget(msg,e.SessionID);
--
=20
My ToAdmin message string looks like
=20
To Admin:::::8=3DFIX.4.4_
9=3D117
35=3D3
34=3D2
49=3D XXXXX
52=3D20060206-15:44:09.729
56=3Dxxxxxxxx
45=3D1
58=3DRequired tag missing
371=3D35
372=3DA_
373=3D1
10=3D009
=20
I am using FIX 4.4, the TCR request does not mention any
tag 58, which seems to be a text field, I tried inserting
A text field that did not work too.
=20
Thanks
=20
=09
_____ =20
If you are not an intended recipient of this e-mail, please
notify the sender, delete it and do not read, act upon, print, disclose,
copy, retain or redistribute it. Click here
<http://www.ml.com/email_terms/> for important additional terms relating
to this e-mail. http://www.ml.com/email_terms/
=09
_____ =20
|
|
From: Subert M. <Mla...@sw...> - 2006-02-06 17:17:44
|
Our virus scanner has reported the following. It this a real problem ? Thanks 06.02.2006 05:01:49 No Action Taken EX\rpa xcopy.exe C:\develop\rpa_s_TNS_TSDP016\TnsCopy\TestTools\FIX Client Simulator\quickfix-1.10.2.zip\TAGLINE.JPG Exploit-QtPICT (Trojan) 06.02.2006 05:01:49 Deleted (Clean failed because the file isn't cleanable) EX\rpa xcopy.exe C:\develop\rpa_s_TNS_TSDP016\TnsCopy\TestTools\FIX Client Simulator\quickfix-1.10.2.zip\TAGLINE.JPG Exploit-QtPICT (Trojan) 06.02.2006 05:01:49 Delete failed (Clean failed because the file isn't cleanable) EX\rpa xcopy.exe C:\develop\rpa_s_TNS_TSDP016\TnsCopy\TestTools\FIX Client Simulator\quickfix-1.10.2.zip\QUICKFIX-1.10.2.ZIP Exploit-QtPICT (Trojan) 06.02.2006 05:07:26 No Action Taken EX\rpa ct.exe C:\develop\rpa_s_TNS_TSDP016\tns\TestTools\FIX Client Simulator\quickfix-1.10.2.zip.loading\TAGLINE.JPG Exploit-QtPICT (Trojan) 06.02.2006 05:07:26 Deleted (Clean failed because the file isn't cleanable) EX\rpa ct.exe C:\develop\rpa_s_TNS_TSDP016\tns\TestTools\FIX Client Simulator\quickfix-1.10.2.zip.loading\TAGLINE.JPG Exploit-QtPICT (Trojan) 06.02.2006 05:07:26 Delete failed (Clean failed because the file isn't cleanable) EX\rpa ct.exe C:\develop\rpa_s_TNS_TSDP016\tns\TestTools\FIX Client Simulator\quickfix-1.10.2.zip.loading\QUICKFIX-1.10.2.ZIP.LOADING Exploit-QtPICT (Trojan) =20 =20 This message is for the named person's use only. It may contain = confidential, proprietary or legally privileged information. No = confidentiality or privilege is waived or lost by any mistransmission. = If you receive this message in error, please notify the sender urgently = and then immediately delete the message and any copies of it from your = system. Please also immediately destroy any hardcopies of the message. = You must not, directly or indirectly, use, disclose, distribute, print, = or copy any part of this message if you are not the intended recipient. = The sender's company reserves the right to monitor all e-mail = communications through their networks. Any views expressed in this = message are those of the individual sender, except where the message = states otherwise and the sender is authorised to state them to be the = views of the sender's company. |
|
From: Shankar K. <skr...@jw...> - 2006-02-06 16:45:09
|
Thanks, I had no intention of creating a Generic message object, sorry
about that, hence the code should have looked like
private void application_Logon(object sender, FIXSessionIDEventArgs e)
{
QuickFix44.TradeCaptureReportRequest myTCRreport = new
QuickFix44.TradeCaptureReportRequest();
myTCRreport.setField(new
QuickFix.SubscriptionRequestType('1'));
myTCRreport.setField(new QuickFix.TradeRequestType(1));
myTCRreport.setField(new
QuickFix.TradeRequestID("abc101"));
myTCRreport.setField(new QuickFix.Text("TCR"));
Session.sendToTarget(myTCRreport,e.SessionID);
}
Also, looking up the quick doc, toAdmin - is actually what my server is
sending out to the counterparty., it is 55 which is SYMBOL.
Also the counterparty says he hasn't seen any report request come in from
me.
58=Required tag missing
371=55
372=AQ
373=1
10=182
_____
From: Shepheard, Toby (London) [mailto:Tob...@ml...]
Sent: Monday, February 06, 2006 11:10 AM
To: Shankar Krishnan; qui...@li...
Subject: RE: [Quickfix-developers] Required Tag missing - 58
First of all, you are misinterpreting the toAdmin message. This is a
response to you, from the other server, with a MsgType (tag 35) of 3 - a
reject message. The field 58 is a text field telling you why your message
was rejected - it was missing a required tag. Field 371, RefTagId, is saying
that the missing tag was tag 35. This isn't good, because tag 35 is the
message type! So, you were sending a message without setting the
msgType...now to look at why...
If you look at your code, you're actually sending a QuickFix.Message object.
This is a generic message object, and you're never telling it what type of
FIX message it is meant to be. You're creating the report-type message and
then not doing anything with it at the moment. You should really use the
typesafe set methods as described in the docs I pointed at earlier, not the
setField method.
(http://www.quickfixengine.org/quickfix/doc/html/sending_messages.html
<http://www.quickfixengine.org/quickfix/doc/html/sending_messages.html> ).
Whilst both work, the recommended method is recommended for good reasons -
including the fact that it sets the msgType and other header fields for you
:)
Thus:
QuickFix44.TradeCaptureReportRequest myTCRreport = new
QuickFix44.TradeCaptureReportRequest();
myTCRreport.set(new
QuickFix.SubscriptionRequestType('1'));
myTCRreport.set(new QuickFix.TradeRequestType(1));
myTCRreport.set(new QuickFix.TradeRequestID("abc101"));
myTCRreport.set(new QuickFix.Text("TCR"));
Session.sendToTarget(msg,e.SessionID);
As a minor aside, perhaps its worth adding a check in the QuickFIX code to
catch people trying to send messages formed from the base class and with no
specific type.
Regards
Toby
-----Original Message-----
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Shankar Krishnan
Sent: 06 February 2006 15:49
To: qui...@li...
Subject: [Quickfix-developers] Required Tag missing - 58
When sending a Session.sendToTarget request for a trade capture report
request coded as
QuickFix44.TradeCaptureReportRequest myTCRreport = new
QuickFix44.TradeCaptureReportRequest();
QuickFix.Message msg = new QuickFix.Message();
msg.setField(new QuickFix.SubscriptionRequestType('1'));
msg.setField(new QuickFix.TradeRequestType(1));
msg.setField(new QuickFix.TradeRequestID("abc101"));
msg.setField(new QuickFix.Text("TCR"));
Session.sendToTarget(msg,e.SessionID);
--
My ToAdmin message string looks like
To Admin:::::8=FIX.4.4_
9=117
35=3
34=2
49= XXXXX
52=20060206-15:44:09.729
56=xxxxxxxx
45=1
58=Required tag missing
371=35
372=A_
373=1
10=009
I am using FIX 4.4, the TCR request does not mention any tag 58, which seems
to be a text field, I tried inserting
A text field that did not work too.
Thanks
_____
If you are not an intended recipient of this e-mail, please notify the
sender, delete it and do not read, act upon, print, disclose, copy, retain
or redistribute it. Click here <http://www.ml.com/email_terms/> for
important additional terms relating to this e-mail.
http://www.ml.com/email_terms/ <http://www.ml.com/email_terms/>
_____
|
|
From: Shepheard, T. (London) <Tob...@ml...> - 2006-02-06 16:11:17
|
First of all, you are misinterpreting the toAdmin message. This is a response to you, from the other server, with a MsgType (tag 35) of 3 - a reject message. The field 58 is a text field telling you why your message was rejected - it was missing a required tag. Field 371, RefTagId, is saying that the missing tag was tag 35. This isn't good, because tag 35 is the message type! So, you were sending a message without setting the msgType...now to look at why... =20 If you look at your code, you're actually sending a QuickFix.Message object. This is a generic message object, and you're never telling it what type of FIX message it is meant to be. You're creating the report-type message and then not doing anything with it at the moment. You should really use the typesafe set methods as described in the docs I pointed at earlier, not the setField method. (http://www.quickfixengine.org/quickfix/doc/html/sending_messages.html). Whilst both work, the recommended method is recommended for good reasons - including the fact that it sets the msgType and other header fields for you :) =20 Thus: =20 QuickFix44.TradeCaptureReportRequest myTCRreport =3D new QuickFix44.TradeCaptureReportRequest(); myTCRreport.set(new QuickFix.SubscriptionRequestType('1')); myTCRreport.set(new QuickFix.TradeRequestType(1)); myTCRreport.set(new QuickFix.TradeRequestID("abc101")); myTCRreport.set(new QuickFix.Text("TCR")); =20 Session.sendToTarget(msg,e.SessionID); =20 =20 As a minor aside, perhaps its worth adding a check in the QuickFIX code to catch people trying to send messages formed from the base class and with no specific type. =20 Regards Toby -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Shankar Krishnan Sent: 06 February 2006 15:49 To: qui...@li... Subject: [Quickfix-developers] Required Tag missing - 58 =09 =09 =20 When sending a Session.sendToTarget request for a trade capture report request coded as =20 QuickFix44.TradeCaptureReportRequest myTCRreport =3D new QuickFix44.TradeCaptureReportRequest(); QuickFix.Message msg =3D new QuickFix.Message(); msg.setField(new QuickFix.SubscriptionRequestType('1')); msg.setField(new QuickFix.TradeRequestType(1)); msg.setField(new QuickFix.TradeRequestID("abc101")); msg.setField(new QuickFix.Text("TCR")); =20 Session.sendToTarget(msg,e.SessionID); -- =20 My ToAdmin message string looks like =20 To Admin:::::8=3DFIX.4.4_ 9=3D117 35=3D3 34=3D2 49=3D XXXXX 52=3D20060206-15:44:09.729 56=3Dxxxxxxxx 45=3D1 58=3DRequired tag missing 371=3D35 372=3DA_ 373=3D1 10=3D009 =20 I am using FIX 4.4, the TCR request does not mention any tag 58, which seems to be a text field, I tried inserting A text field that did not work too. =20 Thanks -------------------------------------------------------- If you are not an intended recipient of this e-mail, please notify the = sender, delete it and do not read, act upon, print, disclose, copy, = retain or redistribute it. Click here for important additional terms = relating to this e-mail. http://www.ml.com/email_terms/ -------------------------------------------------------- |
|
From: Shankar K. <skr...@jw...> - 2006-02-06 15:49:20
|
When sending a Session.sendToTarget request for a trade capture report
request coded as
QuickFix44.TradeCaptureReportRequest myTCRreport = new
QuickFix44.TradeCaptureReportRequest();
QuickFix.Message msg = new QuickFix.Message();
msg.setField(new QuickFix.SubscriptionRequestType('1'));
msg.setField(new QuickFix.TradeRequestType(1));
msg.setField(new QuickFix.TradeRequestID("abc101"));
msg.setField(new QuickFix.Text("TCR"));
Session.sendToTarget(msg,e.SessionID);
--
My ToAdmin message string looks like
To Admin:::::8=FIX.4.4_
9=117
35=3
34=2
49= XXXXX
52=20060206-15:44:09.729
56=xxxxxxxx
45=1
58=Required tag missing
371=35
372=A_
373=1
10=009
I am using FIX 4.4, the TCR request does not mention any tag 58, which seems
to be a text field, I tried inserting
A text field that did not work too.
Thanks
|
|
From: Shankar K. <skr...@jw...> - 2006-02-03 17:27:35
|
Thanks Toby,
I was missing the obvious, yes the way to do this would be setup a listener.
In .NET I would ideally do something lile
MyApplication application = new MyApplication();
application.onLogon += new LogonEventHandler(onLogon);
But I am unable to find the method to hook to, on arrival of the onLogon
message, ideally VS. NET would fill in the event handler for you.
Am I doing something wrong or what method should I use for the
logoneventhandler.
(I just noticed that my outlook mail put's the first character as uppercase
hence one of my prev messages showed as upper case
For message.getField().
Tks
_____
From: Shepheard, Toby (London) [mailto:Tob...@ml...]
Sent: Friday, February 03, 2006 11:27 AM
To: Shankar Krishnan; qui...@li...
Subject: RE: [Quickfix-developers] Where to make the trade capture request.
I'm not sure I'm following you exactly. Just to be clear: You want your
application to logon, and then immediately send a trade capture report?
The onLogon handler should only be called when both sides are logged in so
that should be ok. However, you probably don't want to send the report
directly from there. A better way is to setup a listener, and notify the
listener from the onLogon method. See the Banzai example for how to do this.
I'm not familiar with the C# code but maybe you're blocking the onLogon
method from returning and it needs to do some more work after calling
onLogon, to fully initialise. That's just a hunch though, Oren can probably
clarify whether or not this might be an issue.
Other than that.... it would probably help if you show us your code and the
errors you're getting, the config file might help too.
-----Original Message-----
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Shankar Krishnan
Sent: 03 February 2006 16:04
To: qui...@li...
Subject: RE: [Quickfix-developers] Where to make the trade capture request.
Jim & Toby,
Really appreciate your time, Maybe my question is little too simple, I know
I am stuck with the obvious.
Where is the sendtotarget method to be coded. I put that in the onLogon
handler, I breaks at
bool Session::sendToTarget( Message* message )
throw( SessionNotFound* )
{ QF_STACK_TRY
try
{
Message __pin * pMessage = message;
return FIX::Session::sendToTarget( pMessage->unmanaged() );
}
catch ( FIX::SessionNotFound& ) { throw new SessionNotFound(); };
QF_STACK_CATCH
}
Probably SessionNotFound. What am I doing wrong, has the session not been
created at this point ? Any help appreciated.
Tks
_____
From: James C. Downs [mailto:jc...@co...]
Sent: Friday, February 03, 2006 9:45 AM
To: Shankar Krishnan; qui...@li...
Subject: RE: [Quickfix-developers] Where to make the trade capture request.
Shankar,
If you are using FIX 4.4 or 4.3 there are four messages around trade
capture; TradeCaptureReportRequest, TradeCaptureReportRequestAck,
TradeCaptureReport, TradeCaptureReportACK. Your counterparty should be able
to clear up the use of these messages. The request messages would be sent
from your application using the SendToTarget method.
If you are using a version prior to 4.3 the typical trade capture mechanism
is the "Drop Copy" which is an ExecutionReport Message. These messages
typically do not require a request from the initiator.
Jim
_____
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Shankar Krishnan
Sent: Friday, February 03, 2006 8:26 AM
To: qui...@li...
Subject: [Quickfix-developers] Where to make the trade capture request.
A little help on the structure please..
For a buy side, I have an application that will connect to the target and
request for a trade capture report.
I presume somewhere I need to make this request, I looked up the example
codes, I donot see any place where
An execution report is requested, however I see that on onMessages we are
processing them. How does this
Work ? I am under the impression that a trade capture report has to be
requested. Where should this be done.
Any directions appreciated.
Thanks
_____
If you are not an intended recipient of this e-mail, please notify the
sender, delete it and do not read, act upon, print, disclose, copy, retain
or redistribute it. Click here <http://www.ml.com/email_terms/> for
important additional terms relating to this e-mail.
http://www.ml.com/email_terms/ <http://www.ml.com/email_terms/>
_____
|
|
From: Shepheard, T. (London) <Tob...@ml...> - 2006-02-03 16:27:20
|
I'm not sure I'm following you exactly. Just to be clear: You want your
application to logon, and then immediately send a trade capture report?
=20
The onLogon handler should only be called when both sides are logged in
so that should be ok. However, you probably don't want to send the
report directly from there. A better way is to setup a listener, and
notify the listener from the onLogon method. See the Banzai example for
how to do this.
=20
I'm not familiar with the C# code but maybe you're blocking the onLogon
method from returning and it needs to do some more work after calling
onLogon, to fully initialise. That's just a hunch though, Oren can
probably clarify whether or not this might be an issue.
=20
Other than that.... it would probably help if you show us your code and
the errors you're getting, the config file might help too.
=20
=20
=20
=20
-----Original Message-----
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Shankar Krishnan
Sent: 03 February 2006 16:04
To: qui...@li...
Subject: RE: [Quickfix-developers] Where to make the trade capture
request.
=20
Jim & Toby,
=20
Really appreciate your time, Maybe my question is little too
simple, I know I am stuck with the obvious.
=20
Where is the sendtotarget method to be coded. I put that in
the onLogon handler, I breaks at
=20
bool Session::sendToTarget( Message* message )
throw( SessionNotFound* )
{ QF_STACK_TRY
=20
try
{
Message __pin * pMessage =3D message;
return FIX::Session::sendToTarget( pMessage->unmanaged() );
}
catch ( FIX::SessionNotFound& ) { throw new SessionNotFound();
};
=20
QF_STACK_CATCH
}
=20
=20
Probably SessionNotFound. What am I doing wrong, has the session
not been created at this point ? Any help appreciated.
=20
Tks
=20
=20
=09
_____ =20
From: James C. Downs [mailto:jc...@co...]=20
Sent: Friday, February 03, 2006 9:45 AM
To: Shankar Krishnan; qui...@li...
Subject: RE: [Quickfix-developers] Where to make the trade
capture request.
=20
Shankar,
If you are using FIX 4.4 or 4.3 there are four messages around
trade capture; TradeCaptureReportRequest, TradeCaptureReportRequestAck,
TradeCaptureReport, TradeCaptureReportACK. Your counterparty should be
able to clear up the use of these messages. The request messages would
be sent from your application using the SendToTarget method.
=20
If you are using a version prior to 4.3 the typical trade
capture mechanism is the "Drop Copy" which is an ExecutionReport
Message. These messages typically do not require a request from the
initiator.
=20
Jim
=20
=09
_____ =20
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Shankar Krishnan
Sent: Friday, February 03, 2006 8:26 AM
To: qui...@li...
Subject: [Quickfix-developers] Where to make the trade capture
request.
=20
A little help on the structure please..
=20
For a buy side, I have an application that will connect to the
target and request for a trade capture report.
=20
I presume somewhere I need to make this request, I looked up the
example codes, I donot see any place where
An execution report is requested, however I see that on
onMessages we are processing them. How does this
Work ? I am under the impression that a trade capture report has
to be requested. Where should this be done.
=20
Any directions appreciated.
=20
Thanks
--------------------------------------------------------
If you are not an intended recipient of this e-mail, please notify the =
sender, delete it and do not read, act upon, print, disclose, copy, =
retain or redistribute it. Click here for important additional terms =
relating to this e-mail. http://www.ml.com/email_terms/
--------------------------------------------------------
|
|
From: Oren M. <or...@qu...> - 2006-02-03 16:09:36
|
'Message.getHeader()' should be 'message.getHeader()'
Shankar Krishnan wrote:
>
>
>
>
> Hate to ask you this.
>
>
>
> I am trying to extract out the message Type value in the header to
> check if I am receiving a execution report.
>
> The following seems to fail on compiling. I did this by looking at the
> java example.
>
> Which goes like :
>
>
>
> public void run() {
>
> try {
>
> MsgType msgType = new MsgType();
>
> if(message.getHeader().getField(msgType).valueEquals("8"))
>
> executionReport(message, sessionID);
>
> if(message.getHeader().getField(msgType).valueEquals("9"))
>
> cancelReject(message, sessionID);
>
> } catch(FieldNotFound e) {
>
> System.out.println(e);
>
> }
>
> }
>
>
>
> - _I am trying to do this in C sharp._
>
> _ _
>
> I have
>
>
>
> public void fromApp(Message message,SessionID sessionID)
>
> {
>
>
>
> MsgType msgType = new MsgType();
>
> If(Message.getHeader().getField(msgType) ==
> MsgType.EXECUTION_REPORT) {
>
>
>
> }
>
> }
>
>
>
>
>
> Should not this work.
>
>
>
> Tks
>
>
>
> * *
>
> * *
>
> * *
>
>
>
>
>
|
|
From: Shankar K. <skr...@jw...> - 2006-02-03 16:04:02
|
Jim & Toby,
Really appreciate your time, Maybe my question is little too simple, I know
I am stuck with the obvious.
Where is the sendtotarget method to be coded. I put that in the onLogon
handler, I breaks at
bool Session::sendToTarget( Message* message )
throw( SessionNotFound* )
{ QF_STACK_TRY
try
{
Message __pin * pMessage = message;
return FIX::Session::sendToTarget( pMessage->unmanaged() );
}
catch ( FIX::SessionNotFound& ) { throw new SessionNotFound(); };
QF_STACK_CATCH
}
Probably SessionNotFound. What am I doing wrong, has the session not been
created at this point ? Any help appreciated.
Tks
_____
From: James C. Downs [mailto:jc...@co...]
Sent: Friday, February 03, 2006 9:45 AM
To: Shankar Krishnan; qui...@li...
Subject: RE: [Quickfix-developers] Where to make the trade capture request.
Shankar,
If you are using FIX 4.4 or 4.3 there are four messages around trade
capture; TradeCaptureReportRequest, TradeCaptureReportRequestAck,
TradeCaptureReport, TradeCaptureReportACK. Your counterparty should be able
to clear up the use of these messages. The request messages would be sent
from your application using the SendToTarget method.
If you are using a version prior to 4.3 the typical trade capture mechanism
is the "Drop Copy" which is an ExecutionReport Message. These messages
typically do not require a request from the initiator.
Jim
_____
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Shankar Krishnan
Sent: Friday, February 03, 2006 8:26 AM
To: qui...@li...
Subject: [Quickfix-developers] Where to make the trade capture request.
A little help on the structure please..
For a buy side, I have an application that will connect to the target and
request for a trade capture report.
I presume somewhere I need to make this request, I looked up the example
codes, I donot see any place where
An execution report is requested, however I see that on onMessages we are
processing them. How does this
Work ? I am under the impression that a trade capture report has to be
requested. Where should this be done.
Any directions appreciated.
Thanks
|
|
From: Shepheard, T. (London) <Tob...@ml...> - 2006-02-03 14:47:27
|
I don't really know the answer, but does this help at all?=20 The Trade Capture Report (AE) <http://b2bits.com/fixopaedia/fixdic44/md0e27482.html> message can be:=20 * Used to report trades between counterparties. * Used to report trades to a trade matching system * Can be sent unsolicited between counterparties. * Sent as a reply to a Trade Capture Report Request (AD) <http://b2bits.com/fixopaedia/fixdic44/md0e27027.html> .=20 * Can be used to report unmatched and matched trades. Sorry if I'm stating the obvious here. The unsolicited bit suggests that you could receive such a report without explicitly requesting one. =20 You might find more details in the FIX docs at http://www.fixprotocol.org/specifications/ . Also try the FIX forums perhaps. -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Shankar Krishnan Sent: 03 February 2006 14:26 To: qui...@li... Subject: [Quickfix-developers] Where to make the trade capture request. =09 =09 =20 A little help on the structure please.. =20 For a buy side, I have an application that will connect to the target and request for a trade capture report. =20 I presume somewhere I need to make this request, I looked up the example codes, I donot see any place where An execution report is requested, however I see that on onMessages we are processing them. How does this Work ? I am under the impression that a trade capture report has to be requested. Where should this be done. =20 Any directions appreciated. =20 Thanks -------------------------------------------------------- If you are not an intended recipient of this e-mail, please notify the = sender, delete it and do not read, act upon, print, disclose, copy, = retain or redistribute it. Click here for important additional terms = relating to this e-mail. http://www.ml.com/email_terms/ -------------------------------------------------------- |
|
From: James C. D. <jc...@co...> - 2006-02-03 14:45:36
|
Shankar, If you are using FIX 4.4 or 4.3 there are four messages around trade capture; TradeCaptureReportRequest, TradeCaptureReportRequestAck, TradeCaptureReport, TradeCaptureReportACK. Your counterparty should be able to clear up the use of these messages. The request messages would be sent from your application using the SendToTarget method. If you are using a version prior to 4.3 the typical trade capture mechanism is the "Drop Copy" which is an ExecutionReport Message. These messages typically do not require a request from the initiator. Jim _____ From: qui...@li... [mailto:qui...@li...] On Behalf Of Shankar Krishnan Sent: Friday, February 03, 2006 8:26 AM To: qui...@li... Subject: [Quickfix-developers] Where to make the trade capture request. A little help on the structure please.. For a buy side, I have an application that will connect to the target and request for a trade capture report. I presume somewhere I need to make this request, I looked up the example codes, I donot see any place where An execution report is requested, however I see that on onMessages we are processing them. How does this Work ? I am under the impression that a trade capture report has to be requested. Where should this be done. Any directions appreciated. Thanks |
|
From: Shankar K. <skr...@jw...> - 2006-02-03 14:26:40
|
A little help on the structure please.. For a buy side, I have an application that will connect to the target and request for a trade capture report. I presume somewhere I need to make this request, I looked up the example codes, I donot see any place where An execution report is requested, however I see that on onMessages we are processing them. How does this Work ? I am under the impression that a trade capture report has to be requested. Where should this be done. Any directions appreciated. Thanks |
|
From: Shankar K. <skr...@jw...> - 2006-02-03 13:19:42
|
Thanks, it wasn't the typo that was the issue, However, I should have implemented it the way you suggested(type safe way) Have changed it, thanks for your time. Tks _____ From: Shepheard, Toby (London) [mailto:Tob...@ml...] Sent: Friday, February 03, 2006 4:56 AM To: Shankar Krishnan; qui...@li... Subject: RE: [Quickfix-developers] Message.getHeader Shankar, I'd suggest you use the more type-safe method recommended in the documentation (http://www.quickfixengine.org/quickfix/doc/html/receiving_messages.html <http://www.quickfixengine.org/quickfix/doc/html/receiving_messages.html> ) This takes the following form: using QuickFix; public void fromApp(Message message, SessionID sessionID) { crack(message, sessionID); } public override void onMessage(QuickFix42.NewOrderSingle message, QuickFix.SessionID sessionID) { ClOrdID clOrdID = new ClOrdID; message.get(clOrdID); ClearingAccount clearingAccount = new ClearingAccount(); message.get(clearingAccount); } public override void onMessage(QuickFix42.OrderCancelRequest message, QuickFix.SessionID sessionID) { ClOrdID clOrdID = new ClOrdID; message.get(clOrdID); // compile time error!! field not defined for OrderCancelRequest ClearingAccount clearingAccount = new ClearingAccount(); message.get(clearingAccount); } All you need to do is add your own onMessage method that takes an execution report message type and the sessionId, and then handle it from there. I guess its a case of do as they say, not as they do :) However, to address the original question - looks like you've got a capital M here in Message that you need to make lowercase to get the message instance: If(Message.getHeader().getField(msgType) == MsgType.EXECUTION_REPORT) { As a general note, if you get compile errors it is often helpful to include them in any mails along with your code snippets (ditto with logs for runtime issues). Hope that helps you. Toby -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Shankar Krishnan Sent: 02 February 2006 22:50 To: qui...@li... Subject: [Quickfix-developers] Message.getHeader Hate to ask you this. I am trying to extract out the message Type value in the header to check if I am receiving a execution report. The following seems to fail on compiling. I did this by looking at the java example. Which goes like : public void run() { try { MsgType msgType = new MsgType(); if(message.getHeader().getField(msgType).valueEquals("8")) executionReport(message, sessionID); if(message.getHeader().getField(msgType).valueEquals("9")) cancelReject(message, sessionID); } catch(FieldNotFound e) { System.out.println(e); } } - I am trying to do this in C sharp. I have public void fromApp(Message message,SessionID sessionID) { MsgType msgType = new MsgType(); If(Message.getHeader().getField(msgType) == MsgType.EXECUTION_REPORT) { } } Should not this work. Tks _____ If you are not an intended recipient of this e-mail, please notify the sender, delete it and do not read, act upon, print, disclose, copy, retain or redistribute it. Click here <http://www.ml.com/email_terms/> for important additional terms relating to this e-mail. http://www.ml.com/email_terms/ <http://www.ml.com/email_terms/> _____ |
|
From: Shepheard, T. (London) <Tob...@ml...> - 2006-02-03 09:56:24
|
Shankar, =20 I'd suggest you use the more type-safe method recommended in the documentation (http://www.quickfixengine.org/quickfix/doc/html/receiving_messages.html ) =20 This takes the following form: using QuickFix; public void fromApp(Message message, SessionID sessionID) { crack(message, sessionID); } public override void onMessage(QuickFix42.NewOrderSingle message, QuickFix.SessionID sessionID) { ClOrdID clOrdID =3D new ClOrdID; message.get(clOrdID); ClearingAccount clearingAccount =3D new ClearingAccount(); message.get(clearingAccount); } public override void onMessage(QuickFix42.OrderCancelRequest message, QuickFix.SessionID sessionID) { ClOrdID clOrdID =3D new ClOrdID; message.get(clOrdID); // compile time error!! field not defined for OrderCancelRequest ClearingAccount clearingAccount =3D new ClearingAccount(); message.get(clearingAccount); } =20 All you need to do is add your own onMessage method that takes an execution report message type and the sessionId, and then handle it from there.=20 I guess its a case of do as they say, not as they do :) =20 However, to address the original question - looks like you've got a capital M here in Message that you need to make lowercase to get the message instance: If(Message.getHeader().getField(msgType) =3D=3D = MsgType.EXECUTION_REPORT) { =20 As a general note, if you get compile errors it is often helpful to include them in any mails along with your code snippets (ditto with logs for runtime issues). =20 Hope that helps you. Toby =20 =20 -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Shankar Krishnan Sent: 02 February 2006 22:50 To: qui...@li... Subject: [Quickfix-developers] Message.getHeader =09 =09 =20 =20 Hate to ask you this. =20 I am trying to extract out the message Type value in the header to check if I am receiving a execution report. The following seems to fail on compiling. I did this by looking at the java example. Which goes like : =20 public void run() { try { MsgType msgType =3D new MsgType(); =09 if(message.getHeader().getField(msgType).valueEquals("8")) executionReport(message, sessionID); =09 if(message.getHeader().getField(msgType).valueEquals("9")) cancelReject(message, sessionID); } catch(FieldNotFound e) { System.out.println(e); } } =20 - I am trying to do this in C sharp. =20 I have =20 public void fromApp(Message message,SessionID sessionID)=20 { =20 MsgType msgType =3D new MsgType(); If(Message.getHeader().getField(msgType) =3D=3D MsgType.EXECUTION_REPORT) { =20 } } =20 =20 Should not this work. =20 Tks -------------------------------------------------------- If you are not an intended recipient of this e-mail, please notify the = sender, delete it and do not read, act upon, print, disclose, copy, = retain or redistribute it. Click here for important additional terms = relating to this e-mail. http://www.ml.com/email_terms/ -------------------------------------------------------- |
|
From: Shepheard, T. (London) <Tob...@ml...> - 2006-02-03 09:43:35
|
CheckLatency=3DN and I've no other latency settings configured.
=20
Wrt sequence numbers, the sequence numbers over the network were fine.
I'm not sure if any were "missed" by QFJ or if that was just me
extracting limited snippets though and I stupidly lost the log file when
I went home last night and closed down eclipse. Certainly the network
trace shows consecutive numbers, though there was a preceding
sequenceReset which may be relevant, it looks to have acted as expected.
=20
If there's nothing obvious I'd suggest we leave it for now and I'll keep
it in the back of my mind. If it happens again I will take care to
capture complete logs on both the network and application side. Once the
problem started happening the sequence was fully repeatable (logon,
sequence of messages =3D> Test message =3D> Disconnect =3D> back to =
Logon
again etc) so hopefully I can get a bit more info if it does recur.
=20
Regards
Toby
=20
-----Original Message-----
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Steve Bate
Sent: 02 February 2006 20:36
To: qui...@li...
Subject: RE: [Quickfix-developers] QFJ: Test message =3D>
Heartbeat response =3D> Disconnect
=09
=09
Hi Toby,
=20
This definitely seems strange. I don't have any good theories
about what's happening. I wrote a unit test to verify the heartbeat
message parses and validates with the FIX 4.4 data dictionary. The
timing would only cause a problem if there was an offset greater than or
equal to +/- two minutes (by default). Even if the message were rejected
for a bad sending time, there should a reject message and a log record
of the incoming heartbeat and outgoing reject.
=20
There's a acceptance test case (6_SendTestRequest.def) that
tests this scenario and although it tests the functionality using an
acceptor rather than an initiator, the same session logic and message
parsing code is used for both of them. The <time> placeholder in the AT
can specify a relative offset in seconds so I simulated sending a
heartbeat with a sending time 10 seconds before the test request. The
test passed with no problems.=20
=20
However, just in case there's a bug there, are you using the
latency check settings (the check flag and/or the maximum latency
setting)?
=20
I know you probably weren't showing the whole log, but there's a
gap in the sequence numbers between the last incoming message before the
heartbeat and the heartbeat itself. Could that be significant? I'm just
brainstorming here.
=20
Steve Bate
Smart Trade Technologies
Phone: +33 4 42 90 03 97
http://www.smart-trade.net/
_____ =20
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Shepheard, Toby (London)
Sent: Thursday, February 02, 2006 8:13 PM
To: qui...@li...
Subject: [Quickfix-developers] QFJ: Test message =3D>
Heartbeat response =3D> Disconnect
=09
=09
I'm seeing some unexpected behaviour after sending a
Test message and getting a Heartbeat response back. This is with the
QFJ, taken from CVS head ~1 week ago.
=20
Here's what I see in the logs at my end (XXX to replace
3rd party)
[2006-02-02 18:34:19,445][INFO ] msg.incoming:
FIX.4.4:ML_RTFI_DEV1->XXXXFIXTEST1:
8=3DFIX.4.4=019=3D121=0135=3DH=0134=3D1107=0149=3DXXXXFIXTEST1=0150=3DTob=
y_Shepheard@MLRX=0152=3D2
0060202-18:34:19.336=0156=3DML_RTFI_DEV1=0111=3D5.1.152297=0154=3D1=0155=3D=
[N/A]=0110=3D047
......
protocol.XXXXXXXQFApplication: Sending FIX admin message
(1)8=3DFIX.4.4=019=3D78=0135=3D1=0134=3D954=0149=3DML_RTFI_DEV1=0152=3D20=
060202-18:35:05.383=015
6=3DXXXXFIXTEST1=01112=3DTEST=0110=3D147=01
[2006-02-02 18:35:05,383][INFO ] msg.outgoing:
FIX.4.4:ML_RTFI_DEV1->XXXXFIXTEST1:
8=3DFIX.4.4=019=3D78=0135=3D1=0134=3D954=0149=3DML_RTFI_DEV1=0152=3D20060=
202-18:35:05.383=0156=3DX
XXXFIXTEST1=01112=3DTEST=0110=3D147=01
[2006-02-02 18:35:05,430][INFO ] quickfixj.event:
FIX.4.4:ML_RTFI_DEV1->XXXXFIXTEST1: Sent test request TEST
[2006-02-02 18:35:32,399][INFO ] quickfixj.event:
FIX.4.4:ML_RTFI_DEV1->XXXXFIXTEST1: Timed out waiting for heartbeat
[2006-02-02 18:35:32,399][INFO ] quickfixj.event:
FIX.4.4:ML_RTFI_DEV1->XXXXFIXTEST1: Disconnecting
=20
From the logs, no great shakes - we sent a Test request,
got no response, timed out due to receiving no messages and
disconnected. However..... a network snoop reveals the following:
=20
=20
=09
8=3DFIX.4.4.9=3D78.35=3D1.34=3D954.49=3DML_RTFI_DEV1.52=3D20060202-18:35:=
05.383.56=3DR
EUTFIXTEST1.112=3DTEST.10=3D147. =3D>>>>> this is my Test message
=20
=09
8=3DFIX.4.4.9=3D79.35=3D0.34=3D1115.49=3DREUTFIXTEST1.52=3D20060202-18:35=
:05.374.56=3D
ML_RTFI_DEV1.112=3DTEST.10=3D185. <<<<<<=3D This is a heartbeat =
message
response
=20
=20
The heartbeat message was received ~20ms after the Test
message, but due to some slight difference in clock times, the Sending
Time (52) makes it look like it came a fraction earlier. I'm not sure if
this is perhaps part of the problem? There doesn't seem to be any sign
of this heartbeat being received on my side, which leads me to believe
there's something fishy here, but I'm not sure if its related to the
TEST message or the SendingTime being prior to my SystemTime when I'm
processing it, or something else altogether.
=20
The time between the last recorded message I received
(the resend request at the top, which I ignored) and the disconnect is
~73 seconds, matching the 2.4*heartbeat interval in the code. So
everything points to he heartbeat message from the 3rd party, send
almost immediately after the Test message request, being totally
ignored.... any ideas why?
=20
MTIA,
Toby
=20
_____ =20
If you are not an intended recipient of this e-mail,
please notify the sender, delete it and do not read, act upon, print,
disclose, copy, retain or redistribute it. Click here
<http://www.ml.com/email_terms/> for important additional terms relating
to this e-mail. http://www.ml.com/email_terms/
_____ =20
|
|
From: Shankar K. <skr...@jw...> - 2006-02-02 22:50:42
|
Hate to ask you this.
I am trying to extract out the message Type value in the header to check if
I am receiving a execution report.
The following seems to fail on compiling. I did this by looking at the java
example.
Which goes like :
public void run() {
try {
MsgType msgType = new MsgType();
if(message.getHeader().getField(msgType).valueEquals("8"))
executionReport(message, sessionID);
if(message.getHeader().getField(msgType).valueEquals("9"))
cancelReject(message, sessionID);
} catch(FieldNotFound e) {
System.out.println(e);
}
}
- I am trying to do this in C sharp.
I have
public void fromApp(Message message,SessionID sessionID)
{
MsgType msgType = new MsgType();
If(Message.getHeader().getField(msgType) ==
MsgType.EXECUTION_REPORT) {
}
}
Should not this work.
Tks
|
|
From: Steve B. <sb...@sm...> - 2006-02-02 20:42:30
|
Hi Toby, =20 This definitely seems strange. I don't have any good theories about what's happening. I wrote a unit test to verify the heartbeat message parses and validates with the FIX 4.4 data dictionary. The timing would only cause a problem if there was an offset greater than or equal to +/- two minutes (by default). Even if the message were rejected for a bad sending time, there should a reject message and a log record of the incoming heartbeat and outgoing reject. =20 There's a acceptance test case (6_SendTestRequest.def) that tests this scenario and although it tests the functionality using an acceptor rather than an initiator, the same session logic and message parsing code is used for both of them. The <time> placeholder in the AT can specify a relative offset in seconds so I simulated sending a heartbeat with a sending time 10 seconds before the test request. The test passed with no problems.=20 =20 However, just in case there's a bug there, are you using the latency check settings (the check flag and/or the maximum latency setting)? =20 I know you probably weren't showing the whole log, but there's a gap in the sequence numbers between the last incoming message before the heartbeat and the heartbeat itself. Could that be significant? I'm just brainstorming here. =20 Steve Bate Smart Trade Technologies Phone: +33 4 42 90 03 97 http://www.smart-trade.net/ ________________________________ From: qui...@li... [mailto:qui...@li...] On Behalf Of Shepheard, Toby (London) Sent: Thursday, February 02, 2006 8:13 PM To: qui...@li... Subject: [Quickfix-developers] QFJ: Test message =3D> Heartbeat response =3D> Disconnect =09 =09 I'm seeing some unexpected behaviour after sending a Test message and getting a Heartbeat response back. This is with the QFJ, taken from CVS head ~1 week ago. =20 Here's what I see in the logs at my end (XXX to replace 3rd party) [2006-02-02 18:34:19,445][INFO ] msg.incoming: FIX.4.4:ML_RTFI_DEV1->XXXXFIXTEST1: 8=3DFIX.4.4=019=3D121=0135=3DH=0134=3D1107=0149=3DXXXXFIXTEST1=0150=3DTob= y_Shepheard@MLRX=0152=3D2 0060202-18:34:19.336=0156=3DML_RTFI_DEV1=0111=3D5.1.152297=0154=3D1=0155=3D= [N/A]=0110=3D047 ...... protocol.XXXXXXXQFApplication: Sending FIX admin message (1)8=3DFIX.4.4=019=3D78=0135=3D1=0134=3D954=0149=3DML_RTFI_DEV1=0152=3D20= 060202-18:35:05.383=015 6=3DXXXXFIXTEST1=01112=3DTEST=0110=3D147=01 [2006-02-02 18:35:05,383][INFO ] msg.outgoing: FIX.4.4:ML_RTFI_DEV1->XXXXFIXTEST1: 8=3DFIX.4.4=019=3D78=0135=3D1=0134=3D954=0149=3DML_RTFI_DEV1=0152=3D20060= 202-18:35:05.383=0156=3DX XXXFIXTEST1=01112=3DTEST=0110=3D147=01 [2006-02-02 18:35:05,430][INFO ] quickfixj.event: FIX.4.4:ML_RTFI_DEV1->XXXXFIXTEST1: Sent test request TEST [2006-02-02 18:35:32,399][INFO ] quickfixj.event: FIX.4.4:ML_RTFI_DEV1->XXXXFIXTEST1: Timed out waiting for heartbeat [2006-02-02 18:35:32,399][INFO ] quickfixj.event: FIX.4.4:ML_RTFI_DEV1->XXXXFIXTEST1: Disconnecting =20 From the logs, no great shakes - we sent a Test request, got no response, timed out due to receiving no messages and disconnected. However..... a network snoop reveals the following: =20 =20 =09 8=3DFIX.4.4.9=3D78.35=3D1.34=3D954.49=3DML_RTFI_DEV1.52=3D20060202-18:35:= 05.383.56=3DR EUTFIXTEST1.112=3DTEST.10=3D147. =3D>>>>> this is my Test message =20 =09 8=3DFIX.4.4.9=3D79.35=3D0.34=3D1115.49=3DREUTFIXTEST1.52=3D20060202-18:35= :05.374.56=3D ML_RTFI_DEV1.112=3DTEST.10=3D185. <<<<<<=3D This is a heartbeat = message response =20 =20 The heartbeat message was received ~20ms after the Test message, but due to some slight difference in clock times, the Sending Time (52) makes it look like it came a fraction earlier. I'm not sure if this is perhaps part of the problem? There doesn't seem to be any sign of this heartbeat being received on my side, which leads me to believe there's something fishy here, but I'm not sure if its related to the TEST message or the SendingTime being prior to my SystemTime when I'm processing it, or something else altogether. =20 The time between the last recorded message I received (the resend request at the top, which I ignored) and the disconnect is ~73 seconds, matching the 2.4*heartbeat interval in the code. So everything points to he heartbeat message from the 3rd party, send almost immediately after the Test message request, being totally ignored.... any ideas why? =20 MTIA, Toby =20 ________________________________ If you are not an intended recipient of this e-mail, please notify the sender, delete it and do not read, act upon, print, disclose, copy, retain or redistribute it. Click here <http://www.ml.com/email_terms/> for important additional terms relating to this e-mail. http://www.ml.com/email_terms/ ________________________________ |