Orbit / app /services /mt5_bridge.py
Orbit Automations
Auto-sync from Julius-606/Orbit monorepo
4a693cf
################################################################################
#FILE: backend/app/services/mt5_bridge.py
#VERSION: 1.0.1 | SYSTEM: Jarvis Protocol
################################################################################
import MetaTrader5 as mt5
# 🚀 FIX: Added 'app.' prefix
from app.core.config import settings
import logging
import pandas as pd
logger = logging.getLogger("MT5-Bridge")
class MT5Engine:
def __init__(self):
self.connected = False
def connect(self):
if not mt5.initialize():
logger.error(f"MT5 Init failed. Error code: {mt5.last_error()}")
return False
authorized = mt5.login(
settings.MT5_LOGIN,
password=settings.MT5_PASSWORD,
server=settings.MT5_SERVER
)
if authorized:
self.connected = True
logger.info(f"MT5 Connected successfully to {settings.MT5_SERVER}. Let's get this bread.")
return True
else:
logger.error(f"Failed to connect to MT5. Did you blow the account? Code: {mt5.last_error()}")
return False
def check_exposure(self):
if not self.connected:
self.connect()
account_info = mt5.account_info()
if account_info is None:
return {"status": "error", "message": "Could not retrieve account info."}
margin_level = account_info.margin_level
equity = account_info.equity
if margin_level > 0 and margin_level < 300.0:
return {"status": "DANGER", "message": "Margin Level critically low. Close some positions bro!"}
return {"status": "CHILL", "equity": equity, "margin_level": margin_level}
mt5_engine = MT5Engine()