A very interesting thread I've been giving some consideration to doing something like this however I'd probably need to expand my ability to code a bit first.
Do you mean writing your own algorithm into an existing platform, or writing a platform for yourself? If you're going to write a platform, I'd strongly suggest looking over the architecture of jsystemtrader - Google Code and jbooktrader - Google Code. You should also try making a few strategies under NinjaTrader, get a feel for how they've designed things.
A few major points to think about:
1. Everything's asynchronous. So, you don't ask for a price then wait for it back, you ask for a price and tell the API where to send it once it has arrived. This means that you're not blocking other bits of your system waiting for a response. Takes a while to get your head around, though.
2. Do you want to maintain state? For example, if the application crashes, do you want to be able to restart it and it loads where it was from a file/database? I've personally gone with not for now, as it's easier for me to just flatten the account and start again, but it'll be in a later revision.
3. Your system loses its data feed for 5 minutes. What happens next? 10 minutes? 15? I'm currently looking at having the contract manager put good-after-time orders in to close, and have it move them forwards as data comes in, so in case of a break in connectivity the position auto-closes.
4. What's your interface going to be? Graphical interfaces are popular, but if you're running it as a "fire-and-forget" application, you may want to consider designing it to work from the command line. More intricate options could include a web interface, RMI/RPC interface, or an instant messaging interface (but that's a security minefield).
Oh, today's screwup; was changing the order system around to use good-til-date orders with a very short lifespan (1 minute), instead of fill-or-kill (because IB don't actually support fill-or-kill for forex, even if the paper trading version allows it). Managed to have it as 1 minute from start of bar... and of course I'm using 1 minute bars.
Oops.
Edit: Oh, and I'll be releasing my platform code towards the end of the month, any major hiccups depending.
Last edited: