finfree-be/README.md

1.7 KiB

Purpose:

The app is designed for automated cryptocurrency trading based on user-defined trading strategies.

Markets:

The app will focus on trading cryptocurrencies.

Trading Strategies:

Users will manually define trading strategies using a Domain-Specific Language (DSL) consisting of three parts: input, conditions, and actions.

  • Input: Users can define inputs such as the price of a cryptocurrency or moving averages.
  • Conditions: Users can specify conditions (e.g., "drops below 30000," "raises above 60000") that trigger actions. Conditions can be combined using AND and OR operators.
  • Actions: Actions can include opening/closing positions, pausing/starting a trading strategy, or setting variables.

Web Interface:

A web interface will allow users to create and manage trading strategies. The DSL will be used within the web interface for defining strategies.

Database:

RethinkDB will be used as the database for storing strategy data.

Backend:

  • Written in Python, with a focus on functional programming using pure functions.
  • Backend will consist of small, manageable parts.
  • No reliance on large frameworks or libraries.

Frontend:

  • The frontend will use simple HTML elements.
  • Business logic will primarily reside in the backend.
  • Minimal JavaScript for display purposes.
  • Styling will be based on FlatUI from Microsoft or MaterialUI.

Security and Authentication:

  • Initially open for local use, with plans to add WebAuthn authentication for access.
  • Exchange API keys will be stored securely in browser sessions.

Communication:

A stateless REST API will facilitate communication between the frontend and backend.

Modularity and Clean Code:

The app should be modular and follow clean code guidelines.