I see there are 3rd party wrappers such as ib_insync etc to simplify the IBKR API usage. What is difficult about the APIs such that wrappers are useful?
There have been occurrences where IBKR changed the parameters for certain commands. If you run multiple programs you would need to check all your programs to see whether you use that command, and update it if necessary. On the other hand, if you use a wrapper you only have to make that modification in one location (i.e. your wrapper). The wrapper acts as an isolator between IBKR's API and your application software programs.
ib_insync has been discontinued. The main developer has passed away, sadly. I guess you still can use it from the GitHub repo, but there won't be any updates coming forward. If you use c# I have developed a wrapper that I use on a daily basis. DM me if you need it.
I still don't get why are wrappers useful? Is it just to aggregate the interface for IBKR code modifications (ie. function signatures)? Does IBKR announce code changes in advance?
We are writing to the IBKR API to interface with our Dashboard product. It is confusing and difficult to use.
I wrote a wrapper with events, I don't like the way you are forced to implement virtual functions from the Ewrapper class. I also added a model to hold data into objects. It is easier to develop your algorithms that way. The code provided by IBKR is messy. You are free to use it but you'll end up writing something on top to get something more up to this century.
ib_insync is asynchronous and that's important for many cases. I personally use an older wrapper because it was considered more pythonic back then, I did my own async functions for certain scenarios. I don't really find the IB API very difficult but there are some buggy edge cases and I wouldn't say it's simple either.
No, there's no point to use those languages for trading. I have one repo in c# and another in c++. If you use any other language for trading you'll end up using third party libraries for the most basic tasks. Like async methods and parallel executions. Not to mention how slow Python is. Python and Java are obsolete languages.
Look at this comedian over here. By far the fastest deployment would be in Python and for anyone asking for help here, the speed is a complete non-issue (HFT guys doing 1000 trades per minute are not on ET). Async is natively supported in Python as well.