80 lines
4.6 KiB
Markdown
80 lines
4.6 KiB
Markdown
# Project Review and Recommendations
|
|
|
|
This review provides an analysis of the current state of the automated trading bot project, proposes specific code improvements, and identifies files that appear to be unused or are one-off utilities that could be reorganized.
|
|
|
|
The project is a well-structured, multi-process Python application for crypto trading. It has a clear separation of concerns between data fetching, strategy execution, and trade management. The use of `multiprocessing` and a centralized `main_app.py` orchestrator is a solid architectural choice.
|
|
|
|
The following sections detail recommendations for improving configuration management, code structure, and robustness, along with a list of files recommended for cleanup.
|
|
|
|
---
|
|
|
|
## Proposed Code Changes
|
|
|
|
### 1. Centralize Configuration
|
|
|
|
- **Issue:** Key configuration variables like `WATCHED_COINS` and `required_timeframes` are hardcoded in `main_app.py`. This makes them difficult to change without modifying the source code.
|
|
- **Proposal:**
|
|
- Create a central configuration file, e.g., `_data/config.json`.
|
|
- Move `WATCHED_COINS` and `required_timeframes` into this new file.
|
|
- Load this configuration in `main_app.py` at startup.
|
|
- **Benefit:** Decouples configuration from code, making the application more flexible and easier to manage.
|
|
|
|
### 2. Refactor `main_app.py` for Clarity
|
|
|
|
- **Issue:** `main_app.py` is long and handles multiple responsibilities: process orchestration, dashboard rendering, and data reading.
|
|
- **Proposal:**
|
|
- **Abstract Process Management:** The functions for running subprocesses (e.g., `run_live_candle_fetcher`, `run_resampler_job`) contain repetitive logic for logging, shutdown handling, and process looping. This could be abstracted into a generic `ProcessRunner` class.
|
|
- **Create a Dashboard Class:** The complex dashboard rendering logic could be moved into a separate `Dashboard` class to improve separation of concerns and make the main application loop cleaner.
|
|
- **Benefit:** Improves code readability, reduces duplication, and makes the application easier to maintain and extend.
|
|
|
|
### 3. Improve Project Structure
|
|
|
|
- **Issue:** The root directory is cluttered with numerous Python scripts, making it difficult to distinguish between core application files, utility scripts, and old/example files.
|
|
- **Proposal:**
|
|
- Create a `scripts/` directory and move all one-off utility and maintenance scripts into it.
|
|
- Consider creating a `src/` or `app/` directory to house the core application source code (`main_app.py`, `trade_executor.py`, etc.), separating it clearly from configuration, data, and documentation.
|
|
- **Benefit:** A cleaner, more organized project structure that is easier for new developers to understand.
|
|
|
|
### 4. Enhance Robustness and Error Handling
|
|
|
|
- **Issue:** The agent loading in `trade_executor.py` relies on discovering environment variables by a naming convention (`_AGENT_PK`). This is clever but can be brittle if environment variables are named incorrectly.
|
|
- **Proposal:**
|
|
- Explicitly define the agent names and their corresponding environment variable keys in the proposed `_data/config.json` file. The `trade_executor` would then load only the agents specified in the configuration.
|
|
- **Benefit:** Makes agent configuration more explicit and less prone to errors from stray environment variables.
|
|
|
|
---
|
|
|
|
## Identified Unused/Utility Files
|
|
|
|
The following files were identified as likely being unused by the core application, being obsolete, or serving as one-off utilities. It is recommended to **move them to a `scripts/` directory** or **delete them** if they are obsolete.
|
|
|
|
### Obsolete / Old Versions:
|
|
- `data_fetcher_old.py`
|
|
- `market_old.py`
|
|
- `base_strategy.py` (The one in the root directory; the one in `strategies/` is used).
|
|
|
|
### One-Off Utility Scripts (Recommend moving to `scripts/`):
|
|
- `!migrate_to_sqlite.py`
|
|
- `import_csv.py`
|
|
- `del_market_cap_tables.py`
|
|
- `fix_timestamps.py`
|
|
- `list_coins.py`
|
|
- `create_agent.py`
|
|
|
|
### Examples / Unused Code:
|
|
- `basic_ws.py` (Appears to be an example file).
|
|
- `backtester.py`
|
|
- `strategy_sma_cross.py` (A strategy file in the root, not in the `strategies` folder).
|
|
- `strategy_template.py`
|
|
|
|
### Standalone / Potentially Unused Core Files:
|
|
The following files seem to have their logic already integrated into the main multi-process application. They might be remnants of a previous architecture and may not be needed as standalone scripts.
|
|
- `address_monitor.py`
|
|
- `position_monitor.py`
|
|
- `trade_log.py`
|
|
- `wallet_data.py`
|
|
- `whale_tracker.py`
|
|
|
|
### Data / Log Files (Recommend archiving or deleting):
|
|
- `hyperliquid_wallet_data_*.json` (These appear to be backups or logs).
|