[QFJ-685] Extend QuicFIX for custom FIX messages Created: 05/Jun/12  Updated: 06/Jun/12  Resolved: 05/Jun/12

Status: Closed
Project: QuickFIX/J
Component/s: Message Generation
Affects Version/s: Future Releases
Fix Version/s: None

Type: Improvement Priority: Default
Reporter: Arunkumar Krishnamoorthy Assignee: Unassigned
Resolution: Not a bug Votes: 0
Labels: generation
Environment:

All environment



 Description   

I have a need where QuickFIX can generate the code for custom FIX messages say Goldman-Sachs or Barclayes or citi, etc. I went through the code. I found that we can extend QuickFIX to support this with very minimal change. I am briefly listing them here. Let me know if it is a meaningfull change then I can upload a patch for you to incorporate.

All changes are localized to code gen module
1. Currently versions are hardcoded in a single array within MessageCodeGenerator. These versions are used for most of the tasks in code generation like accessing Data dictionary (XML files containing FIX messages, fields and components), generating FIX packages, etc. We need to move these versions to program arguments (say comma separated)
2. All fields are generated within single package (fields package). Though it is fine for standard FIX messages, it might not be sufficient for custom FIX as GS and BCX can use the same tag (user defined field) for different purpose. So, there should be a rule based on which we can decide if the fields should be generated in single package or separate ones (as simple as the version if it stars with FIX then standard else custom)
3. XSL files assume that fields are in same package and hardcodes the "import quickfix.fields.*". It has to be changed to a dynamic one based on parameter.

Above are most of the major changes. Once we do that, we can create a custom version by changing on top of the base version. If GS' FIX message is an extension of FIX 4.2, then we can create a copy of FIX 4,2 .xml (data dictionary) and name it as "GSFIX 4.2" and do changes within it. Once we include GSFIX 4.2 as part of version, we will get all messages generated.

I understand that the core engine is specifically built for FIX standard spec. As FIX standards allows firms to customize the FIX messages, my thought is on the same lines with QuickFIX as perspective. Let me know if this approach is right. I am open for other better approaches too to achieve this.



 Comments   
Comment by Grant Birchmeier [ 05/Jun/12 ]

You already can regenerate the QF/J source and recompile to accomodate any DataDictionary modifications you make. Any FIX engine that didn't allow you to use custom DDs would be pretty worthless.

Please join the mailing list and ask about it. Or search the mail list archives, as I know I've written a short how-to more than once. Pretty sure I did it within the last month.

I'm going to close this because it doesn't look like a bug. If I'm mistaken in this, we can reopen it.

Comment by Arunkumar Krishnamoorthy [ 06/Jun/12 ]

Thanks. My only concern was version numbers being hard coded in the code generator and the fixed logic of generating / assuming all fields in the same package. If it can be configurable from outside the source code, I thought it would help.

thanks for your response.

  • K. Arun
Generated at Sun May 05 16:01:29 UTC 2024 using JIRA 7.5.2#75007-sha1:9f5725bb824792b3230a5d8716f0c13e296a3cae.