AlgoTraderAlgoTrader Documentation

Appendix E. Example Strategy "EMA"

The Strategy is a simple example without Esper that trades the EUR.USD FX Market and is based on two exponential moving averages.

The Strategy sends a BUY order when shorter moving average (e.g. 10-days) crosses above the longer moving average (e.g. 20-days) and it sends a SELL order when shorter moving average crosses below the longer moving average.


The main artifacts needed for the Implementation of a new Strategy are described in chapter Chapter 5, Strategy Development.

The strategy uses the TA4J library which provides over 100 technical indicator that are computed on a continuous basis.

The EMA Strategy consist of one single Java class only:

/src/main/java/ch/algotrader/strategy/ema/EMAService.java

The strategy service class providing onStart and onBar method containing the trading logic

To start the Strategy please see the explanations in chapter Chapter 4, Starting AlgoTrader.

To setup the strategy for back testing and live trading on a development workstation please execute the following steps:

To start the strategy in live trading mode on a development workstation please execute the following steps:

Initialize the database

load the db-samples script into the MySql database: /algotrader-core/src/main/resources/db-samples/mysql/mysql-data.sql

load the strategy specific script into the MySql database: /ema/src/main/resources/db/mysql/mysql-data.sql

Start the Strategy

invoke the Eclipse Launch Configuration: EmbeddedStarter-ema

To start the strategy in live trading mode on a productive server please execute the following steps:

Copy docker compose file

Copy the following file to the server and make changes as needed:

https://gitlab.algotrader.ch/main/examples/blob/master/ema/docker-compose.yml

Run docker compose

Invoke the following command inside the directory where the docker-compose.yml file is located:

docker-compose up -d