I have SW dev background and with the recent plunge into algorithmic trading (not low latency) with my own system; my 2 cents: Custom implementation puts you in a different league because as I see your creativity (and off course discipline) is what limits you once you plunge in. Although retail platforms promise to achieve whatever you ask for, but as you rightly observed, your strategies will be pretty much limited to the features retail platforms offer. I used tradestation for some time and I spent so much time trying to get the trailing stop work the way I wanted it to work; this is just a breeze with the current trading system that I developed. I have also developed a trade station macro editor that gives me a bracket order based custom macros J … I could paste the macro in the command box and my limit orders appear on my charts instantly (I did this to precisely place targets and stops based on my profit/risk calculations)… I did see the limitations though. I have developed my own system, and yes a custom implementation opens up a number of possibilities. Now, this brings us back to the re-creating the wheels stuff. As I see, the common components that you need are (1) data store (candles/ticks) (2) charts software & (3) order/risk management system and (4) integration glue code to get the whole workflow up and running; excluding your strategy modules. Data store can be open sourced, but you rather want to tie in some kind of automated backup/restore/failover functionality… atleast I couldn’t find any open source code. As for charting, you do have third party charting libraries like scicharts/ chart director… it takes a couple of iterations to get over how the charting libraries work and how you need to design you code in the first place, but once you get a gist of it you should be able to get though it pretty quickly. These charting libraries aren’t going to be fancy like esignal or trade station, but they are good enough to visualize the price action and signals from your custom indicators. Developing a good order management system that can talk with the broker infrastructure takes some time to develop, but to be quite honest, this work depends on the type of strategies you want to go with. Developing an OMS for low latency trading is way different from one that supports normal discretionary trading. You need to pick and choose what you need here. All these three components with the basic set of features take about 3-4 man month effort… The more bells and whistles you add, the longer it is going to take… if you want an institutional type one, then, it could take even longer. This time includes time to conceptualize, design, develop, re-develop a polished solution from scratch (very important), test and go live. Now, if you want to skip the OMS part (basic stuff that sends orders/tracks them and generate pnl) to get a back testing infrastructure in place, I would take off 1.5 man months. This is all the easy part. The difficult part is to get your strategies working and its going to be a wild goose chase unless you know what you are doing. This is where the difference between a trader and a developer becomes apparent. Developers can’t think the way traders do and so if you outsource this, you will end up spending a lot of time trying to make the developer see things the way you see things. You have an 80% probability of getting into this if you decide to outsource: http://www.cvr-it.com/images/PM_Build_Swing.gif Then the issue becomes, how about outsourcing the common components and develop the strategies yourself…. you can do so, but you will have to wait until the outsourcing work is done before you even start coding your strategies… Unless you are an institution, I strongly suggest that you should develop all by yourself. This might get you off from the market for a few months, but it definitely pays off in the long run and it becomes your edge. As for the language, you can choose any language you like. Scripting languages like Python can get the job done. It wouldn’t be surprising if you end up developing 40K+ lines of code; and when you are dealing with such large code bases, debugging and error tracking becomes a major issue. Debugging scripting languages is a pain. Fully loaded programming languages offer good debuggers to assist you (Java, .Net or C++). I personally use C++ with bits and pieces of bash/python scripting. You can choose any language you like to get the job done. Scalability and extensibility is the key. You need to put good software engineering practices in place. Note that all the above estimates are for someone who is pretty good at programming. Learning programming from scratch and attempting to develop a trading system can be done, buts its a hearculean task and it is going to take longer with more iterations/revisions. Hope this helps,
I have built my own back testing web site that I use for my trading and hope to one day make into a pay for membership site. I figured that if I am going to write some custom software, why not put a web front end on it and perhaps other people will find it useful. I bought a javascript solution for charting and use an open source trader library (C code wrapped in PHP) which has all of the indicator's I need. Shit is lightning fast! I think rohan2008 time estimates are somewhat accurate if you are an experienced programmer. The challenge I have had with my project is it has been a part time effort and I don't have much free time for the project (I have full time job, play in a band and have a family with a child under 2 years old). I have been working on this project for 2.5 years with two other people and it is still not code complete. With all that being said, it is pretty cool being able to build something exactly the way you want it. Also, once you get the basic framework built, new components are much easier to build because you can rely on code already written for common functions (i.e. saving, loading, etc). Good Luck! fan27