How to start working on QuickFix library
Asked Answered
K

2

6

I have given a project to develop Algorithmic trading system using c++ and quickFix library, I search on google about quickFix library but didn't find any useful information. Can anybody give me some information , from where should I start?

Keverne answered 26/10, 2016 at 12:23 Comment(1)
Remember to accept the answer that was most helpful to you, if any actually answered your question.Libbey
L
7

You provide very little detail in your question, so I can only guess at a helpful approach. I have done what you are starting, in Python, and can give you some orientation. All the links Karl mentioned are crucial, (you should pay special attention to the quickfix documentation on the config file) to which I would add FIXIMATE.

To do something like this in QF you need to answer a number of questions.

  1. Logon. Figure out how to logon. Try to get a data dictionary from your counterparty. You don't want to be forced to modify your DD too much.

  2. Interface. How will you tell QF to logon, logoff, exit terrible positions, and so forth? I use a command line tool (cmd2) that gives me this ability. Other people code GUI windows.

  3. Message Cracking. Some versions of QF come with a cracker but if you don't have it in C++ you will have to write your own so you can parse the incoming messages.

  4. Data Management. How will you save incoming market data, both in RAM and to disk for analysis later? How will you represent and monitor your positions, your working orders, your audit trail? Familiarize yourself with the ScreenLogFactory and FileLogFactory in QF.

  5. Auxiliary Functions. You will need a lot of functions you will write yourself to help at all stages. Save them all in one place and organize them into categories for easy access.

  6. Monitoring. How will you know if something goes wrong (or right) when you are not in front of your computer monitoring the algo? I launch a completely separate process which consumes messages via a queue and sends me texts and emails.

  7. Risk. You don't want your machine sending 1000 orders to market in the blink of an eye. You need to code some checks that will veto bad orders as a final stage before they go out. Also some code that will tell you if you are in a position when you are supposed to be flat. This part is very important.

  8. Strategy. You will need the ability to quickly ingest data, analyze it, and generate signals. For flexibility you should not design your strategy into your system, but you should design a strategy object which can support any strategy you come up with. Then you deploy those objects within your system.

  9. Order handling. Your algo needs to know when and how to enter orders, cancel them, move stops, etc. It will need to deal with partial fills, and be able to support multiple order types.

This is just the beginning, off the top of my head. It is a long road to do all by yourself with no help. Very interesting though, and rewarding.

Libbey answered 31/10, 2016 at 14:11 Comment(5)
A nicely structured view on the FIX-arena. You might want to know, that the URL mentioned in your recommendation seems not to be working in the intended direction (cit.:) "This domain was recently registered at N ...", showing some changes or re-organisations in the nature of the FIXimate operations. You may decide to edit great post to better reflect such fact & may direct the kind readers' attention to other source of help ( might be, provisioning access to online FIX I nteractive M essage A nd T ag E xplorer at fixtradingcommunity.org/FIXimate/FIXimate3.0 )Heartless
Thanks, I fixed the link.Libbey
Definitely nicely structured view on the FIX-arena. As I know python also little bit, just wanted to know how would you compare features that you have implemented in python Vs c++ .Keverne
I don't know any C++, so I can't really compare them. I read that Python is roughly 20x times slower than C++, though obviously that is just a rule of thumb and it depends on many factors. Latency is an important consideration for some systems but unless you are worried about differences in microseconds in your application, I don't think it makes much of a difference what language you go with.Libbey
Remember to upvote answers that you find helpful, and to accept an answer, if it answers your question.Libbey
P
1

You can find the QuickFIX downloads on the quickfixengine.org website here: http://www.quickfixengine.org/. From there, you can download either the source code or download pre-built packages for Visual Studio 2010, 2012 and 2013.

Documentation for QuickFIX can be found in their documentation area here: http://www.quickfixengine.org/quickfix/doc/html/. The documentation includes compilation/installation instructions and a "Getting Started" section which discusses setting up a project and writing your first QuickFIX application.

If you wish to know more about the FIX protocol, you are advised to look at the FIX website here: http://www.fixtradingcommunity.org. There are specifications on that website that will give you information on the types of messages supported by FIX and how they should be used.

Pane answered 26/10, 2016 at 12:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.