Friday, May 15, 2009

Marketcetera Automated Trading Platform

Marketcetera platform consists of the following components:

* Photon - a light-weight GUI for entering orders, monitoring them and running strategies. Built on top of the Eclipse Rich Client Platform.
* ORS - Server that includes an Order Routing System for accepting orders from Photon, StrategyAgnet or Order Loader and routing them to an exchange, persistence layer backed by a database (MySQL is installed with the product) and authentication module.
* Order Loader - for batch loading of large numbers of orders.
* Strategy Agent - standalone environment for running strategies.
* Platform modules - CEP, Strategy, Market Data Adapters (such as the Marketcetera simulated market data feed) and more.

* TradeBase - a web-based reporting application for all of your trading activity.
It can be used to view, create and modify positions, trades, accounts and equities. Built on Ruby on Rails.

Currently the Marketcetera platform is built on top of Spring Framework with an embedded ActiveMQ message queue middleware. Queues (i.e. point-to-point connections) and topics (i.e. publish/subscribe connections) are both used to communicate amongst the pieces of the Marketcetera platform. In general, queues are used to communicate messages going "toward" a broker or exchange, and topics are used for response messages going the other direction. This way we can guarantee that instructional messages - such as orders and cancels - are delivered once and only once, and informational messages - such as execution reports - are distributed to all authenticated clients. In addition, ORS publishes a set of Web Services interfaces used internally by the platform client components such as Strategy Agent, Photon, etc. We use Apache CXF technology as our web services framework.

ORS stores all of the trades, execution reports and positions information in a database accessed by the persistence layer. ORS is configured to use the MySQL database out of the box, but we are database agnostic and can be reconfigured to use any other database, such as Oracle or PostgreSQL.

What are the system requirements for building the Marketcetera platform?

* Java 1.6
* For Tradebase, you need Ruby and Ruby on Rails
* We use Eclipse for Photon development, IntelliJ for the ORS and OrderLoader, and RadRails for the Tradebase
* You need a Unix/Linux/MacOS X platform to build the Quickfix bindings for Ruby (see building Quickfix)
* MySQL (or any other) database for ORS and Tradebase

What is it written in?

* Photon is written in Java on top of Eclipse RCP v3.4
* ORS and OrderLoader are written in Java, with heavy use of Quickfix/J and ActiveMQ and Spring projects
* Tradebase is written using Ruby on Rails

SVN checkout over HTTP doesn't work for me

If you are sitting behind a transparent HTTP proxy that doesn't let SVN PROPGET command through, you may not be able to check out the code using regular svn co http://... command. Instead, you can use the SVN protocol itself, for example:

svn co svn://code.marketcetera.org/root/trunk marketcetera-platform

I can't compile source code after checkout

If you try to compile the source code after checking it out and you see errors similar to this:

marketcetera-platform/source/core/src/main/java/org/marketcetera/marketdata/IMarketDataFeedFactory.java:[21,39]
generics are not supported in -source 1.3 (try -source 1.5 to enable generics)
public interface IMarketDataFeedFactory,C>,

Then you've probably missed a step during the build setup. Make sure you've done the following

* Copy profiles.xml.sample to profiles.xml in the top-level directory
* Verify that your default Java is 1.6 and not 1.5

1 comment:

Unknown said...

Yuye,

Thanks for the post! We're actually just about to release the 1.5 version of our product next week. If you're interested, let us know or check back at http://www.marketcetera.com for more details.

Sincerely,
The Marketcetera Team