3

My fix engine keeps rejecting messages and I was hoping someone could help me figure out why... I'm receiving the following sample message:

8=FIXT.1.1 9=518 35=AE 34=4 1128=8 49=XXXXXXX 56=YYYYYYY 52=20130322-17:58:37 552=1 54=1 37=Z00097H4ON 11=NOREF 826=0 78=1 79=NOT SPECIFIED 80=100000.000000 5967=129776.520000 453=5 448=BCART6 452=3 447=D 448=BARX 452=1 447=D 448=BARX 452=16 447=D 448=bcart6 452=11 447=D 448=ABCDEFGHI 452=12 447=D 571=6611540 150=F 17=Z00097H4ON 32=100000.000000 38=100000.000000 15=EUR 1056=129776.520000 31=1.2977652 194=1.298120 195=-3.5480 64=20130409 63=W2 60=20130322-17:26:50 75=20130322 1057=Y 460=4 167=FOR 65=OR 55=EUR/USD 10=121 

8=FIXT.1.1 9=124 35=3 34=4 49=XXXXXXX 52=20130322-17:58:37.917 56=YYYYYYY 45=4 58=Tag appears more than once 371=448 372=AE 373=13 10=216

But as you can see it's being rejected by the quickfix engine. I am using the 5.0sp1 data dictionary and have configured it in my config file:

[DEFAULT]
ConnectionType=initiator
HeartBtInt=30
ReconnectInterval=10
SocketReuseAddress=Y
FileStorePath=D:\XXX\Interface\ReutersStore
FileLogPath=D:\XXX\Interface\ReutersLog


[SESSION]
BeginString = FIXT.1.1
SenderCompID = XXXXX
TargetCompID= YYYYY
DefaultApplVerId = FIX.5.0  
UseDataDictionary=Y
AppDataDictionary=FIX50SP1.xml
StartDay=sunday
StartTime=20:55:00
EndTime=06:05:00
EndDay=saturday
SocketConnectHost= A.B.C.D
SocketConnectPort= 123

Does anyone have any idea why the Engine would be rejecting this message? I know that quickfix is normally able to handle messages with repeating groups, is it a config thing? Any help would be greatly appreciated!

Franco Trombetta
  • 207
  • 1
  • 5
  • 14

3 Answers3

3

Your message seems to be in order. Try putting this in your config file.

ValidateFieldsOutOfOrder=N

Quickfix by default puts that as Y and the underlying structure storing the tab and field values is unable to see the count before. 453 > 448.

As a sidenote always check these fields. They should point you to the source of the problem.

58=Tag appears more than once 
371=448
DumbCoder
  • 5,696
  • 3
  • 29
  • 40
  • Thank you. Yeah, That tag 448 is PartyId and is a repeating value. I tried already tried setting ValidateFieldsOutOfOrder=N as well as all the other properties I found just to see if it would have any effect on it but unfortunately messages are still getting rejected by the FIX Engine. – Franco Trombetta Mar 26 '13 at 15:34
  • How are the field's arranged in your data dictionary. Have you tried tinkering that also ?? Your UseDataDictionary is Y. So that maybe also a plausible place to see. – DumbCoder Mar 26 '13 at 15:40
  • The data dictionary I'm using is the standard FIX50SP1.xml that comes with the QuickFix engine. I took a look at it but everything seems in order... – Franco Trombetta Mar 26 '13 at 15:50
  • Have you put ValidateFieldsOutOfOrder=N in your acceptor and referring a Data Dictionary ?? The config you have put in the question is for your initiator. – DumbCoder Mar 26 '13 at 15:58
  • 1
    No I haven't. Not sure what you mean by Acceptor... Like I said, the AppDataDictionary I'm using is the same one provided with the FIX engine. I tried Placing ValidateFieldsOutOfOrder in the Initiator but it didn't work. – Franco Trombetta Mar 26 '13 at 18:26
  • Acceptor is the engine who is sending you the reject message. Are you sending your FIX message somewhere ?? That somewhere is the acceptor. – DumbCoder Mar 26 '13 at 20:58
  • I assume so, I don't control the acceptor. They are a large firm receiving messages from multiple sources. – Franco Trombetta Mar 27 '13 at 12:40
0

Maybe it's a shot in the dark, but I had a similar a problem when using a 5.0sp2 dictionary. I resolved using an updated version of the quickfix library compiled from the library SVN repository. If I remember correctly this was the bug.

It seems that the quickfix library has not been updated since a long time, and for newer version of fix I suggest you to use the "trunk" of the repo.

Luca Martini
  • 1,434
  • 1
  • 15
  • 35
0

I had the same problem and i resolved it by tweaking my DataDictionary like the following in message AE TradeCaptureReport