I have used https://www.mt4api.net/
) and it is quite good. Internally it uses WCF and the developer answered promptly to all of my questions. Works at least pre build 600.
I run one robot in a headless VPS server and booted it once a month to be on the safe side.
Did not use it for history testing because pre 600 MT4 is so slow.
On hindsight I might choose https://www.nj4x.com/
now. It is not targeted specifically for algo trading but I think could do that and it is cheaper. Might take more time on planning how to setup properly? Build 600 status unknown to me.
I think that the next time I will roll out my own API and replace MT4API with it.
Did a prototype for MT5 using VB and Java server side using plain sockets and it is relatively easy.
Now as MT4 has same data types as MT5 it is possible to write socket or pipe based protocol that is optimized for your specific needs without writing a C/C++ DLL.
The problem with MT4API or NJ4X is that they implement MT4 API 1:1 that is not efficient for algo trading if you need heavy optimizations for speed. If your robot trades just few times an hour or day MT4API or NJ4X can do it.
Being Bearish or Bullish Makes No Difference