Exactly that, built out over years. I don't have any back-testing or gui though. I capture market data and replay using my own simulator. Tedious ... that's why I try to come up with strategies in my head and then prove or dis-prove them with data.
I'd drop C++ if I were you and use Java. I've got =~ 20 years of programming experience, started with C++, moved to Java, and now due to job constraints I'm back to C++ and loathe it. Stupid-ass language, impossible not to shoot yourself in the foot (crashes), hard to debug, horrible IDEs, dystopian template mastubation in the latest releases while not even having a cross platform way of getting a stack trace. Fuck I'm not using it for my own projects. Here's an older version of the automated trading system I'm using with IB (written in Java). In the meantime I've integrated it with the backtester and no longer open source it but you can get an idea on how to interface with IB API for executions. I'm not handling positions, just trigger limit order and cancel it if not executed in 10 seconds. There's a "pricing" module loaded at runitime in the open source version, that's the proprietary stuff I'm using. Eventually fuck open source and it's much easier to have an integrated system (backtester + autotrader). https://github.com/aquarians/AQuaRiAnS/tree/master/java/Aquarians
From IB: The C++(MFC) API is deprecated as of API Version 9.72. … What are the full implications of this? Also, is an GUI an absolute must for a simple futures trading system? Edit: qlai said he doesn't use a GUI so it must not be that crucial
It means they're not adding features or fixing bugs on it anymore. Oanda did the same thing a few years ago: ditched their C++ API to devote full attention to their Java API. The fact is that the IB API 9.72 still works and will continue to work. I still use it myself and it works great.
I run on Linux. Looks like you are not taking my advice to start with easier API ... Good luck You don't need GUI, the api connects to TWS so you can see orders and positions. You can cancel/modify orders via TWS and your app will get notifications.
I’d recommend porting to C# - a C like language without the fear of null pointers and with garage collection built in. personally I am developing in c# visual studio on a mac, deploying to linux in aws
I have to say the most of my automated traders use C++. It is also very common in the industry. When you choose what software you want to code on, you have to consider what broker and API you want to use. In the end, you want to execute not code.