| |
|
| | import sys
|
| | import os
|
| | import MetaTrader5 as mt5
|
| | from datetime import datetime
|
| |
|
| |
|
| | current_dir = os.path.dirname(os.path.abspath(__file__))
|
| | project_root = os.path.dirname(current_dir)
|
| | sys.path.insert(0, project_root)
|
| |
|
| | try:
|
| | import src.config as config
|
| | except ImportError:
|
| | print("Error: Could not import src.config")
|
| | config = None
|
| |
|
| | def test_connection():
|
| | print("=== MT5 Connection Debugger ===")
|
| | print(f"Python: {sys.version}")
|
| | print(f"MT5 Package Version: {mt5.__version__}")
|
| | print(f"MT5 Package Author: {mt5.__author__}")
|
| |
|
| | path = getattr(config, 'MT5_PATH', '')
|
| | login = getattr(config, 'MT5_LOGIN', 0)
|
| | server = getattr(config, 'MT5_SERVER', '')
|
| | password = getattr(config, 'MT5_PASSWORD', '')
|
| |
|
| | print(f"\nConfigured Path: '{path}'")
|
| | print(f"Configured Login: {login}")
|
| | print(f"Configured Server: '{server}'")
|
| | print(f"Configured Password: {'******' if password else 'Not Set'}")
|
| |
|
| | print("\nAttempting Initialization...")
|
| |
|
| | if path:
|
| | if not mt5.initialize(path=path):
|
| | print(f"FAILED: mt5.initialize(path='{path}')")
|
| | print(f"Error Code: {mt5.last_error()}")
|
| | return
|
| | else:
|
| | if not mt5.initialize():
|
| | print("FAILED: mt5.initialize()")
|
| | print(f"Error Code: {mt5.last_error()}")
|
| | print("Tip: If you have multiple MT5 terminals or it's installed in a custom location, set MT5_PATH in src/config.py")
|
| | return
|
| |
|
| | print("SUCCESS: MT5 Initialized.")
|
| |
|
| |
|
| | terminal_info = mt5.terminal_info()
|
| | if terminal_info:
|
| | print("\nTerminal Info:")
|
| | print(f" Path: {terminal_info.path}")
|
| | print(f" Name: {terminal_info.name}")
|
| | print(f" Company: {terminal_info.company}")
|
| | print(f" Connected: {terminal_info.connected}")
|
| | else:
|
| | print("WARNING: Could not get terminal info.")
|
| |
|
| |
|
| | account_info = mt5.account_info()
|
| | if account_info:
|
| | print("\nAccount Info (Current):")
|
| | print(f" Login: {account_info.login}")
|
| | print(f" Server: {account_info.server}")
|
| | print(f" Variable Margin: {account_info.margin_so_mode}")
|
| | else:
|
| | print("\nWARNING: No account currently logged in or accessible.")
|
| |
|
| |
|
| | if login and password and server:
|
| | print(f"\nAttempting Login to {login} on {server}...")
|
| | authorized = mt5.login(login=login, password=password, server=server)
|
| | if authorized:
|
| | print("SUCCESS: Authorized.")
|
| | account_info = mt5.account_info()
|
| | print(f" Balance: {account_info.balance}")
|
| | print(f" Equity: {account_info.equity}")
|
| | else:
|
| | print(f"FAILED: Login failed. Error: {mt5.last_error()}")
|
| |
|
| | mt5.shutdown()
|
| | print("\nDisconnected.")
|
| |
|
| | if __name__ == "__main__":
|
| | test_connection()
|
| |
|