RE: [Quickfix-developers] Required Tag missing - 58
Brought to you by:
orenmnero
|
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/>
_____
|