Request for proposal for Forex Automated trade platform.
1) Threaded c/c++ ncurses application can leverage a multi-cpu linux environment for backtesting and live trading.
2) Fault tolerant to internet outages, power outages – proposed software should be able to pick up where it left off, acknowledge any open trades, and respond accordingly.
3) FIX Protocol Aware - uses quickfix library, can leverage multiple FIX paths to ensure order execution and protective counter trading:
[url removed, login to view]
3) Can trade on multiple currency pairs simultaneously.
4) Storage of all low level and high level trading and quote information in mysql.
5) Simple c++ strategy interface implemented as a class or object. Strategy interface will have clean hooks to calls in ta-lib, quantlib, and fann. Handoff must include sample strategies demonstrating the use of these three technologies.
6) Backtesting environment should fully automate the process of testing strategy across multiple predefined currency pairs using M1 data, testing multiple values of predefined strategy input parameters with Neural Network hooks.
7) Should leverage existing open source projects like QuantLib and TA-Lib in strategy scripting language: [url removed, login to view]
[url removed, login to view]
8) No GUI other than ncurses required, as long as storage of backtesting and live trading information is stored in MySQL in such a way as it becomes easy to model in Excell or custom PHP/MySQL web app.
9) Full source code and documentation handoff. Immediate support upon request (if new version of quickfix breaks compatibility, etc.)
10) Ncurses client should be separate program from main daemon application, using JSON or similar to communicate, or even FIX if it makes sense. Multiple clients should be able to talk to the daemon, having identical information on all clients. Please see logical diagram.
11) The server daemon should be able to trade the same strategy across multiple FIX accounts or paths, understanding that the forex data provided from upstream will be different across brokers, and only trade on each data stream at each broker institution.
12) Incorporation of FANN [url removed, login to view] into backtesting and / or forward trading. Good design would result in a bonus. An example of NN application to trading can be found at: [url removed, login to view]
13) Server Daemon should be ROCK SOLID STABLE. That means no cheating or shortcuts when programming it. It should not skip a beat when connections fail to FIX brokers or connections from Ncurses clients. Live money will be used to trade it! It should respond to signals for gracefull exit, restart, and statistics (FIX stats, other stats not available from OS, health status.) An snmp interface would be nice. Daemon should also have three logging levels to syslog daemon – debug log, trade log, and information log. All message go to syslog and mysql.
Open source project that is similar in design to the proposed program: [url removed, login to view] - I do not like java though – feel free to pull ideas / code from it.