QUIK — стандартный терминал российских брокеров для доступа к Московской бирже, но его встроенные средства автоматизации ограничены. MetaTrader 5, напротив, даёт широкие возможности для написания советников на MQL5, однако не имеет прямого шлюза на MOEX. В результате трейдеры, желающие запустить робота на российском рынке, оказываются перед выбором: ручная торговля в QUIK или мощный советник без доступа к нужным инструментам.
Связка двух терминалов решает эту дилемму. Разберём пошагово, как подключить QUIK к MetaTrader 5 и настроить обмен данными для автоматической торговли на Московской бирже.
Зачем связывать QUIK и MetaTrader 5
QUIK — стандартный терминал российских брокеров для доступа к Московской бирже (MOEX). Программа позволяет просматривать котировки, строить графики, выставлять заявки и получать данные торгового счёта. Однако встроенные средства автоматизации QUIK ограничены: написание сложных торговых алгоритмов на встроенном Lua-скриптинге требует значительных усилий и не даёт гибкости, привычной трейдерам, работающим с профессиональными советниками.
MetaTrader 5, напротив, предоставляет развитую среду для разработки советников на MQL5 с богатой библиотекой встроенных функций, тестером стратегий и поддержкой сложных торговых логик. Проблема в том, что MT5 не имеет прямого шлюза к Московской бирже — на сегодняшний день готового подключения MetaTrader 5 к счетам MOEX брокеры не предлагают. В результате трейдер оказывается перед выбором: ограничиться ручной торговлей через QUIK или использовать мощный советник без доступа к российскому рынку.
Связка двух терминалов снимает это противоречие. QUIK выступает шлюзом к бирже, а MetaTrader 5 — вычислительным ядром, где работает советник. О том, какие индикаторы и сигналы действительно подходят для MOEX, мы рассказывали в статье «Сигналы для торговли акциями на Мосбирже». А для понимания принципиальных различий между рынками стоит прочитать материал «Форекс или Мосбиржа: где выгоднее торговать с роботом».
В чём сложность прямой интеграции QUIK с MT5
QUIK и MetaTrader 5 — две независимые программы с принципиально разной архитектурой. QUIK разработан как терминал для прямого доступа к российским биржам через брокерские шлюзы; MetaTrader 5 создан для международных рынков и не имеет встроенного коннектора к Московской бирже. Штатного способа передачи данных между ними не существует, поэтому обмен приходится организовывать вручную через промежуточные протоколы: DDE — технология динамического обмена данными Windows, файловый экспорт (CSV или XML), TCP-мост либо собственную DLL-обёртку. Каждый из этих подходов требует отдельной настройки и понимания того, как работают оба терминала одновременно.
Без правильно настроенной связки советник MetaTrader 5 не получает котировок инструментов MOEX, не видит стакана и не может выставлять заявки. Торговля в таком режиме остаётся либо полностью ручной в QUIK, либо автоматизированной, но только по тем инструментам, которые изначально доступны в MT5 через брокера-провайдера. При этом подход к подбору параметров самого советника напрямую влияет на сохранность депозита — об этом подробнее в статье «Параметры советника: что означают настройки и как их подбирать». А для тех, кто задумывается о соблюдении норм при автоматической торговле на российском рынке, будет полезна статья «ЦБ и торговые роботы: что нужно знать о регулировании автоторговли».
Что нужно подготовить перед подключением
Прежде всего убедитесь, что терминал QUIK установлен, авторизован и содержит активный торговый счёт у брокера с доступом к Московской бирже. Именно из QUIK советник будет получать данные о выбранном инструменте — будь то акция, фьючерс или другой биржевой актив. Убедитесь, что в терминале отображаются котировки нужного инструмента и доступна таблица текущих торгов.
С другой стороны канала связи находится MetaTrader 5 с установленным советником, способным принимать внешние данные. Такой советник должен быть написан или настроен для работы с одним из протоколов обмена: DDE (динамический обмен данными через Windows API), чтение файлового экспорта (CSV, XML) либо TCP-сокет. Выбор протокола зависит от требуемой задержки и доступных средств.
Заранее выясните, как ваш брокер обрабатывает заявки из QUIK: требуются ли отдельные настройки торгового счёта и разрешена ли алгоритмическая торговля на выбранном инструменте. Подготовка обоих терминалов и понимание принципов обмена данными — ключевой этап, от которого зависит стабильность будущей автоматической торговли на Мосбирже.
Как настроить QUIK для передачи данных
Первый и самый прямой способ — встроенный DDE-сервер QUIK. В настройках терминала найдите раздел «DDE-сервер» и включите его, указав порт для подключения. Затем создайте таблицу текущих торгов с инструментами MOEX, которые планируете использовать. После этого любое внешнее приложение, включая советника MT5, сможет запрашивать котировки по протоколу DDE: при обращении по адресу вида QUIK|SERVER!<код_инструмента>.<параметр> сервер возвращает актуальное значение. Преимущество DDE — минимальная задержка, однако оба терминала должны работать на одном компьютере, а Windows-сессия — оставаться активной.

Второй способ — файловый экспорт через скрипт QUIK на языке Lua. Скрипт периодически сохраняет котировки в CSV-файл, а советник MT5 читает этот файл. Ниже приведён схематичный пример — в нём условны код инструмента (GAZP) и имя параметра (LAST); в реальном скрипте их заменяют на нужный тикер MOEX и необходимые поля.
-- Сохранение котировок в CSV для советника MT5
function main()
local file = io.open("quotes.csv", "w")
local quote = getParamEx("GAZP", "LAST")
file:write(os.date("%Y-%m-%d %H:%M:%S") .. "," ..
quote.param_value .. "\n")
io.close(file)
end
После настройки любого из каналов обязательно проверьте, что данные действительно доходят до внешнего приложения, — для этого можно запустить простой тестовый парсер до интеграции с советником. Если связь не устанавливается, проверьте настройки брандмауэра для DDE-порта или права доступа к файловому каталогу.
Как настроить советника в MetaTrader 5 для приёма данных
Чтобы советник в MetaTrader 5 мог получать котировки MOEX, в нём необходимо реализовать одну из двух схем. Первая — клиент DDE через WinAPI: советник подключается к DDE-серверу QUIK по протоколу динамического обмена данными и напрямую запрашивает значения нужных параметров для выбранного инструмента. Вторая — модуль чтения файлового экспорта: советник периодически открывает CSV-файл, который формирует скрипт QUIK, и извлекает из него актуальные цены. Второй способ проще в реализации и не требует работы с системными вызовами Windows, поэтому для первой настройки рекомендуется начать с него.

Ниже приведён схематичный пример функции на MQL5 для чтения CSV-файла от QUIK. Условны имя файла (quotes.csv) и формат строки — в реальном советнике их подстраивают под структуру экспорта вашего Lua-скрипта.
// Чтение котировки из CSV-файла QUIK
double ReadQuikQuote(string fileName)
{
int handle = FileOpen(fileName, FILE_READ|FILE_CSV, ",");
if(handle == INVALID_HANDLE) return -1;
string timeStr = FileReadString(handle);
double price = FileReadNumber(handle);
FileClose(handle);
return price;
}
Для отправки ордеров обратно в QUIK используется тот же канал в обратную сторону: советник записывает сформированную команду в файл или отправляет через DDE, а Lua-скрипт в QUIK периодически проверяет наличие новых инструкций и выставляет заявку на основании полученных данных. Таким образом, оба направления обмена замыкаются на один протокол, что упрощает отладку и сопровождение всей связки терминалов.
Проверка связи и запуск автоматической торговли на Мосбирже
После настройки обоих терминалов первый запуск выполняйте пошагово. Запустите QUIK, убедитесь, что торговый счёт активен, а таблица котировок отображает текущие цены инструментов MOEX. Затем откройте MetaTrader 5 с загруженным советником. Если канал DDE или файловый экспорт настроен верно, первые котировки появятся в журнале советника в течение нескольких секунд.
Когда поток данных подтверждён, выставьте тестовую заявку минимальным объёмом — один лот. Это проверит обратный канал: от советника MT5 через QUIK на биржу. Откройте стакан заявок в QUIK: тестовый ордер должен отобразиться с правильным направлением и ценой.
После успешного теста настройте мониторинг. Советник должен записывать каждую ошибку связи с меткой времени. Реализуйте автоматическое переподключение: при обрыве канала советник делает несколько попыток восстановить соединение с короткой паузой. Полезно также сравнивать последнюю полученную котировку с текущей ценой в QUIK и сигнализировать, если расхождение превышает порог — это предотвращает выставление заявки по устаревшим данным.
// Попытка переподключения при обрыве канала
int attempts = 0;
while (!ChannelIsReady() && attempts < 5) {
Sleep(1000);
InitChannel();
attempts++;
}
if (!ChannelIsReady()) {
Print("Канал не восстановлен, торговля остановлена");
ExpertRemove();
}









Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.