If I am lucky enough I won't need to use Python for anything anymore, that is all I can say.
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.
I don't think that the API is problematic to use.Wrappers can only sugercoat the original IBKR APIs, so can only make its use easier, not add functionality. So my confusion is, what is so problematic about its APIs (which many people seem to use) to the extent that large-scale simplification is warranted.
Virtual functions refer to Abstract methods in super classes?
Can you share your C# Github for reference? I use Java, C# codes are more or less the same, right
The problem comes with the EWrapper class, an abstract class that has every single method in it.
The result is that every time you want to use one method, because is part of the abstract super class, you are forced to implement the rest of them.
What I have done is to implement them into separate classes so if I want to get market data I don't have to implement methods for getting news, for example.
The guy that developed ib_sync did exactly that, he implemented every single method into separate classes.
Correct. The API already contains such a wrapper, implementing all abstract methods with an empty implementation to make this job easier for you. In their Java API it is called EWrapperImpl. You can either take this implementation and modify it to your needs, or make a separate wrapper on top of this to implement your needs.So your saying the necessary EWrapper class includes many unnecessary abstract methods, so concrete subclasses are forced to implement many useless functions or make them empty (trivial implementation)?
Better in what sense?Any retail brokers offer better APIs than IBKR then?
Any retail brokers offer better APIs than IBKR then?