Since opentick isn’t currently accepting new users I’ve been looking into other free and easy ways of getting historical and real-time data to feed a strategy written in C++ against TA-Lib.
CoolTrade is another trading platform. This one carries a subscription fee, but it is free to TD Ameritrade client’s. It does allow strategy creation, but only via a UI. No coding allowed. From their forum I gather that backtesting is supported, but only fro TD Ameritrade data feeds and its still in Beta. Didn’t get the impression that strategy optimization was supported either, so this isn’t what I’m looking for either. It also didn’t seem provide charting, but the UI was quite non-standard and I simply have not be able to find the way to get a chart up.
Personal Stock Streamer
There is also Personal Stock Streamer and Personal Stock Monitor, which, although they have separate web sites, are both DTLink Software products and there is a least a fourth web site run by DTLink. Personal Stock Streamer is a free download. The Standard and Gold editions of Personal Stock Monitor costs $30 and $50 respectively (one-time not subscription), with a 40% discount for TD Ameritrade client’s and there is a 30 day free trial. The said, it wasn’t immediately obvious what the difference was between DTLink’s Streamer and Monitor. The configuration process, overall UI, and Options->Preferences appear nearly identical. They also appear to provide an identical set of indicators. The set of indicators provided is smaller then TD Ameritrade’s StrategyDesk, QuoteTracker, and NinjaTrader, but lager then open source iTrade and XTrader. Like QuoteTracker, neither one shows the value of indicators for the current bar in the data box where price and volume are shown. The most obvious difference I could find is that Personal Stock Streamer is extensible via OLE/ActiveScript, but, as far as I can tell, Personal Stock Monitor is not extensible in anyway, which is odd considering the former is free and the later is fee based. At this point in time I can see no reason to go with the fee based Personal Stock Monitor over the free Personal Stock Streamer.
Since the scripting object model is provided via OLE, it is technically callable from C++ even though no header files are provided and it isn’t officially supported or documented (there is typelib in the SDK though and I know a tool exists to create a header from a TLB). That said, it looks like extensions must use ActiveScript as extensions have to be installed and they need to be formated as an XML file with the script in the CDATA section, but I’d imagine the extension script could just instantiate a COM object and delegate everything to it. I also found a two threads on their developer forum that mentioned an SDK/API that would allow developing a COM plug-in, but the threads were from late 2005 and then it was necessary to e-mail them to get it. I’ve done that, so we’ll see if that plug-in SDK is still available.
Sierra Chart is extensible in C++ and has numerous different subscription levels and discounts. It looks like it will run me $17.50 a month or $175.35 a year for the cheapest level that supports TD Ameritrade. They appear to have a 7 day trial, so before trying them out, I’d want to actually have a strategy written against TA-Lib, so I could get integrated into Sierra Chart right away and determine if its worth it for the long term, so I can sign-up for a longer time period and save some coin if it proves worthy.
I mentioned QuoteTracker previously, and while I didn’t look at it very long then, today I discovered that it apparently has an API that may allow me to get historical and real-time data from TD Ameritrade and automate trading.
TD Ameritrade API
TD Ameritrade actually has their own API; however, they don’t give it out to just everyone, and I don’t trade any where near close to the necessary frequency to qualify.
NinjaTrader Proxy Strategy
Another way to get the historical data would be to create a strategy in NinjaTrader that simply dumps the data into a flat file or SQLite DB, which could then be processed any other process. Real-time data could be had and trading could be automated by creating a strategy that serves as a proxy for other processes to NinjaTrader.