diff --git a/README.md b/README.md index 09c8678..17f7d19 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,76 @@ -## Purpose: -The app is designed for automated cryptocurrency trading based on user-defined trading strategies. +## Functional Requirements: -## Markets: -The app will focus on trading cryptocurrencies. +### Strategy Configuration: +Users can create trading strategies via a web interface. +Strategies consist of conditions and associated actions. +Condition Configuration: -## 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. +Conditions are triggered based on price movements of specified trading pairs. +Users define target price levels and directions (up to down or down to up) for each condition. +Conditions can enable/disable each other. -## 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. +### Action Configuration: +Actions are executed when conditions are met. +Users specify actions such as placing market orders, enabling/disabling conditions, and closing positions. +Users can specify the exchange where orders will be placed (e.g., Bybit). -## Database: -RethinkDB will be used as the database for storing strategy data. +### Sequence Management: +Define a sequence of conditions and actions to execute a complete trading strategy. +Actions can be triggered based on condition outcomes. -## 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. +### Stop-Loss and Take-Profit: +Specify stop-loss and take-profit percentages for risk management. +Stop-loss triggered upon reaching a specified percentage loss. +Take-profit triggers position closure upon reaching a specified price level. -## 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. +### API Key Management: +Users can input and update their Bybit API keys from the web interface. +Notifications prompt users to update API keys close to expiration. -## 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. +### Real-time Monitoring and Recovery: +Real-time monitoring system tracks the status of running strategies. +Strategies automatically recover and replay missed changes after a temporary connection loss. +Logs record missed events during connection loss for troubleshooting. -## Communication: -A stateless REST API will facilitate communication between the frontend and backend. +### Web Interface: +Intuitive web interface for strategy configuration and management. +Users can view a list of all strategies and their performance metrics. +Secure transmission of sensitive information (e.g., API keys) over the network. -## Modularity and Clean Code: -The app should be modular and follow clean code guidelines. \ No newline at end of file +### Strategy Blueprint Creation: +Users can save trading strategies as blueprints for future use. +Blueprints store the configuration of conditions, actions, and sequence of a strategy. + +### Blueprint Instances: +Users can create instances of saved blueprints for different trading pairs or price limits. +Instances inherit the configuration of the blueprint and can be customized as needed. + +### Blueprint Management: +Users can view, edit, and delete saved strategy blueprints from the web interface. +Blueprints are organized for easy access and retrieval. + +## Non-Functional Requirements: + +### Reliability: +The software ensures uninterrupted operation even in the event of temporary connection loss. +Reliable execution of trading strategies based on specified conditions and actions. + +### Security: +API keys are securely stored and transmitted using encryption techniques. +Access to sensitive information (e.g., API keys) is restricted to authorized users. + +### Scalability: +The software is designed to accommodate future enhancements and scaling as the user base grows. +Performance remains consistent with an increasing number of concurrent users and strategies. + +### Usability: +The web interface is user-friendly, allowing for easy strategy creation, configuration, and management. +Clear and intuitive navigation for users of varying levels of expertise. + +### Compatibility: +Compatibility with the Bybit exchange API for seamless order execution. +The software supports popular web browsers for optimal accessibility. + +### Maintainability: +The software is modular and well-documented, facilitating ease of maintenance and updates. +Codebase adheres to best practices and coding standards for maintainability. \ No newline at end of file