@@ -40,44 +40,67 @@ jobs:
40
40
python -m pip install --upgrade pip
41
41
pip install MetaTrader5
42
42
43
- - name : Setup virtual display
43
+ - name : Install Xvfb (Virtual Display)
44
44
run : |
45
- # Install Chocolatey if not already installed
46
- if (-not (Get-Command choco -ErrorAction SilentlyContinue)) {
47
- Set-ExecutionPolicy Bypass -Scope Process -Force
48
- [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
49
- Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
50
- }
51
-
52
- # Install VcXsrv Windows X Server
53
- choco install vcxsrv -y
54
-
55
- # Start VcXsrv in background
56
- Start-Process "C:\Program Files\VcXsrv\vcxsrv.exe" -ArgumentList "-multiwindow", "-ac", "-terminate", "-lesspointer", "-wgl", "-dpi auto"
45
+ choco install -y xvfb
57
46
58
- # Set DISPLAY environment variable
59
- [Environment]::SetEnvironmentVariable("DISPLAY", "127.0.0.1:0.0", "Process")
47
+ - name : Start MT5 with Virtual Display
48
+ run : |
49
+ # Set display variable to use virtual display
50
+ $env:DISPLAY = ":1"
60
51
61
- Write-Host "Virtual display configured with DISPLAY=127.0.0.1:0.0"
52
+ # Start Xvfb
53
+ Start-Process -FilePath "C:\ProgramData\chocolatey\bin\xvfb.exe" -ArgumentList "-ac :1 -screen 0 1280x1024x24" -PassThru
62
54
Start-Sleep -Seconds 5
63
-
64
- - name : Run MT5 terminal with desktop parameter
65
- run : |
66
- # Kill any existing MT5 instances
67
- taskkill /F /IM terminal64.exe 2>$null
68
- Start-Sleep -Seconds 3
69
55
70
- # Start MT5 with the /portable parameter
56
+ # Start MT5 with virtual display
71
57
$process = Start-Process -FilePath "C:\Program Files\MetaTrader 5\terminal64.exe" -ArgumentList "/portable" -PassThru
72
58
$processId = $process.Id
73
59
Write-Host "Started MetaTrader 5 terminal with PID $processId using virtual display"
74
- Start-Sleep -Seconds 30
60
+ Start-Sleep -Seconds 45 # Give more time to initialize
75
61
76
62
- name : Test MT5 initialization
77
- run : >
78
- python -c "import sys, MetaTrader5 as mt5;
79
- print(f'MT5 version: {mt5.__version__}');
80
- print('Initializing...');
81
- result = mt5.initialize(path='C:\\\\Program Files\\\\MetaTrader 5\\\\terminal64.exe', timeout=60000);
82
- print(f'Result: {result}, Error: {mt5.last_error()}');
83
- sys.exit(0)"
63
+ run : |
64
+ # Set display variable to use virtual display
65
+ $env:DISPLAY = ":1"
66
+
67
+ python -c "
68
+ import sys, os, time
69
+ import MetaTrader5 as mt5
70
+
71
+ print(f'MT5 version: {mt5.__version__}')
72
+ print('Display environment:', os.environ.get('DISPLAY'))
73
+ print('Initializing...')
74
+
75
+ # Try initialization with increased timeout
76
+ result = mt5.initialize(
77
+ path='C:\\Program Files\\MetaTrader 5\\terminal64.exe',
78
+ login=0,
79
+ password='',
80
+ server='',
81
+ timeout=120000
82
+ )
83
+
84
+ print(f'Result: {result}, Error code: {mt5.last_error()}')
85
+
86
+ if not result:
87
+ error_code = mt5.last_error()
88
+ error_messages = {
89
+ 10001: 'Connection error',
90
+ 10002: 'Reconnection error',
91
+ 10003: 'Connection timeout',
92
+ 10004: 'Internal error',
93
+ 10005: 'Invalid version',
94
+ 10006: 'Invalid account',
95
+ 10007: 'Unsupported trading mode',
96
+ 10008: 'No connection'
97
+ }
98
+ error_desc = error_messages.get(error_code, 'Unknown error')
99
+ print(f'Detailed error: {error_desc}')
100
+ sys.exit(1)
101
+ else:
102
+ print('MT5 initialized successfully')
103
+ print(f'Terminal info: {mt5.terminal_info()}')
104
+ mt5.shutdown()
105
+ sys.exit(0)
106
+ "
0 commit comments