- Отправка Push-уведомлений
- Отправка уведомлений по электронной почте
- Отправка файлов на сервер FTP
- Обмен данными с веб-сервером по протоколу HTTP/HTTPS
- Установление и разрыв соединения сетевого сокета
- Проверка состояния сокета
- Настройка таймаутов передачи и приема данных сокетами
- Чтение, запись данных по незащищенному сокет-соединению
- Подготовка защищенного сокет-соединения
- Чтение и запись данных по защищенному сокет-соединению
Сетевые функции
MQL-программы могут обмениваться данными с другими компьютерами в распределенной сети или серверами Интернет, используя различные протоколы. В частности, поддерживаются: веб-сайты и сервисы (HTTP/HTTPS), передача файлов (FTP), отправка электронных писем (SMTP) и push-уведомления.
Все функции данной направленности можно условно поделить на 3 группы:
- SendFTP, SendMail и SendNotification — это наиболее простые функции для отправки файлов, электронной почты и мобильных уведомлений;
- Функция WebRequest предназначена для работы с веб-ресурсами и позволяет легко отправлять HTTP-запросы (в том числе, GET и POST);
- Набор Socket-функций позволяет создать TCP-соединение (в том числе защищенное соединение TLS) с удаленным хостом через системные сокеты.
Последовательность, в которой перечислены группы, соответствует переходу от высокоуровневых функций, предлагающих уже готовые механизмы взаимодействия клиента и сервера, до низкоуровневых, позволяющих реализовать произвольный прикладной протокол по требованиям того или иного публичного сервиса (например, криптовалютной биржи или сервиса торговых сигналов). Разумеется, такая реализация предполагает большие усилия.
Для безопасности конечного пользователя MetaTrader 5 требует, чтобы список разрешенных web-адресов, с которыми может соединяться MQL-программа при помощи Socket-функций и WebRequest, был явно указан в диалоге настроек на закладке Советники. Здесь можно указывать домены, полный путь к web-страницам (не только сайт, но и остальные фрагменты URL, например, папки или номер порта) или IP-адреса. Ниже представлен скриншот с настройками для некоторых доменов из примеров этой главы.
Разрешения на доступ к сетевым ресурсам в настройках терминала
Программно редактировать этот список нельзя. При попытке обратиться к сетевому ресурсу, который отсутствует в данном списке, MQL-программа получит ошибку, и запрос будет отклонен.
Важно отметить, что все сетевые функции обеспечивают лишь клиентское соединение с тем или иным сервером, то есть организовать с помощью MQL5 сервер для ожидания и обработки входящих запросов нельзя. Для этой цели потребуется интегрировать терминал с внешней программой или интернет сервисом (например, с облачным).