Техническое задание
Цель
Создать эксперт-советник (EA) для MetaTrader 5, торгующий инструментами XAUUSD и XAUUSD+ на основе потока данных стакана заявок (Market Depth / Order Book) с уровнями L0/L1/L2/L3, вычисляющий простые коэффициенты, сравнивающий отклонения от настроечных порогов, подающий алерты и автоматически совершающий сделки с заданными параметрами риска и мани-менеджмента.
Термины и уровни стакана
-
L0 (Quote/Top-of-Book snapshot): best bid/ask, спред, last trade (если доступен), midprice.
-
L1: лучшая цена покупки/продажи и их объём (1-й уровень по обеим сторонам).
-
L2: агрегированные уровни цен (N уровней по bid/ask).
-
L3: поток отдельных ордеров/изменений в стакане (если доступно от брокера/внешнего провайдера).
В MT5 базовый стакан: MarketBookGet() + события OnBookEvent() . При наличии внешнего источника L2/L3 — подключение через WebRequest/DLL/локальный шлюз.
Источники данных
-
Внутренний DOM MT5 для соответствующего символа (XAUUSD, XAUUSD+):
-
Использовать MarketBookAdd(Symbol())/MarketBookRelease() и OnBookEvent() для подписки.
-
Периодически брать срез MarketBookGet() для расчётов.
-
-
Опционально: внешний поток L2/L3
-
Заказчик при необходимости оплачивает внешний фид (например, агрегатор ликвидности).
-
Техническая интеграция:
-
Предпочтение — локальный мост: внешний скрипт (Python/Node) тянет WebSocket и публикует в локальный HTTP (localhost) → EA опрашивает через WebRequest() .
-
Формат JSON (см. «Контракты данных» ниже).
-
-
Частота обновления и троттлинг настраиваемые.
-
-
Синхронизация символов
-
Параметры EA: имена символов для DOM/торговли (по умолчанию XAUUSD , XAUUSD+ ).
-
Проверка доступности стакана у брокера (если недоступен — лог/алерт).
-
Алгоритм (высокоуровневый)
-
Подключение к источникам (внутренний DOM; при включении — внешний поток).
-
Непрерывный сбор L0/L1/L2/L3 (по событию OnBookEvent + по таймеру OnTimer ).
-
Расчёт метрик/коэффициентов (простые, быстрые):
-
Spread = ask1 - bid1
-
Mid = (ask1 + bid1)/2
-
Imbalance (L1) = (BidVol1 − AskVol1) / (BidVol1 + AskVol1)
-
Book Pressure (L2) = ΣBidVol[1..N] / ΣAskVol[1..N]
-
Microprice = (Bid1AskVol1 + Ask1BidVol1) / (BidVol1 + AskVol1)
-
Delta of DOM за окно T: изменения суммарных объёмов по сторонам
-
Spoofing/Flip heuristic (L3): частые добавления/отмены крупного объёма на удалённых уровнях (если L3 доступен)
-
-
Сравнение с порогами и условиями входа/выхода (конфиги, см. ниже).
-
Сигналы:
-
Алерты (терминал, пуш/почта по желанию).
-
Торговые действия: отправка заявок с учётом риска, фильтров и ограничений.
-
-
Управление позицией:
-
Стоп-лосс/тейк-профит/трейлинг, частичная фиксация, безубыток.
-
-
Логирование и мониторинг (файл + журнал, панель на графике).