Quick Connect to MT5 Cluster (quick_connect)¶
Sugar method: Easiest way to connect to MT5 server by cluster name.
API Information:
- Method:
sugar.quick_connect(cluster_name, base_symbol) - Returns: None (raises exception on failure)
- Layer: HIGH (MT5Sugar)
Method Signature¶
🔽 Input Parameters¶
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
cluster_name |
str |
Yes | - | MT5 cluster identifier (e.g., "FxPro-MT5 Demo") |
base_symbol |
str |
No | "EURUSD" |
Base chart symbol for connection |
Return Value¶
| Type | Description |
|---|---|
None |
Returns nothing on success, raises exception on failure |
Raises:
RuntimeErrorif credentials not accessible in MT5AccountExceptionif connection to cluster fails
🏛️ Essentials¶
What it does:
- Connects to MT5 server using cluster name
- Uses credentials from MT5Account
- Validates connection with terminal
- Waits up to 30 seconds for terminal ready
- Updates session GUID from server
Key behaviors:
- Simplest connection method (just cluster name)
- Uses connect_by_server_name internally
- Blocks until terminal ready or timeout
- Perfect for reconnecting or switching accounts
⚡ Under the Hood¶
MT5Sugar.quick_connect()
↓ validates credentials
↓ calls
MT5Account.connect_by_server_name()
↓ gRPC protobuf
AccountHelperService.ConnectEx()
↓ MT5 Terminal
↓ waits for terminal ready (30s timeout)
↓ updates session GUID
Call chain:
- Sugar accesses underlying MT5Account
- Validates user and password attributes exist
- Calls Account.connect_by_server_name() with cluster name
- Account sends ConnectEx gRPC request to terminal
- Terminal validates credentials and connects
- Waits for terminal_is_alive with 30 second timeout
- Updates session GUID from server response
- Returns on success or raises exception
Related files:
- Sugar:
src/pymt5/mt5_sugar.py:340 - Account:
package/MetaRpcMT5/helpers/mt5_account.py:436
When to Use¶
Use quick_connect() when:
- First connection to MT5 server
- Reconnecting after disconnection
- Switching between demo/live clusters
- Simple connection without complex setup
Don't use when:
- Need custom connection parameters
- Don't know cluster name
- Want non-blocking connection
🔗 Examples¶
Example 1: Basic Connection¶
from pymt5 import MT5Sugar, MT5Service, MT5Account
async def connect_simple():
# Create account with credentials
account = MT5Account.create(
user=591129415,
password="your_password",
grpc_server="mt5.mrpc.pro:443"
)
service = MT5Service(account)
sugar = MT5Sugar(service)
# Connect to FxPro demo cluster
await sugar.quick_connect("FxPro-MT5 Demo")
print("Connected successfully")
# Check connection
if sugar.is_connected():
balance = await sugar.get_balance()
print(f"Balance: ${balance}")
Example 2: Connect with Custom Symbol¶
async def connect_custom_symbol():
account = MT5Account.create(
user=591129415,
password="your_password",
grpc_server="mt5.mrpc.pro:443"
)
service = MT5Service(account)
sugar = MT5Sugar(service)
# Connect with GBPUSD as base symbol
await sugar.quick_connect(
cluster_name="ICMarkets-Demo",
base_symbol="GBPUSD"
)
print("Connected with GBPUSD chart")
Example 3: Auto-Reconnect on Failure¶
import asyncio
async def connect_with_retry():
account = MT5Account.create(
user=591129415,
password="your_password",
grpc_server="mt5.mrpc.pro:443"
)
service = MT5Service(account)
sugar = MT5Sugar(service)
max_retries = 3
cluster = "FxPro-MT5 Demo"
for attempt in range(1, max_retries + 1):
try:
print(f"Connection attempt {attempt}/{max_retries}...")
await sugar.quick_connect(cluster)
print("Connected successfully")
break
except Exception as e:
print(f"Attempt {attempt} failed: {e}")
if attempt < max_retries:
wait_time = attempt * 2 # 2, 4, 6 seconds
print(f"Retrying in {wait_time} seconds...")
await asyncio.sleep(wait_time)
else:
print("All connection attempts failed")
raise
# Verify connection
if await sugar.ping():
print("Server is responsive")
Common Pitfalls¶
Pitfall 1: Wrong cluster name
# ERROR: Cluster name doesn't exist or typo
try:
await sugar.quick_connect("FxPro-MT5-Demo") # Wrong hyphen
except Exception as e:
print(e) # Connection failed
Solution: Use exact cluster name from broker
# Get cluster name from your broker's documentation
await sugar.quick_connect("FxPro-MT5 Demo") # Correct
Pitfall 2: Credentials not set
# ERROR: MT5Account created without credentials
account = MT5Account(id_=uuid4()) # No user/password
service = MT5Service(account)
sugar = MT5Sugar(service)
try:
await sugar.quick_connect("FxPro-MT5 Demo")
except RuntimeError as e:
print(e) # "Cannot connect: credentials not accessible"
Solution: Always use create() with credentials
account = MT5Account.create(
user=591129415,
password="your_password",
grpc_server="mt5.mrpc.pro:443"
)
Pitfall 3: Not handling connection failure
Solution: Wrap in try-except
try:
await sugar.quick_connect("FxPro-MT5 Demo")
print("Connected")
except Exception as e:
print(f"Connection failed: {e}")
# Handle gracefully
Pro Tips¶
Tip 1: Store cluster name in config
# config.py
CLUSTER_NAME = "FxPro-MT5 Demo"
BASE_SYMBOL = "EURUSD"
# main.py
from config import CLUSTER_NAME, BASE_SYMBOL
await sugar.quick_connect(CLUSTER_NAME, BASE_SYMBOL)
Tip 2: Verify connection after connect
await sugar.quick_connect("FxPro-MT5 Demo")
# Verify both channel and server
assert sugar.is_connected(), "Channel not connected"
assert await sugar.ping(), "Server not responding"
print("Fully connected and verified")
Tip 3: Switch between demo and live
# Connect to demo
await sugar.quick_connect("FxPro-MT5 Demo")
print("Trading on DEMO")
# Later: switch to live (if using different account)
# Note: Need to create new MT5Account with live credentials
# quick_connect() uses existing credentials
Tip 4: Use context for automatic cleanup
async def trade_session():
account = MT5Account.create(
user=591129415,
password="your_password",
grpc_server="mt5.mrpc.pro:443"
)
service = MT5Service(account)
sugar = MT5Sugar(service)
try:
await sugar.quick_connect("FxPro-MT5 Demo")
# Do trading operations
balance = await sugar.get_balance()
print(f"Balance: ${balance}")
finally:
# Cleanup if needed
print("Session ended")
📚 See Also¶
- is_connected - Check connection status
- ping - Test server responsiveness