# MT5 Expert Advisor Operation Guide

## Configuration Settings
```mql5
// RETRY SETTINGS
input int    MaxRetries = 3;       // Number of send attempts
input int    InitialDelayMs = 1000; // First retry delay (milliseconds)

// API SETTINGS
input string ApiBaseUrl = "http://market-price.insightbull.io";
input string ApiKey = "";
```

## Windows Setup with Nginx Proxy ✅ **RECOMMENDED**

### Your Current Working Setup
1. **Start Node.js server**:
   ```bash
   node src/server.js
   ```

2. **Start Nginx proxy** (run as administrator):
   ```bash
   powershell -ExecutionPolicy Bypass -Command "cd nginx-1.24.0; .\nginx.exe"
   # OR: Right-click nginx.exe → "Run as administrator"
   ```

3. **Configure MT5 EA**:
   - `ApiBaseUrl`: Use `http://market-price.insightbull.io` (nginx proxy)
   - This provides better performance and reliability

4. **Stop services**:
   ```bash
   # Stop Nginx
   taskkill /f /im nginx.exe

   # Stop Node.js (Ctrl+C in terminal or)
   taskkill /f /im node.exe
   ```

### Alternative Using Batch Files
```bash
# Start everything (run as administrator)
start_proxy.bat

# Stop everything
stop_proxy.bat
```

### Direct Connection (without Nginx)
If not using Nginx proxy:
- `ApiBaseUrl`: Use `http://localhost:3001`
- `ApiBaseUrl`: Use `http://127.0.0.1:3001`

## Failure Recovery Behavior
1. **Retry Sequence**  
   - Attempt 1: Immediate send  
   - Attempt 2: 1 second delay  
   - Attempt 3: 2 second delay  
   - Attempt 4: 4 second delay  

2. **Permanent Failures**  
   After exhausting retries:  
   ```mql5
   Print("Permanent failure: ", result, " - ", error);
   // TODO: Implement dead letter queue storage
   ```

3. **Critical Errors**  
   - Network failures: Retried  
   - 4xx Client errors: Not retried  
   - 5xx Server errors: Retried  

## Data Precision
All numeric values use MT5's `double` type (15-digit precision) mapped to:
```javascript
// API expects DECIMAL(18,15)
Joi.number().precision(15)
