I should start by making clear that this isn't a software review in the usual sense. Rather than systematically stepping through and evaluating all the functionality of the eSignal1, CQG and STS (Schneider Trading System - formerly known as Stellar) APIs, the aim is to share some real life experiences (some good, some less so) with these interfaces that other programmers and traders are likely to encounter.
Horses for courses
First up, none of these APIs are suitable for high volume, high frequency trading; if your trading strategies are highly latency-sensitive you'll be better off with a dedicated infrastructure capable of supporting this requirement. The possible exception is the STS API, but only if a limited number of symbols/markets are involved; if you need to work orders on spreads involving several hundred symbols, while simultaneously scanning an even larger universe, dedicated infrastructure is the way to go.
If on the other hand your models are being applied to perhaps ten or fifteen instruments and generating trades with holding periods of minutes rather than seconds, then any one of these APIs should be perfectly capable of supporting your needs.
What do you get and how do you get it?
If you're using an API you obviously need to be able to trade and manage your orders, but you may also be looking for historical data both for simulations as well as to initialise any real time indicators your models use. On this point, both eSignal and CQG provide historical data, plus a charting and technical analysis GUI with which to display and manipulate them. Unlike eSignal and CQG, STS is a dedicated trading platform. It doesn't offer historical data - all you get are real time quotes from the markets to which you are connected, so it's a case of build or buy your own historical database.
The first major distinction to draw among these APIs is the underlying technology........