Skip to content

Project description

lsgro edited this page Jan 31, 2013 · 2 revisions

What QuantComponents is:

  • An adapter to collect and visualize price time series from a broker (currently only Interactive Brokers is supported) into Eclipse
  • An engine for algorithmic trading, supporting back-testing and live trading
  • A framework to develop data analysis tools and trading strategies in any OSGi 4.2 container, or in a plain Java application

What QuantComponents is not:

  • A trading application to be used by non-programmers
  • A fancy charting tool
  • A trading system ready to make money

Architecture

QuantComponents framework architecture

The code delivered is partitioned in three layers, from the bottom:

quantcomponents API

An API, along with base implementation classes, provides the functionality to build a trading system in plain Java.
There are no dependencies to third party library or framework.
Alternate implementation classes can easily be created and used with the framework, since almost every relationship between objects is based on interfaces.
For the same reason, framework like Spring are easy to use.
Check out the Java API to learn what is available.

com.quantcomponents.*.service

The com.quantcomponents.*.service bundles instantiate the main OSGi services and their dependencies:

The first two interfaces define façade services to the two main areas of the framework: the handling of market data and the management of trading strategies.
The third provides [trading calendars](Trading Calendars) to the UI and other parts of the framework.

At this level there is no dependency on Equinox or Eclipse: these services, defined by means the standard Declarative Services configuration, should be at home in every compliant OSGI 4.2 container.

The two main services can be accessed by remote, through R-OSGi, but this configuration is still alpha software. The necessary bundles are the com.quantcomponents.*.host and com.quantcomponents.*.proxy, which are not installed by the default configuration.

com.quantcomponents.ui.*

The standard Eclipse installation feature installs several UI plug-ins com.quantcomponents.ui.* that rely on Eclipse.
This is a rather thin layer, which provides an operational interface to the main framework services.
Since the OSGi services are not started by default in Eclipse, two special auto-starting plugins are installed:

They activate the QuantComponents OSGi services and their dependencies after the Eclipse workbench has been started.
Since they provide conflicting configurations (standalone and client-only), only one of them will proceed to the actual start-up of the services in its configuration.
The configuration active by default is standalone. To activate the client only configuration, add the line:
-Dcom.quantcomponents.ui.configuration=client in the eclipse.ini file.
Please note that the client-server configuration is still experimental, and in order to work needs an implementation of R-OSGi and a discovery mechanism. More documentation on this will follow.

Hot to use it:

Write your own trading strategy

The framework, once installed correctly on Eclipse (see the [quick start](Quick Start) page), can be used to test your trading strategy.
A trading strategy can be developed in Java by following the instruction here.

Write a broker adapter

Currently only Interactive Brokers accounts can be used.
Although the quantcomponents API can be skewed towards the IB API, there is no formal dependency on it, and the broker interfaces have been designed to be highly generic.
Please refer to [this page](Broker Adapters) if you want to write (and possibly share) another broker adapter.

Extend the UI

Currently the user interface is limited to the bare minimum to make the platform usable from Eclipse.
Developing complex user interfaces was never the aim of this project, which concentrated on delivering a scalable platform with the maximum grade of openness and modularity.
Any developer accustomed with Eclipse plug-ins will be able to write her own UI components by looking at the code in the com.quantcomponents.ui.algo and com.quantcomponents.ui.marketdata plug-ins.