AI Trading Bot with MetaTrader 4/5: MQL Scripts, Python API, and ZeroMQ Bridge

MetaTrader is the dominant platform for Forex and CFD retail trading. Most brokers support MT4/MT5, but integrating AI models runs into limitations: no native Python in MT4, limited backtesting with external calls, and delays in signal synchronization. Recently, a company trading on MT4 with an LSTM

AI Development Areas

Frequently Asked Questions

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1441
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1302
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    998
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1267
  • image_logo-advance_0.webp
    B2B Advance company logo design
    714
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    1006

MetaTrader is the dominant platform for Forex and CFD retail trading. Most brokers support MT4/MT5, but integrating AI models runs into limitations: no native Python in MT4, limited backtesting with external calls, and delays in signal synchronization. Recently, a company trading on MT4 with an LSTM model approached us. The latency between signal and execution was up to 500 ms, leading to slippage and daily losses of significant amounts on the EURUSD pair. We proposed a ZeroMQ bridge and optimized the model for fast GPU inference. As a result, latency dropped to 80 ms — six times faster. We'll break down the main integration architectures and give practical recommendations. Our track record: 5+ years in AI trading, 30+ successful projects. Contact us for a free one-day project evaluation.

Integration Architectures

An MQL5/MQL4 Expert Advisor with an external ML model is the most straightforward approach. MQL5 calls REST/WebRequest to get the signal. The EA handles execution; the ML service handles predictions.

// MT5 EA connecting to Python ML service #include <Trade/Trade.mqh> CTrade trade; string python_server = "http://localhost:5000"; int OnInit() { EventSetTimer(60); // Check signals every minute return INIT_SUCCEEDED; } void OnTimer() { // Get signal from Python ML service string url = python_server + "/signal?symbol=" + Symbol(); string result = ""; int timeout = 5000; ResetLastError(); int res = WebRequest("GET", url, "", timeout, "", result, ""); if (res == 200) { // Parse JSON response int signal = ParseSignal(result); double confidence = ParseConfidence(result); if (signal == 1 && confidence > 0.75) { // Buy signal with sufficient confidence double sl = ParseStopLoss(result); double tp = ParseTakeProfit(result); trade.Buy(0.1, Symbol(), 0, sl, tp, "AI Signal"); } else if (signal == -1 && confidence > 0.75) { trade.Sell(0.1, Symbol(), 0, sl, tp, "AI Signal"); } } } 

Python ML Bridge via MT5 Python API — the official MetaTrader5 package simplifies integration.

import MetaTrader5 as mt5 import pandas as pd from your_ml_model import predict_signal mt5.initialize() mt5.login(account_number, password="your_pass", server="BrokerServer") rates = mt5.copy_rates_from_pos("EURUSD", mt5.TIMEFRAME_H1, 0, 1000) df = pd.DataFrame(rates) df['time'] = pd.to_datetime(df['time'], unit='s') signal = predict_signal(df) if signal == 'buy': request = { "action": mt5.TRADE_ACTION_DEAL, "symbol": "EURUSD", "volume": 0.1, "type": mt5.ORDER_TYPE_BUY, "price": mt5.symbol_info_tick("EURUSD").ask, "sl": mt5.symbol_info_tick("EURUSD").ask - 0.0050, "tp": mt5.symbol_info_tick("EURUSD").ask + 0.0100, "deviation": 20, "magic": 234000, "comment": "AI_bot", "type_time": mt5.ORDER_TIME_GTC, "type_filling": mt5.ORDER_FILLING_IOC, } result = mt5.order_send(request) 

Integration Method Comparison

Method MT4 MT5 Latency Complexity
REST/MQ via WebRequest Yes (MQL4) Yes (MQL5) ~100-300 ms Medium
Official Python API No Yes ~10-50 ms Low
ZeroMQ Bridge Yes Yes (but redundant) ~50-150 ms Medium
DLL Wrapper Yes Yes ~1-10 ms High

Why MT5 Python API Is the Optimal Choice for New Projects

The MT5 Python API is the most direct and supported method. You get access to ticks, historical data, and order management without intermediaries. The difference from MT4 is significant: MT5 supports 21 timeframes, hedging, and multi-currency testing. If your broker provides MT5, choose the Python API — it will save weeks of development. In terms of latency, the official API is three times faster than a ZeroMQ bridge (10–50 ms vs. 50–150 ms). Detailed documentation is available on the official website.

How to Eliminate Signal Transmission Delays

Latency is the main risk when calling an external AI model. For MT5, use WebRequest with a timeout of up to 5 seconds; for MT4, use ZeroMQ with a non-blocking dealer socket. Additionally, apply prediction caching: if the model generates a signal on every new tick, aggregate and send once per minute. On the Python side, set timeout and retry policies to avoid hangs. As a result, latency drops from 300 ms to 50 ms.

Integration Risks and Mitigation

Key risks: duplicate orders on retransmission, price asynchronicity between signal and execution. Solution: use a unique magic number for each signal, check for existing orders before sending. A heartbeat check ensures the EA does not operate without fresh data from the ML server. Also, set a time-to-live for signals: if the price has moved more than 5 pips, ignore the signal.

MT4 vs MT5 Differences

Aspect MT4 MT5
Python API No (only via DLL or ZeroMQ) Official MetaTrader5 package
Timeframes 9 standard 21 timeframes
Hedging No (netting only) Yes
Testing Single symbol Multi-currency
Markets Forex/CFD Forex + stocks + futures

ZeroMQ for MT4 is a popular pattern: the MQL4 EA communicates with a Python process through a dealer socket. The library is available on GitHub.

Integration Process: Step by Step

  1. Analysis and design — choose the architecture (REST, ZeroMQ, Python API) and set up infrastructure.
  2. Develop EA in MQL4/MQL5 with calls to the ML service (WebRequest or ZeroMQ).
  3. Set up the bridge — REST/ZeroMQ/WebSocket channel between MT and Python.
  4. Deploy the ML service in a Docker container with an API, error handling, and logging.
  5. Integrate the ML model — connect your model (on-premise, LoRA, RAG) to the bridge.
  6. Test — use the Strategy Tester via a Custom Indicator (pre-calculated signals) or in a Python backtester.
  7. Deploy to a VPS or cloud (AWS, GCP) with latency and heartbeat monitoring.

What's Included

  • Development of the EA that connects to the ML service (REST/ZeroMQ)
  • Setup of the bridge component (Python middleware)
  • Deployment of the ML model in a Docker container
  • Integration testing and backtesting
  • Operations documentation and one month of post-launch support
  • Training for your team on the solution

Integration timeline: 1–3 weeks for MT5 Python API, 3–5 weeks for MT4 + ZeroMQ setup. Get a consultation — we'll evaluate your project in one business day. Order a turnkey integration — we handle the entire cycle from development to support.

Tip: How to speed up backtesting of ML strategies. For quick hypothesis testing, use Python frameworks (vectorbt, backtrader) with historical data exported from MT. This allows you to test the model without being tied to the MT4/5 tester.