360 lines
11 KiB
Markdown
360 lines
11 KiB
Markdown
|
|
# Configuration Guide
|
||
|
|
|
||
|
|
This guide explains how to configure Crypto Trader to suit your needs.
|
||
|
|
|
||
|
|
## Configuration Files
|
||
|
|
|
||
|
|
Configuration files are stored in `~/.config/crypto_trader/` following the XDG Base Directory Specification.
|
||
|
|
|
||
|
|
### Main Configuration
|
||
|
|
|
||
|
|
The main configuration file is `config.yaml`. It contains:
|
||
|
|
|
||
|
|
- Database settings
|
||
|
|
- Logging configuration
|
||
|
|
- Paper trading settings
|
||
|
|
- Update preferences
|
||
|
|
- Notification settings
|
||
|
|
- Backtesting defaults
|
||
|
|
|
||
|
|
### Logging Configuration
|
||
|
|
|
||
|
|
Logging settings are in `logging.yaml`. You can configure:
|
||
|
|
|
||
|
|
- Log levels (DEBUG, INFO, WARNING, ERROR)
|
||
|
|
- Log file location
|
||
|
|
- Log rotation settings
|
||
|
|
- Retention policies
|
||
|
|
|
||
|
|
## Exchange Configuration
|
||
|
|
|
||
|
|
### Adding Exchange API Keys via UI
|
||
|
|
|
||
|
|
1. Open the application
|
||
|
|
2. Navigate to the **Settings** tab
|
||
|
|
3. In the **Exchanges** section, click **Add Exchange**
|
||
|
|
4. Enter exchange details:
|
||
|
|
- **Exchange Name**: Name of the exchange (e.g., Coinbase)
|
||
|
|
- **API Key**: Your exchange API key
|
||
|
|
- **API Secret**: Your exchange API secret
|
||
|
|
- **Use Sandbox/Testnet**: Enable for testing
|
||
|
|
- **Read-Only Mode**: Recommended for safety (prevents trading)
|
||
|
|
- **Enabled**: Enable the exchange connection
|
||
|
|
5. Click **Save**
|
||
|
|
6. Test the connection using **Test Connection** button
|
||
|
|
|
||
|
|
### Editing Exchange Settings
|
||
|
|
|
||
|
|
1. Select an exchange from the exchanges table
|
||
|
|
2. Click **Edit Exchange**
|
||
|
|
3. Update API keys or settings as needed
|
||
|
|
4. Click **Save**
|
||
|
|
|
||
|
|
### Managing Exchanges
|
||
|
|
|
||
|
|
The Settings page provides comprehensive exchange management:
|
||
|
|
|
||
|
|
- **Status Indicators**: Each exchange shows a color-coded status indicator:
|
||
|
|
- Green: Enabled and connected
|
||
|
|
- Gray: Disabled
|
||
|
|
- Red: Error state
|
||
|
|
- **Test Connection**: Click the checkmark icon to test the connection
|
||
|
|
- You'll receive a notification with detailed connection status
|
||
|
|
- Success: Green notification
|
||
|
|
- Warning: Yellow notification with details
|
||
|
|
- Error: Red notification with error message
|
||
|
|
- **Edit Exchange**: Click the pencil icon to edit exchange settings
|
||
|
|
- **Delete Exchange**: Click the trash icon to delete (removes API keys)
|
||
|
|
- Confirmation dialog will appear
|
||
|
|
- You'll receive a success notification when deleted
|
||
|
|
|
||
|
|
### API Key Security
|
||
|
|
|
||
|
|
- API keys are encrypted before storage
|
||
|
|
- Use read-only keys when possible
|
||
|
|
- Enable IP whitelisting on your exchange account
|
||
|
|
- Never share your API keys
|
||
|
|
|
||
|
|
## Paper Trading Configuration
|
||
|
|
|
||
|
|
Paper trading settings can be configured in the Settings page:
|
||
|
|
|
||
|
|
1. Navigate to **Settings** page
|
||
|
|
2. Click on **Paper Trading** tab
|
||
|
|
3. Configure:
|
||
|
|
- **Initial Capital ($)**: Starting capital in USD (default: $100)
|
||
|
|
- **Fee Model (Exchange)**: Select which exchange's fee structure to simulate
|
||
|
|
4. Click **Save Settings**
|
||
|
|
5. You'll receive a success notification when settings are saved
|
||
|
|
|
||
|
|
### Fee Exchange Models
|
||
|
|
|
||
|
|
Choose from available exchange fee models:
|
||
|
|
|
||
|
|
| Exchange | Maker Fee | Taker Fee | Best For |
|
||
|
|
|----------|-----------|-----------|----------|
|
||
|
|
| **Default** | 0.10% | 0.10% | General testing |
|
||
|
|
| **Coinbase** | 0.40% | 0.60% | Conservative estimates |
|
||
|
|
| **Kraken** | 0.16% | 0.26% | Moderate fee simulation |
|
||
|
|
| **Binance** | 0.10% | 0.10% | Low-fee simulation |
|
||
|
|
|
||
|
|
The fee rates display shows your current maker fee, taker fee, and estimated round-trip cost.
|
||
|
|
|
||
|
|
### Resetting Paper Account
|
||
|
|
|
||
|
|
To reset your paper trading account (closes all positions and resets balance):
|
||
|
|
|
||
|
|
1. Navigate to **Settings** > **Paper Trading** tab
|
||
|
|
2. Click **Reset Paper Account** button
|
||
|
|
3. Confirm the reset in the dialog
|
||
|
|
4. All positions will be closed and balance reset to initial capital
|
||
|
|
5. You'll receive a success notification when complete
|
||
|
|
|
||
|
|
**Warning**: This action cannot be undone. All paper trading history will be preserved, but positions and balance will be reset.
|
||
|
|
|
||
|
|
## Data Provider Configuration
|
||
|
|
|
||
|
|
Data providers are used to fetch real-time pricing data for paper trading, backtesting, and ML training. They work independently of exchange integrations and don't require API keys.
|
||
|
|
|
||
|
|
### Configuring Providers
|
||
|
|
|
||
|
|
1. Navigate to **Settings** page
|
||
|
|
2. Click on **Data Providers** tab
|
||
|
|
3. Configure provider settings:
|
||
|
|
|
||
|
|
#### Primary Providers (CCXT)
|
||
|
|
|
||
|
|
Primary providers use CCXT to connect to cryptocurrency exchanges:
|
||
|
|
- **Kraken**: Default priority 1 (tried first)
|
||
|
|
- **Coinbase**: Default priority 2
|
||
|
|
- **Binance**: Default priority 3
|
||
|
|
|
||
|
|
Each provider can be:
|
||
|
|
- **Enabled/Disabled**: Toggle using the switch
|
||
|
|
- **Reordered**: Use up/down arrows to change priority order
|
||
|
|
- **Monitored**: View health status, response times, and success rates
|
||
|
|
|
||
|
|
#### Fallback Provider
|
||
|
|
|
||
|
|
**CoinGecko** is used as a fallback when primary providers are unavailable:
|
||
|
|
- Free tier API (no authentication required)
|
||
|
|
- Lower rate limits than primary providers
|
||
|
|
- Provides basic price data
|
||
|
|
|
||
|
|
#### Cache Settings
|
||
|
|
|
||
|
|
Configure caching behavior:
|
||
|
|
- **Ticker TTL (seconds)**: How long to cache ticker data (default: 2 seconds)
|
||
|
|
- **OHLCV TTL (seconds)**: How long to cache candlestick data (default: 60 seconds)
|
||
|
|
|
||
|
|
### Provider Status
|
||
|
|
|
||
|
|
The Data Providers tab shows:
|
||
|
|
- **Active Provider**: Currently used provider
|
||
|
|
- **Health Status**: Color-coded status for each provider:
|
||
|
|
- Green: Healthy and working
|
||
|
|
- Yellow: Degraded performance
|
||
|
|
- Red: Unhealthy or unavailable
|
||
|
|
- **Response Times**: Average response time for each provider
|
||
|
|
- **Success/Failure Counts**: Historical performance metrics
|
||
|
|
|
||
|
|
### Automatic Failover
|
||
|
|
|
||
|
|
The system automatically:
|
||
|
|
- Monitors provider health
|
||
|
|
- Switches to the next available provider if current one fails
|
||
|
|
- Opens circuit breakers for repeatedly failing providers
|
||
|
|
- Retries failed providers after a timeout period
|
||
|
|
|
||
|
|
### Troubleshooting Providers
|
||
|
|
|
||
|
|
If all providers fail:
|
||
|
|
1. Check your internet connection
|
||
|
|
2. Verify firewall isn't blocking connections
|
||
|
|
3. Check provider status in the Settings tab
|
||
|
|
4. Try enabling/disabling specific providers
|
||
|
|
5. Reset provider metrics if needed
|
||
|
|
|
||
|
|
## Risk Management Settings
|
||
|
|
|
||
|
|
Configure risk limits in the Settings page:
|
||
|
|
|
||
|
|
1. Navigate to **Settings** page
|
||
|
|
2. Click on **Risk Management** tab
|
||
|
|
3. Configure the following settings:
|
||
|
|
- **Max Drawdown Limit (%)**: Maximum portfolio drawdown before trading stops
|
||
|
|
- **Daily Loss Limit (%)**: Maximum daily loss percentage
|
||
|
|
- **Default Position Size (%)**: Default percentage of capital to use per trade
|
||
|
|
4. Click **Save Risk Settings**
|
||
|
|
5. You'll receive a success notification when settings are saved
|
||
|
|
|
||
|
|
Settings are validated before saving and you'll see error messages if values are invalid.
|
||
|
|
|
||
|
|
## Data Storage
|
||
|
|
|
||
|
|
Data is stored in `~/.local/share/crypto_trader/`:
|
||
|
|
|
||
|
|
- `trading.db` - Legacy file (removed)
|
||
|
|
- `historical/` - Historical market data
|
||
|
|
- `logs/` - Application logs
|
||
|
|
|
||
|
|
### Database Options
|
||
|
|
|
||
|
|
### Database Options
|
||
|
|
|
||
|
|
**PostgreSQL (Required)**:
|
||
|
|
- All production data is stored in PostgreSQL.
|
||
|
|
- Requires a running PostgreSQL instance.
|
||
|
|
- Configure connection in `config.yaml`.
|
||
|
|
|
||
|
|
**SQLite (Internal)**:
|
||
|
|
- Used internally for unit testing only.
|
||
|
|
- No configuration required for users.
|
||
|
|
|
||
|
|
## Redis Configuration
|
||
|
|
|
||
|
|
Redis is used for distributed state management, ensuring autopilot state persists across restarts and preventing duplicate instances.
|
||
|
|
|
||
|
|
### Default Settings
|
||
|
|
|
||
|
|
Redis settings are configured in `config.yaml`:
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
redis:
|
||
|
|
host: "127.0.0.1"
|
||
|
|
port: 6379
|
||
|
|
db: 0
|
||
|
|
password: null # Set if Redis requires authentication
|
||
|
|
socket_connect_timeout: 5
|
||
|
|
```
|
||
|
|
|
||
|
|
### Environment Variables
|
||
|
|
|
||
|
|
You can also configure Redis via environment variables:
|
||
|
|
- `REDIS_HOST` - Redis server hostname
|
||
|
|
- `REDIS_PORT` - Redis server port
|
||
|
|
- `REDIS_PASSWORD` - Redis password (if required)
|
||
|
|
|
||
|
|
### Verifying Redis Connection
|
||
|
|
|
||
|
|
Run the verification script:
|
||
|
|
```bash
|
||
|
|
python scripts/verify_redis.py
|
||
|
|
```
|
||
|
|
|
||
|
|
## Celery Configuration (Background Tasks)
|
||
|
|
|
||
|
|
Celery handles long-running tasks like ML model training in the background.
|
||
|
|
|
||
|
|
### Starting the Worker
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# From project root (with virtualenv activated)
|
||
|
|
celery -A src.worker.app worker --loglevel=info
|
||
|
|
```
|
||
|
|
|
||
|
|
Or use the helper script:
|
||
|
|
```bash
|
||
|
|
./scripts/start_all.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
### Task Queues
|
||
|
|
|
||
|
|
Tasks are routed to specific queues:
|
||
|
|
- `ml_training` - Model training and data bootstrapping
|
||
|
|
- `reporting` - Report generation
|
||
|
|
- `celery` - Default queue
|
||
|
|
|
||
|
|
## ML Model Training Configuration
|
||
|
|
|
||
|
|
Configure how the autopilot ML model is trained via the Settings page.
|
||
|
|
|
||
|
|
### Training Data Configuration
|
||
|
|
|
||
|
|
Navigate to **Settings** > **Autopilot** tab to access these settings:
|
||
|
|
|
||
|
|
| Setting | Description | Recommended |
|
||
|
|
|---------|-------------|-------------|
|
||
|
|
| **Historical Data (days)** | Amount of historical data to fetch for training | 90-365 days |
|
||
|
|
| **Timeframe** | OHLCV candle timeframe for training data | 1h (balanced) |
|
||
|
|
| **Min Samples per Strategy** | Minimum samples required per strategy | 30+ |
|
||
|
|
| **Training Symbols** | Cryptocurrencies to include in training | 5-10 major coins |
|
||
|
|
|
||
|
|
### Setting Training Symbols
|
||
|
|
|
||
|
|
1. Navigate to **Settings** > **Autopilot** tab
|
||
|
|
2. In the **Training Data Configuration** section, find **Training Symbols**
|
||
|
|
3. Click to add/remove symbols from the multi-select dropdown
|
||
|
|
4. Common symbols: BTC/USD, ETH/USD, SOL/USD, XRP/USD, ADA/USD
|
||
|
|
5. Click **Save Bootstrap Config** to persist your changes
|
||
|
|
|
||
|
|
### Triggering Model Training
|
||
|
|
|
||
|
|
1. Click **Retrain Model** button in the Model Management section
|
||
|
|
2. A progress bar will appear showing:
|
||
|
|
- Data fetching progress (20-60%)
|
||
|
|
- Training progress (70-100%)
|
||
|
|
3. Training typically takes 30-60 seconds depending on data volume
|
||
|
|
4. Upon completion, the model card updates to show:
|
||
|
|
- "Global Model Trained" badge
|
||
|
|
- Number of strategies and features
|
||
|
|
- Training accuracy
|
||
|
|
- Which symbols the model was trained on
|
||
|
|
|
||
|
|
### Training Progress Persistence
|
||
|
|
|
||
|
|
Training progress persists across page navigation:
|
||
|
|
- If you navigate away during training, progress resumes on return
|
||
|
|
- The training task ID is stored in browser localStorage
|
||
|
|
- On task completion or failure, the task ID is cleared
|
||
|
|
|
||
|
|
### Model Management
|
||
|
|
|
||
|
|
- **Retrain Model**: Triggers retraining with current configuration
|
||
|
|
- **Reset Model**: Deletes all saved model files (confirmation required)
|
||
|
|
|
||
|
|
### Troubleshooting Training
|
||
|
|
|
||
|
|
If training fails:
|
||
|
|
1. Check that Redis and Celery are running
|
||
|
|
2. Review Celery worker logs: `tail -f celery.log`
|
||
|
|
3. Ensure sufficient historical data is available
|
||
|
|
4. Try reducing the number of training symbols
|
||
|
|
5. Check backend logs for error details
|
||
|
|
|
||
|
|
### Monitoring Tasks
|
||
|
|
|
||
|
|
The API provides endpoints to monitor background tasks:
|
||
|
|
- `POST /api/autopilot/intelligent/retrain` - Starts training, returns task ID
|
||
|
|
- `GET /api/autopilot/tasks/{task_id}` - Check task status
|
||
|
|
|
||
|
|
## Environment Variables
|
||
|
|
|
||
|
|
You can override configuration using environment variables:
|
||
|
|
|
||
|
|
- `CRYPTO_TRADER_CONFIG_DIR` - Custom config directory
|
||
|
|
- `CRYPTO_TRADER_DATA_DIR` - Custom data directory
|
||
|
|
- `CRYPTO_TRADER_LOG_DIR` - Custom log directory
|
||
|
|
- `DB_PASSWORD` - Database password (for PostgreSQL)
|
||
|
|
- `REDIS_HOST` - Redis server hostname
|
||
|
|
- `REDIS_PORT` - Redis server port
|
||
|
|
- `REDIS_PASSWORD` - Redis password
|
||
|
|
|
||
|
|
## Backup and Restore
|
||
|
|
|
||
|
|
### Backup
|
||
|
|
|
||
|
|
1. Stop the application and Celery workers
|
||
|
|
2. Backup PostgreSQL database
|
||
|
|
3. Copy the entire `~/.local/share/crypto_trader/` directory
|
||
|
|
4. Copy `~/.config/crypto_trader/` directory
|
||
|
|
5. (Optional) Export Redis data with `redis-cli SAVE`
|
||
|
|
|
||
|
|
### Restore
|
||
|
|
|
||
|
|
1. Stop the application
|
||
|
|
2. Restore PostgreSQL database
|
||
|
|
3. Replace the directories with your backup
|
||
|
|
4. Restart Redis, Celery worker, and application
|
||
|
|
|