2

I've been struggling with the Celer API but have managed to at least get prices.

I am however confused on the message structure they require for orders.

In their spec it states they need a NoLegs group but QuickFix only seems to allow NoAllocs, NoEvents, NoPartyIDs, NoSecurityAltId, NoStipulations, NoTradingSessions, NoUnderlyings.

Is there a way I can manually create my own group and add it the same way as setting a value to a tag like below:

QuickFix44.NewOrderSingle request44 = new QuickFix44.NewOrderSingle();

request44.setString(207, "XCEL");
  • Does the Celer API (whoever that is) publish their message definitions and indicate what fields/groups belong in each message? Your DD xml file should be edited to match that exactly. If they've added NoLegs to NewOrderSingle, then you should add that to your DD. Then I highly recommend regenerating the source and rebuilding QuickFIX so that the engine's API matches the DD (at which point you will now see a NoLegs member of NewOrderSingle). – Grant Birchmeier Aug 09 '18 at 15:10
  • I got their spec and their DD, and they don't match up! their support tends to just direct me to the spec which is not particularly helpful. I've managed to add a custom group to the message which is accepts but there are a whole raft of other errors now. trial and error to continue it seems – user3533333 Aug 10 '18 at 12:45

1 Answers1

2

For FIX 4.4 the NoLegs field - which gives the number of Legs in the InstrumentLeg group - is part of the New Order Cross message (s) and the New Order Multileg message (AB). It does not appear in the New Order Single message, because it does not belong there.

Perhaps you simply need to use the New Order Cross or New Order Multileg message instead. If your counterparty does not support these messages, then you can tweak the data dictionary for New Order Single and rebuild QuickFIX to support the tweaked message.

TT.
  • 15,774
  • 6
  • 47
  • 88
  • @user3533333 Any success with the suggestions? – TT. Aug 12 '18 at 08:19
  • 1
    I ended up modifying the datadictionary for newordersingle to accept the custom group and it seems to work. – user3533333 Aug 23 '18 at 10:31
  • 1
    Most users will need to modify their DD to match counterparty expectations. I've never met a counterparty that didn't need it. – Grant Birchmeier Sep 18 '18 at 13:35
  • @user3533333 could I ask if you could post the answer about how you accomplished this? I'm exactly in the same problem with the same provider and with the same "misunderstandings". Thanks in advance! – Ezarate11 Nov 28 '19 at 10:18
  • @Ezarate11 You can change the data dictionary for your version (e.g. FIX.4.4.xml) and then [rebuild QuickFIX/J](https://stackoverflow.com/questions/29967804/quickfix-j-mixing-two-different-versions/29971247#29971247) to honor the new fields. Refer to the new dictionary in your QuickFIX/J configuration. – TT. Nov 28 '19 at 11:12
  • @TT. thanks for the reference. I don't have clear if its using Java or c++ under the hood in the python implementation. Furthermore, I was referring to the issue with that specific provider in the sense that I have defined their specs in the .xml file and created a default Group and added the different fields, which seems to "work" (I didn't need to rebuild, just create but I don't have full confidence on it) but they are not very responsive so my intuition was to know if the OP found a reliable way to solve it fully and go live with it. – Ezarate11 Nov 28 '19 at 15:08