Quote from dchang0
hylt's poll on most powerful trading/backtesting software got me thinking: we've got a lot of built-from-scratch software platforms around here--some highly sophisticated, others not. I'm curious as to how these platforms are set up. If you've eschewed the software platforms on the market and written your own...
0) I wanted a "swiss-army-knife" of trading platforms, as well as advanced features like neural-networks of many kinds, and other methods for pattern recognition, and then finally a method for making simple rules-based "reasoning". The reason for this was partly curiosity, and then a wish for automated trading and a very specialized and flexible tape-reading environment. However, I probably still use a lot of time on program enhancements, rather than exploring scripted indicators or models. Hey, I got to trade too, and I started this software not-so-long-ago.
http://www.elitetrader.com/vb/showthread.php?s=&threadid=30307
1) It's written from scratch, first version in a scripting shell. Then a "proper version" with compiler. I used a lot of free and open APIs - especially for the AI-stuff. Then I also included hooks to MatLab through another free API. Therein I have access to many pre-made methods for analysis and visualization. Some of the AI stuff is Joone.org, Hidden-Markov-models, Bayesian networks, Prolog-style-rule-set and more. MatLab also allows for even more.
2) Java - which is "interpreted, but with Just-In-Time compiler" for last-minute optimized native-platform execution. The first version (prototype) was coded using BeanShell which is "instant Java" without compiling, just goofing around, and with most Java 1.5 features already available.
3) Most OSes. But I use IB TWS API, Quote.com and a forex supplier for data. Multi-threaded for independent data-feeds, data-scripts and updates of graphical components.
4) No, although several of the APIs support this. I mainly concentrate on short-term, even for pattern recognition. Markets change fast. The software perhaps has too many threads right now, but something like Linda-tuples could be implemented if the need for a server farm came up. Otherwise the current computing grid frameworks are very fresh, perhaps save the IBM commercial grid.
5) Yup, although it's very work-intensive to go through the AI-training cycles. For normal TA-indicators, they're all available through the ~274KB BeanShell scripting extensions API, meaning that new indicators can be scripted/loaded/saved dynamically while running the software. All AI-models are also loaded through the scripting part.
6) Fast enough for me. It runs several threads. Although, I did a lot of tweaking on the GUI-side to get very fast graphics moving in Java. Took a lot of hints from gaming-optimizations, especially J2ME techniques (mobile phone Java). Back-testing systems can still become faster, but the practicality of using enormous heaps of memory also needs to be considered.
Many are biased towards speed of Java, but the fact is that it's quite slow on floating-point maths because of emulation in some cases, mostly the JIT-compiler takes care of that. Remember, huge list handling is fastest in functional languages like Lisp. All languages have perks. Java is the most modern, full-fledged and run-time secure language around. It's hard to do obscure mistakes, unless you're doing unsafe thread-mixing.
C++ would be an option if there were better standardized sockets-handling - which they're getting to with the BOOST.org initiative, but Java is the most complete environment for now.
7) Prototype: ca 1-2 days. Proper verison: ca 1 month. Enhancements: forever. I've been programming since the age of 10 since Basic 2.0 and MC 6502/6510, and also founded 3 computer consultant companies - mainly focused on programming.
8) In programming hours: ca 500 hours @ whatever price.
In acutal spent money: 0 (all expenses @fixed costs)
9) Java is fun, and JAD is rad!
10) Would never want to do this because of support-nightmares. Otherwise, open-source is always possible. I am thinking of another type of software which groups traders, and can "coordinate traders and trades".
PS! I first decided not to reply to the questionare because there has been a serious lack of any programming-oriented threads as of late and mostly just BS, but I was encouraged by the interesting responses.
PPS! How many others have include scripting capabilities for adding indicators etc. ? Are you accessing all internals or using a pre-defined API ( I use an API to not get too messy in my scripts) ?