MQL5-Google-Onedrive/docs/Startup_Automation_Guide.md

374 lines
9.4 KiB
Markdown
Raw Permalink Normal View History

# MQL5 Trading Automation - Startup Guide
## Overview
This repository includes a comprehensive automation system for starting up all components required for automated forex trading with MT5 (MetaTrader 5) terminal and custom scripts. The system supports **Windows**, **Linux**, and **Windows Subsystem for Linux (WSL)**.
## Components
### 1. **Python Orchestrator** (`scripts/startup_orchestrator.py`)
Advanced Python script that manages the startup sequence of all components with:
- Configurable component startup order
- Proper initialization delays between components
- Comprehensive logging
- Process monitoring
- Error handling and recovery
### 2. **Windows Batch Script** (`scripts/startup.bat`)
Simple Windows batch file for basic automation:
- Easy to use for Windows users
- Minimal dependencies
- Suitable for Task Scheduler
- Good for quick testing
### 3. **PowerShell Script** (`scripts/startup.ps1`)
Advanced Windows automation with:
- Better error handling than batch files
- Colored output and logging
- Scheduled task creation
- Administrator privilege management
- Dry-run mode for testing
### 4. **Linux/WSL Shell Script** (`scripts/startup.sh`)
Bash script for Linux and WSL environments:
- systemd service integration
- Cron job setup
- Wine support for MT5 on Linux
- WSL detection and Windows interop
### 5. **Configuration File** (`config/startup_config.json`)
JSON configuration for customizing startup behavior:
- Define components to start
- Set initialization delays
- Configure platform-specific settings
- Add custom scripts
## Quick Start
### Windows Users
#### Option 1: Using Batch Script (Simplest)
```cmd
cd C:\path\to\MQL5-Google-Onedrive
scripts\startup.bat
```
#### Option 2: Using PowerShell (Recommended)
```powershell
cd C:\path\to\MQL5-Google-Onedrive
powershell -ExecutionPolicy Bypass -File scripts\startup.ps1
```
#### Option 3: Using Python Orchestrator
```cmd
cd C:\path\to\MQL5-Google-Onedrive
python scripts\startup_orchestrator.py
```
### Linux/WSL Users
```bash
cd /path/to/MQL5-Google-Onedrive
./scripts/startup.sh
```
## Setting Up Automatic Startup
### Windows - Task Scheduler
#### Using PowerShell (Automated)
```powershell
cd C:\path\to\MQL5-Google-Onedrive
powershell -ExecutionPolicy Bypass -File scripts\startup.ps1 -CreateScheduledTask
```
#### Manual Setup
1. Open **Task Scheduler** (`taskschd.msc`)
2. Click **Create Task** (not "Create Basic Task")
3. **General** tab:
- Name: `MQL5 Trading Automation`
- Check "Run with highest privileges"
- Configure for: Windows 10
4. **Triggers** tab:
- New trigger
- Begin the task: **At startup**
- Delay task for: 30 seconds (recommended)
5. **Actions** tab:
- Action: Start a program
- Program/script: `powershell.exe`
- Arguments: `-ExecutionPolicy Bypass -File "C:\path\to\MQL5-Google-Onedrive\scripts\startup.ps1" -NoWait`
- Start in: `C:\path\to\MQL5-Google-Onedrive`
6. **Conditions** tab:
- Uncheck "Start only if on AC power"
- Check "Start whether user is logged on or not"
7. Click OK and enter your password
### Windows - Startup Folder
For user-level startup (simpler but runs only after login):
```cmd
# Create shortcut
# Target: powershell.exe -ExecutionPolicy Bypass -File "C:\path\to\MQL5-Google-Onedrive\scripts\startup.ps1"
# Start in: C:\path\to\MQL5-Google-Onedrive
# Copy to startup folder
copy startup.lnk "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\"
```
### Linux - systemd Service
```bash
cd /path/to/MQL5-Google-Onedrive
./scripts/startup.sh --setup-systemd
```
This creates a systemd service that runs on boot. Control it with:
```bash
sudo systemctl start mql5-trading-automation # Start now
sudo systemctl stop mql5-trading-automation # Stop
sudo systemctl status mql5-trading-automation # Check status
sudo systemctl disable mql5-trading-automation # Disable auto-start
```
### Linux - Cron Job
Alternative to systemd:
```bash
cd /path/to/MQL5-Google-Onedrive
./scripts/startup.sh --setup-cron
```
## Configuration
### Editing Startup Components
Edit `config/startup_config.json` to customize what starts:
```json
{
"components": [
{
"name": "My Custom Script",
"executable": "python3",
"args": ["path/to/my_script.py", "--arg1", "value1"],
"working_dir": null,
"wait_seconds": 5,
"required": false,
"platform_specific": null
}
]
}
```
### Component Options
- **name**: Display name for logging
- **executable**: Path to executable (use full path or ensure it's in PATH)
- **args**: Command-line arguments as array
- **working_dir**: Working directory (null = repository root)
- **wait_seconds**: Seconds to wait after starting before continuing
- **required**: If true, abort startup if this component fails
- **platform_specific**: "windows", "linux", or null for all platforms
### MT5 Terminal Paths
The scripts automatically search common MT5 installation locations:
**Windows:**
- `C:\Program Files\Exness Terminal\terminal64.exe`
- `C:\Program Files\MetaTrader 5\terminal64.exe`
- `%APPDATA%\MetaQuotes\Terminal\terminal64.exe`
**WSL:**
- `/mnt/c/Program Files/Exness Terminal/terminal64.exe`
- `/mnt/c/Program Files/MetaTrader 5/terminal64.exe`
To add custom paths, edit the configuration file or the scripts directly.
## Usage Examples
### Testing (Dry Run)
**PowerShell:**
```powershell
.\scripts\startup.ps1 -DryRun
```
**Python:**
```bash
python scripts/startup_orchestrator.py --dry-run
```
### Monitoring Processes
**Python (monitor for 1 hour):**
```bash
python scripts/startup_orchestrator.py --monitor 3600
```
### Creating Default Config
```bash
python scripts/startup_orchestrator.py --create-config
```
### Custom Config File
```bash
python scripts/startup_orchestrator.py --config path/to/custom_config.json
```
## Logs
All startup activity is logged to the `logs/` directory:
- `logs/startup_YYYYMMDD_HHMMSS.log` - Python orchestrator logs
- `logs/startup_ps_YYYYMMDD_HHMMSS.log` - PowerShell logs
- Logs are kept for reference and troubleshooting
## Troubleshooting
### Python Not Found
**Windows:**
The startup scripts now automatically detect Python from multiple locations:
- Standard PATH installations
- Windows Store Python (recommended for easy installation)
- Program Files installations
If Python is not detected, install it from:
```cmd
# Option 1: Microsoft Store (easiest)
# Search for "Python" in Microsoft Store and install Python 3.8 or higher
# Python 3.12 or later is recommended for best compatibility
# Option 2: Official Python installer
# Download from https://www.python.org/downloads/
# Minimum version: Python 3.8
# During installation, check "Add Python to PATH"
```
After installation, the scripts will automatically find Python in:
- `%LOCALAPPDATA%\Microsoft\WindowsApps\python.exe` (Windows Store)
- `C:\Program Files\Python*\python.exe` (Standard installer)
- Any location in your PATH environment variable
**Linux/WSL:**
```bash
sudo apt update
sudo apt install python3 python3-pip
```
### MT5 Terminal Not Starting
1. Verify MT5 is installed
2. Check the installation path
3. Update the path in `config/startup_config.json`
4. Try starting MT5 manually first
5. Check Task Manager for existing MT5 processes
### PowerShell Execution Policy Error
```powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```
Or run with bypass:
```powershell
powershell -ExecutionPolicy Bypass -File scripts\startup.ps1
```
### Permission Denied (Linux)
```bash
chmod +x scripts/startup.sh
chmod +x scripts/startup_orchestrator.py
```
### WSL - Can't Start Windows MT5
Ensure WSL can access Windows files:
```bash
ls /mnt/c/Program\ Files/
```
If not available, check WSL configuration in `/etc/wsl.conf`.
## Advanced Features
### Email Notifications (Coming Soon)
Configure in `startup_config.json`:
```json
"notifications": {
"enabled": true,
"email": "your@email.com",
"smtp_server": "smtp.gmail.com",
"smtp_port": 587
}
```
### Webhook Integration (Coming Soon)
Send startup notifications to Slack, Discord, etc:
```json
"notifications": {
"enabled": true,
"webhook_url": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
}
```
### Restart on Failure
The orchestrator can be configured to automatically restart failed components:
```json
"settings": {
"max_startup_retries": 3,
"retry_delay_seconds": 30
}
```
## Integration with Existing Workflows
This automation system integrates with:
- **GitHub Actions** - CI/CD workflows in `.github/workflows/`
- **OneDrive Sync** - Automatic sync to OneDrive via rclone
- **MT5 Expert Advisors** - Automatically starts EA scripts
- **Custom Python Scripts** - Add your own trading logic
## System Requirements
### Minimum
- **OS**: Windows 10/11, Linux (Ubuntu 20.04+), WSL 2
- **Python**: 3.8 or higher
- **RAM**: 4 GB
- **Disk**: 1 GB free space
### Recommended
- **OS**: Windows 11 or Ubuntu 22.04 LTS
- **Python**: 3.10 or higher
- **RAM**: 8 GB
- **Disk**: 10 GB free space (for MT5 data and logs)
- **Network**: Stable internet connection
## Security Considerations
1. **Never commit** sensitive data (API keys, passwords) to the repository
2. Use environment variables for secrets
3. Secure MT5 account credentials
4. Review all scripts before running with elevated privileges
5. Keep Python and system packages updated
## Support
- **Issues**: Open an issue on GitHub
- **Email**: Lengkundee01.org@domain.com
- **WhatsApp**: [Agent community](https://chat.whatsapp.com/DYemXrBnMD63K55bjUMKYF)
## License
See [LICENSE](../LICENSE) file in the repository root.