English
Features

FXDaemon is an easy-to-use, lightweight and high-performance automated trading platform.

  1. The system can continuously monitor the financial market around the clock and use trading strategies to predict commodity price fluctuations, thereby realizing automatic trading for various commodities.
  2. High-precision backtesting function is equipped.
  3. The trading strategy programming language uses JavaScript, which can quickly execute automated trading.
  4. Buy-and-sell signals can be predicted by trading models trained by artificial intelligence.
  5. It can simultaneously share real-time market quotes, account information, position information and other information with external systems via Web API.
  6. All functions can run on both Windows and Linux.
    Running Mode

    Starting from CUI, there are two operating modes: backtesting mode and the automatic trading mode.

    One process is allowed to be run in one account.

    In the automatic trading mode, there are two types of accounts that can operate.

    • Real accounts or demo accounts provided by brokers
    • Virtual accounts in the virtual environment of the system
    Interface

    Connect with the broker's trading server through the plugin.

    Create custom plugin through a built development environment.
    Programming Language

    Trading strategies are developed through JavaScript.

    V8 is used as the execution engine for JavaScript, which follows the ECMAScript (ecma-262) standard.
    In addition, certain system functionalities are exposed to users in the form of JavaScript built-in functions.
    Technical Indicators

    The standard technical indicators based on TA-Lib are provided to users in the form of JavaScript built-in functions. Users can develop their own original technical indicators using JavaScript.

    Automated Trading

    Users use JavaScript to write programs to execute automated trading. Functions such as open position, closed position, market quotes, and historical data can be executed or obtained through JavaScript built-in functions. The startup time of the automated trading program can be set within the range of 1 minute to 1 day.

    Trailing stop and limit can also be automatically adjusted by executing user-developed JavaScript.

    Back Testing

    The required tick and spread values can be set by one minute bars. Data such as backtesting results and temporarily generated technical indicators are written into the database. Various analyses can be conducted by aggregate functions and queries in SQL.

    Backtesting of one minute bars will inevitably generate certain amount of error, but it is more efficient than using the actual tick value. The historical data required for the backtesting requires additional preparation.

    Trading Commodity

    Individual brokers hold different commodities for trading. In addition to Forex, stocks and other products can be traded. Automated trading of multiple commodities can be executed in one account.

    Mail User Agent

    When opening or closing positions, the relevant position information can be sent to the designated Email accounts.

    Deep Learning

    Deep learning is used to improve automated trading logic. Pre-trained models are invoked by built-in functions to obtain the buy-and-sell signals, so as to realize the artificial intelligence (AI) driven trading strategies. Models are loaded when FXDaemon starts. thus the models are invoked internally. Model updating requires restart of the Trading Server. If multiple accounts use the same model at the same time, the model will be loaded multiple times.

    Data Storage

    There are three main ways to store data transferred from brokers' servers or data generated in the system.

    1. Store in the database
      • Accounts
      • Orders
      • Positions
      • Execution plans
    2. Save the file
      • Historical data
      ※Historical data can be downloaded from brokers' servers periodically by setting the beginning and ending time.
    3. Write into Shared Memory
      • Market data
      • Historical data
      • Accounts
      • Positions
    Log Output

    The System logs are categorized into four levels, which are outputted to the log files. The rotate frequency is once a day.

    • Error
    • Warn
    • Info
    • Debug
    Connection of External Systems

    The fxService provides Web API function, which can expose the data stored in shared memory and DB to external systems, which needs to be installed on the same machine as FXDaemon. Authentication and access control can be configured through the HTTP server.

    The external system can update the execution plan stored in DB through fxservice. If the updated execution plan is accessed in the automated trading program, that can control the automatic trading strategy in real time.

    GUI Tool

    The fxBench is a tool for technical analysis, which can be installed on the same machine as FXDaemon or other terminal devices. By overlaying technical indicators on the candlestick chart, the results of backtesting can be displayed simultaneously for miscellaneous technical analyses.

    System Architecture Diagram