Интеграция AI-трейдинг-бота с MetaTrader 4/5 MQL/API
MetaTrader — доминирующая платформа для Forex и CFD retail трейдинга. Большинство Forex брокеров поддерживают MT4/MT5. Интеграция AI модели с MT реализуется несколькими способами.
Архитектуры интеграции
MQL5/MQL4 Expert Advisor с внешней ML-моделью
MQL5 вызывает DLL/Python/REST API для получения сигналов. EA (Expert Advisor) занимается исполнением, ML — прогнозами.
// MT5 EA connecting to Python ML service
#include <Trade/Trade.mqh>
CTrade trade;
string python_server = "http://localhost:5000";
int OnInit() {
EventSetTimer(60); // Проверка сигналов каждую минуту
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 через MT5 Python API
MetaTrader 5 имеет официальный Python пакет:
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')
# ML предсказание
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)
MT4 vs MT5 различия
| Аспект | MT4 | MT5 |
|---|---|---|
| Python API | Нет (только через DLL или ZeroMQ) | Официальный пакет MetaTrader5 |
| Тайм-фреймы | 9 стандартных | 21 тайм-фрейм |
| Хеджирование | Нет (netting only) | Да |
| Тестирование | По одному символу | Multi-currency |
| Рынки | Forex/CFD | Forex + stocks + futures |
ZeroMQ для MT4
Популярный паттерн для MT4 без Python API: ZeroMQ брокер между MQL4 EA и Python:
- MQL4 EA → ZeroMQ dealer socket → Python ML process
- Python ML → ZeroMQ → MQL4 EA
Библиотека: mql4-lib-zeromq на GitHub.
Тестирование в Strategy Tester
MetaTrader Strategy Tester — встроенный backtester. Ограничения для ML:
- Тестер работает внутри MT — внешние Python вызовы невозможны
- Решение: предвычислить ML-сигналы → записать в Custom Indicator → EA использует indicator
- Альтернатива: полный backtest в Python (vectorbt, backtrader) с реплицированными условиями
Срок интеграции: 1–3 недели для MT5 Python API, 3–5 недель для MT4 + ZeroMQ setup.







