8
$\begingroup$

QuickFIX is a well-known open-source implementation of the FIX protocol. This library has been ported to numerous languages, though for the moment I am concentrating the on C/C++ implementation.

Unfortunately, I do not know C++ at all but my knowledge in C is rather high (professional level). My goal is to develop an order management system that will be based on QuickFIX. I would be glad to have my system both as fast as possible and well designed. Because I do not want to produce a messy product, I would prefer to implement it in C.

So, my question is pretty simple: Is it possible to use QuickFIX in C project? I have been trying to figure this out with no success. I did not manage to find any information online. I would appreciate it if someone could provide her/his experience or at least point me in the right direction.

$\endgroup$
4
$\begingroup$

The canonical QuickFIX is very C++. It has classes for the message types and uses factory patterns for a lot of the auxiliary components. It requires users to override virtual functions to define the communication callbacks. It even uses exceptions to signal certain desired state changes, whether there is an error or not.

Most other language bindings for QuickFIX are wrappers to the C++ version. (The exception is Java, for which there is a complete rewrite.) There definitely aren't any C bindings that come with the canonical source code. So if you can't find an existing set of bindings online, you'll have to write your own.

$\endgroup$
  • $\begingroup$ Thank you for your response. Seems I got your idea. If going this way, perhaps I will have to write my own binding i.e. a C++ intermediary between QuickFIX and my order market system. $\endgroup$ – TruLa Sep 21 '12 at 12:19
4
$\begingroup$

It's not exactly QuickFIX but look at libtrading. Maybe you can tailor it to your needs.

From the README:

libtrading is a library for electronic trading. Its purpose is to support market data and order entry network protocols used by trading venues across the world.

$\endgroup$
  • $\begingroup$ Thank you so much. There is no doubt, such alternatives are very useful. At least, they might inspire you to implement FIX protocol by yourself :) $\endgroup$ – TruLa Sep 21 '12 at 12:21
  • $\begingroup$ Yep, indeed. I'm working on an (open-source, C, BSD-licence) fixml<->fix<->memory converter myself but it's nowhere near finished. I will update my answer once I deem it ready for public use. $\endgroup$ – hroptatyr Sep 21 '12 at 13:02
-1
$\begingroup$

Knowledge of C++ is key for dealing with these information protocols, as chrisaycock stated QuickFIX uses classes for many aspects of communicating.

And QuickFIX is not exclusive in this sense, all of the other protocols for exchange communication and information exchange are in C++ and they use many features of the C++ language that are exclusive to C++(such as classes and other artifacts of a language that supports object oriented programming).

Although at the same time writing your own engine for dealing with the FIX protocol is both:

  1. Not uncommon in the least bit: most if not all algorithmic trading firms will at least alter the FIX protocol, writing their own version of the engine for the purposes of optimization and customization.
  2. Probably necessary: similar to number one, if other firms are doing it then you too will also need to do that. The language you decide to use is your choice completely, or in a broader context it's the firm's choice. I'm aware that you are asking this question as an individual however I thought I would provide that insight regardless.

Although it can be done in C, there really is no reason to. No company in the space is using C over C++ for this.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.