Any reason for using c++?
1.) familiarity
2.) IB API support compatible with my needs
Do you have any working strategies? You should work on platform last and just use one of the many open source ones if you dont already have gd strategies.
In short, no.
Though I need more information about what you mean by working. If you mean to ask if I have a strategy that works all the time on any trading day in any market condition, the answer is absolutely not. If you mean to ask if I have a strategy working with the backtester that produces meaningful results, the answer is yes (its a simple SMA momentum strategy that's supposed to test the platform thoroughly, it loses money). But with certain conditions, the answer will be wrong.
I decided to build my own implementation of a backtester after using BackTrader in python. It was a fine platform, but I wanted something with more functionality and configurability, and I wanted to develop with C++ (I spent a week trying to get the IB python api to work with me, but I couldn't get it to do what I wanted so I gave up). After a fruitless search for an open source usable C++ backtester I started on my own (the ones I found were proprietary, targeted at fund managers). I could also use the programming experience.
In short, I think BackTrader was missing a few things:
1.) seamless integration with a live trading API (python only integrates with python. Shared objects and binaries work with just about any platform)
2.) pairing data vectors together (ex. derivative and underlying)
3.) contracts that aren't just stocks
4.) data that isn't just candles
5.) support for many data vectors at once
6.) indicators on multiple dimensions (indicator for a single vector, indicator for many vectors)
Essentially, I think a backtester should be able to be implemented as a trading bot, but with the API calls and callbacks integrated into it. This is easily done with class hierarchy in C++, and this is how I've built the current implementation.