TrueTrade, Java/IB trading & backtesting

Discussion in 'Automated Trading' started by tyro_t, May 3, 2007.

  1. tyro_t


    After trying out all of the open source and several commercial automated trading systems for InteractiveBrokers, I decided to write my own. I wanted to have:

    * multiple concurrent strategies
    * day trading and swing trading support
    * full access to all order types (market, limit, trailing, stop, etc.)
    * bar and tick level decision making
    * backtesting
    * multiple simultaneous bar-level data (e.g.: onBar() messages at the daily, 15min, and 5min levels)

    I really liked JSystemTrader, but I felt that it was too limited to use in any serious fashion. OpenQuant seemed the closest to my needs, but the restriction on allowing only one strategy was too much, so I set out to write my own ATS.

    I just released it on Google Code and would am keen to get not just feedback, but contributions from other people.

    There is a wiki with documentation, the downloads contains the runtime versions for Windows, but if you want to develop your own strategies (who doesn't?) you'll have to download eclipse and run it from the source (there are also instructions for this on the Google Code wiki).

    It has some bugs, but I think I've worked out the major bugs on all of the functional paths, and I'm happily using it as-is to develop my own strategies. The IB-interface is new and relatively untested so I wouldn't advise using it against a real account.

    Still, I think it's a great start for some early adopters who, like me, aren't satisfied with JSystemTrader and the other ATS's out there and would like to help build this into something good.
  2. Way to go, Tyro. Congratulations on your own bot! I'll be the first one to admit that TrueTrade is more flexible than JSystemTrader (especially in the order management aspect), albeit at the cost of higher complexity. I think you'll get more responses and participation at the IB's board, though, judging from my own experience.

    - Nonlinear, the author of JSystemTrader.
  3. tyro_t


    Good point. You've got a huge community going on there. Maybe I'll pop by some more :)

    You're right about the complexity-thing. I've tried to design the API so users can keep it simple if they want and leave some of the power hidden. The gotcha is that it becomes much harder to test and verify things since there are so many more test cases.
  4. It's good to see that event driven ATS development model that we introduced several years ago becomes industry standard :D
  5. Congratulations. I predict this is going to be big!

    Although JSystemTrader is being developed at break-neck speed and has a huge user-community, I've always shyed away from it due to some fundamental design and architecture issues that I couldn't get past.

    That, combined with lack of source code repository, bug/issue tracking, roadmap and using non-standard components for logging and lack of ANT or Maven build files etc. (last time I checked) meant that I have been working on my own software. I think JSystemTrader was originally intended to be very lightweight but it seems to be organically growing into something else? Nonlinear can comment.

    I documented some of my design and architecture decisions here:

    I hope that you can get some ideas from it too.

    Deciding to use the Eclipse RCP as the front-end of your software is an excellent decision in my opinion and one that I had chosen too.

    Anyway, I look forward to browsing through the code to see if I can contribute.

    I've always thought there shouldn't be any reason why there couldn't be an open source equivalent to the SmartQuant products. On first glance, your product could be a starting point for just that.
  6. You're the man.
  7. How do I join the project? (new entry for your FAQ)
  8. tyro_t


    Good question and thanks for the link to your "Zen and the Art of ATS Design". I'll read through it this weekend and try to digest it. I'm currently working on ideas and priorities for the next release so the timing is great. I'll add "Ant build" to that right now, and I really should add "JUnit tests" too :)

    Here's what I added to the Wiki on joining the project:

    Q: How can I join your project?

    A: Thanks for your interest, we love to grow the community! You can start by installing the source and running it on your own system. Then:
    * file clear, easy to replicate defects
    * find some defects or features that you want to fix and then fix them. When you're done, generate a patch file from SVN and e-mail it to the current defect owner.
    * When you've had a few defects and features added, e-mail the project owner and ask to be added as an official member
  9. Hi,
    Just downloaded the code and looks like that there are
    some errors while doing compiling.

    in, line 275 and 276.

    double high = series.highestHigh(dateAxis.getMinimumDate(), dateAxis.getMaximumDate());

    double low = series.lowestLow(dateAxis.getMinimumDate(), dateAxis.getMaximumDate());

    I guess that the data type is wrong.
  10. tyro_t


    Weird. I double-checked my SubVersion and it is showing that code as being checked in, but when I browsed the repository directly, it is showing an old version! I forced a new checkin and hopefully this should be fixed.

    Extract the latest version of com.ats.platform.BarSeries in the 'com.ats.model' project.

    The new methods should be there, now.

    Thanks for letting me know.
    #10     May 5, 2007