31
31
Start-Process -FilePath .\mt5setup.exe -ArgumentList "/auto" -Wait
32
32
# Give installation some time to complete
33
33
Start-Sleep -Seconds 60
34
+
35
+ - name : Create MetaTrader configuration
36
+ run : |
37
+ # Create directory for MetaTrader configuration
38
+ $mt5ConfigDir = "C:\Users\runneradmin\AppData\Roaming\MetaQuotes\Terminal"
39
+ if (!(Test-Path $mt5ConfigDir)) {
40
+ New-Item -Path $mt5ConfigDir -ItemType Directory -Force
41
+ Write-Host "Created MetaTrader configuration directory: $mt5ConfigDir"
42
+ }
34
43
35
44
- name : Verify MetaTrader 5 Installation and Start Terminal
36
45
run : |
@@ -45,29 +54,98 @@ jobs:
45
54
Write-Host "Listing MetaTrader 5 installation directory:"
46
55
Get-ChildItem "C:\Program Files\MetaTrader 5"
47
56
48
- # Start MT5 terminal and give it time to initialize
49
- Start-Process -FilePath $mtPath -ArgumentList "/portable" -PassThru
50
- Write-Host "Started MetaTrader 5 terminal"
51
- Start-Sleep -Seconds 30
57
+ # Start MT5 terminal without UI and give it time to initialize
58
+ # Use /portable mode to avoid login requirements
59
+ $process = Start-Process -FilePath $mtPath -ArgumentList "/portable", "/skipupdate" -PassThru -WindowStyle Hidden
60
+ $pid = $process.Id
61
+ Write-Host "Started MetaTrader 5 terminal with PID: $pid"
62
+
63
+ # Give more time for initialization
64
+ Write-Host "Waiting 60 seconds for MetaTrader 5 to initialize..."
65
+ Start-Sleep -Seconds 60
52
66
53
- # Verify MT5 process is running
54
- $process = Get-Process "terminal64" -ErrorAction SilentlyContinue
55
- if ($process) {
56
- Write-Host "MetaTrader 5 terminal is running with PID: $($process.Id)"
57
- } else {
58
- Write-Error "MetaTrader 5 terminal is not running."
67
+ # Verify MT5 process is still running
68
+ try {
69
+ $runningProcess = Get-Process -Id $pid -ErrorAction Stop
70
+ Write-Host "MetaTrader 5 terminal is still running with PID: $pid"
71
+ } catch {
72
+ Write-Error "MetaTrader 5 terminal is no longer running. It may have crashed."
73
+ exit 1
59
74
}
60
75
61
76
- name : Install Python dependencies
62
77
run : |
63
78
python -m pip install --upgrade pip
64
79
pip install MetaTrader5
65
80
66
- - name : Test MetaTrader5 connection
81
+ - name : Debug MetaTrader environment
82
+ run : |
83
+ # Check running processes
84
+ Write-Host "Checking for MetaTrader processes:"
85
+ Get-Process | Where-Object { $_.Name -like "*terminal*" -or $_.Name -like "*meta*" } | Format-Table Id, Name, Path, StartTime
86
+
87
+ # Check MT5 installation directories
88
+ Write-Host "Checking MetaTrader installation directories:"
89
+ if (Test-Path "C:\Program Files\MetaTrader 5") {
90
+ Get-ChildItem "C:\Program Files\MetaTrader 5" -Recurse | Select-Object -First 30 | Format-Table FullName
91
+ }
92
+
93
+ # Check for MetaQuotes directories in AppData
94
+ Write-Host "Checking AppData for MetaQuotes directories:"
95
+ if (Test-Path "C:\Users\runneradmin\AppData\Roaming\MetaQuotes") {
96
+ Get-ChildItem "C:\Users\runneradmin\AppData\Roaming\MetaQuotes" -Recurse | Select-Object -First 30 | Format-Table FullName
97
+ }
98
+
99
+ - name : Test MetaTrader5 connection with retry
67
100
run : |
68
101
# Print environment information
69
102
Write-Host "Environment variables:"
70
103
Get-ChildItem Env: | Format-Table -AutoSize
71
104
72
- # Run the test with diagnostic info
73
- python tests/integration/test_mt5_connection.py
105
+ # Create a retry script for connection
106
+ $script = @"
107
+ import MetaTrader5 as mt5
108
+ import time
109
+ import sys
110
+
111
+ print(f"MetaTrader5 package version: {mt5.__version__}")
112
+
113
+ # Try to connect with retries
114
+ max_attempts = 5
115
+ for attempt in range(max_attempts):
116
+ print(f"Connection attempt {attempt+1}/{max_attempts}...")
117
+
118
+ # Initialize MT5 connection
119
+ if mt5.initialize():
120
+ print("MetaTrader5 initialized successfully")
121
+ # Get terminal info
122
+ terminal_info = mt5.terminal_info()
123
+ if terminal_info is not None:
124
+ print(f"Terminal info: connected={terminal_info.connected}, community_account={terminal_info.community_account}")
125
+ else:
126
+ print("Failed to get terminal info")
127
+
128
+ # Get account info
129
+ account_info = mt5.account_info()
130
+ if account_info is not None:
131
+ print(f"Account info: server={account_info.server}, balance={account_info.balance}")
132
+ else:
133
+ print("Failed to get account info - this is normal without login credentials")
134
+
135
+ mt5.shutdown()
136
+ sys.exit(0)
137
+ else:
138
+ error = mt5.last_error()
139
+ print(f"initialize() failed, error code = {error}")
140
+ # Wait before retrying
141
+ time.sleep(10)
142
+
143
+ # If we got here, all attempts failed
144
+ sys.exit(1)
145
+ "@
146
+
147
+ # Save the script to a file
148
+ $script | Out-File -FilePath "retry_connection.py" -Encoding utf8
149
+
150
+ # Run the script
151
+ python retry_connection.py
0 commit comments