8 years ago
Share this article Reddit Twitter Facebook Google+

An introduction of ftap -- my algorithm trading system

ftap, the abbreviation for finance trading and analysis platform, is a full featured algorithm trading system. I created the project in my part time, start from early 2014, and the project is under active development and improvement.

The project is closed source. If you have great strategy idea, I may code and test it for both you and me.

Features, advantages, and facts:

The project is written in pure C++, using Qt5 framework.
The compiled binary is a command line tool.

About 56,000 lines of code.
Not including 10,000 lines of abandoned robots.

Cross platform. Windows, Linux, and Mac.
Thanking to the great Qt, I can develop and test on Windows and then run any robots on Linux VPS.

High performance.
Though the project is not for HFT, performance is highly concerned during development. Performance is the key reason that I roll out my own system instead of using existing software product such as MetaTrader. On a normal 4 cores computer, a normal indicators (such as RSI) based strategy can be back tested in 2~3 seconds for 30 instruments (28 major Forex pairs + metal).

Back testing.
Multiple instruments, multiple time frames are supported. Candle bar based backtesting. It's not difficult to support tick based backtesting.

Optimizing.
Currently only brute force is supported, but it's quite easy to plug in other methods.

Walk forward analysis.

Live trading system.
Currently Oanda REST API is implemented. One robot can place buy/sell order on different account, to avoid no-hedging limitation. I have used it on my live account, and it works well.

Indicator system.
MA, RSI, MACD, PSAR, etc, using ta_lib. New indicators can be developed easily.

Spread (fixed) and slippage can be configured.
I usually tend to use larger spread and slippage in backtesting.

Dukascopy data download.
Incremental download tick data from Dukascopy, very fast.

Oanda data download.
Using Oanda REST API, incremental, very fast.

Simple charting.
So the report contains a balance chart, very intuitive.

Unit testing.
Some key components are unit tested.

High quality code.
I'm an experienced developer. You can check my code quality and style from my open source C++ library, cpgf, on github, though it's not finance related.

Multi threading.
Each back testing task is allocated on one cpu core. OpenMp is used to achieve multithreading.

Very well architecture.
The code is well modularized so it can be used either as a tool or as a library.

Easy to use.
Multiple instruments, time frames, and strategies can be back tested in one command. What I usually do is to test one time frames, one strategy, for a bunch of instruments.

Work well with Forex and Index CFDs.
Stocks are not tested but the system should work with any finance product.

Some other features.
Such as convert Dukascopy tick data to internal candle binary data, convert candle data to MT4 CSV, etc.

Why am I introducing a closed source project?

The project status

At the time writing this blog (Aug, 2015), all main features are finished, and I'm refactoring the code to make it even better. Using the system, I have tested near 100 strategies and still not found any satisfied strategies. The live trading system is running one a Linux VPS, on my Oanda practice account. Several months ago I put the system on my live account with a crap strategy, you know the result and why I cancel it after several weeks.