You could use IQfeed, they have a (paid) developer program that comes with an API
the API is as simple as opening a TCP/IP socket and sending a command, you hen
received the history or a live feed.
The quality of data and the performance is good.
There are a few options for generating trades to a borker. The question is how you
like to design your system. You can make it completely machine to machine, or you
can inject the orders into a platform that sends the orders onward to the broker and
that provides you with the possibility to intervene and see the trades, etc..
The first one is probably well documented and offered by IB. The later could be
done with NinjaTrader and all the brokers supported by them.
You could also consider generating the FIX protocol, there are a few libraries out there.
Excellent suggestions. Passing orders to an external program via injection is something I have never tried and unsure about the feasibility of that. My background is in web development. Not so much in Windows application development.
It appears that "falconair/nodefix" was trying to do exactly that but it never got out of pre-beta.