План проекта веб-сервиса копирования сделок и сигналов

В качестве сквозного демонстрационного проекта, который мы будем развивать на протяжении данной главы, возьмем простой, но вместе с тем довольно технологичный продукт: клиент-серверную систему копирования торговли. Клиентская часть, разумеется, будет представлять собой MQL-программы, общающиеся с центральной частью с помощью технологии сокетов. Учитывая, что MQL5 позволяет работать только с клиентскими сокетами, для сокет-сервера потребуется выбрать альтернативную платформу (об этом чуть ниже). Таким образом, проект потребует симбиоза нескольких разных технологий и использования многих, уже изученных нами, разделов MQL5 API, включая и прикладные коды, разработанные на их основе.

Благодаря клиент-серверной архитектуре на основе сокетов, систему можно будет использовать по разным сценариям:

  • для простого копирования сделок между терминалами на одном компьютере;
  • для установления частного (личного) канала связи между терминалами на разных компьютерах, в том числе, не только в локальной сети, но и через интернет;
  • для организации публично открытого или требующего регистрации закрытого сервиса сигналов;
  • для мониторинга торговли;
  • для удаленного управления своим собственным счетом.

Во всех случаях клиентские программы будут выступать в 2-х ролях: публикатора (издателя, отправителя) и подписчика (получателя) данных.

Мы не станем изобретать собственный сетевой протокол, а возьмем уже существующий и популярный стандарт WebSocket-ов. Их клиентская реализация встроена во все браузеры, и нам потребуется повторить её (с большей или меньшей степенью полноты) на MQL5. Разумеется, поддержка WebSocket-ов имеется и для большинства популярных веб-серверов. Поэтому наши наработки в любом случае можно будет не только адаптировать под другие сервера (если кому-то подойдет другой), но и интегрировать с известными площадками, предоставляющими аналогичные веб-сервисы. Здесь весь вопрос заключается в строгом следовании спецификации их API, надстроенного над WebSockets.

При разработке программных комплексов, более сложных, чем одна обособляемая программа, важно составить план действий и, возможно, даже технический проект — структуру модулей, их взаимодействие, последовательность кодирования.

Итак, наш план включает:

  1. Теоретический разбор протокола WebSocket-ов;
  2. Выбор и установку веб-сервера с реализацией сервера WebSocket-ов;
  3. Создание простого эхо-сервера (отправляющего копию приходящих сообщений обратно клиенту) для знакомства с технологией;
  4. Создание простой клиентской веб-страницы для проверки работоспособности эхо-сервера из браузера;
  5. Создание простого чат-сервера, отправляющего сообщения всем подключившимся клиентам, и проверочной веб-страницы для него;
  6. Создание сервера обмена сообщениями между идентифицируемыми поставщиками и подписчиками, и проверочного веб-клиента для него;
  7. Проектирование и реализация WebSockets на MQL5;
  8. Создание простого скрипта в качестве клиента для эхо-сервера;
  9. Создание простого эксперта в качестве клиента чат-сервера;
  10. Наконец, создание копировщика сделок на MQL5: он будет выступать и поставщиком информации (монитором изменений и состояния счета), и потребителем информации (воспроизводить трейды), в зависимости от настроек.

Но прежде чем приступать к реализации плана, необходимо установить веб-сервер.