- Общие принципы работы с локальными проектами
- План проекта веб-сервиса копирования сделок и сигналов
- Веб-сервер на основе nodejs
- Теоретические основы протокола WebSockets
- Серверная часть веб-сервисов на базе WebSocket-протокола
- Протокол WebSocket-ов на MQL5
- Клиентские программы эхо и чат-сервисов на MQL5
- Сервис торговых сигналов и тестовая веб-страница
- Клиентская программа сигнального сервиса на MQL5
План проекта веб-сервиса копирования сделок и сигналов
В качестве сквозного демонстрационного проекта, который мы будем развивать на протяжении данной главы, возьмем простой, но вместе с тем довольно технологичный продукт: клиент-серверную систему копирования торговли. Клиентская часть, разумеется, будет представлять собой MQL-программы, общающиеся с центральной частью с помощью технологии сокетов. Учитывая, что MQL5 позволяет работать только с клиентскими сокетами, для сокет-сервера потребуется выбрать альтернативную платформу (об этом чуть ниже). Таким образом, проект потребует симбиоза нескольких разных технологий и использования многих, уже изученных нами, разделов MQL5 API, включая и прикладные коды, разработанные на их основе.
Благодаря клиент-серверной архитектуре на основе сокетов, систему можно будет использовать по разным сценариям:
- для простого копирования сделок между терминалами на одном компьютере;
- для установления частного (личного) канала связи между терминалами на разных компьютерах, в том числе, не только в локальной сети, но и через интернет;
- для организации публично открытого или требующего регистрации закрытого сервиса сигналов;
- для мониторинга торговли;
- для удаленного управления своим собственным счетом.
Во всех случаях клиентские программы будут выступать в 2-х ролях: публикатора (издателя, отправителя) и подписчика (получателя) данных.
Мы не станем изобретать собственный сетевой протокол, а возьмем уже существующий и популярный стандарт WebSocket-ов. Их клиентская реализация встроена во все браузеры, и нам потребуется повторить её (с большей или меньшей степенью полноты) на MQL5. Разумеется, поддержка WebSocket-ов имеется и для большинства популярных веб-серверов. Поэтому наши наработки в любом случае можно будет не только адаптировать под другие сервера (если кому-то подойдет другой), но и интегрировать с известными площадками, предоставляющими аналогичные веб-сервисы. Здесь весь вопрос заключается в строгом следовании спецификации их API, надстроенного над WebSockets.
При разработке программных комплексов, более сложных, чем одна обособляемая программа, важно составить план действий и, возможно, даже технический проект — структуру модулей, их взаимодействие, последовательность кодирования.
Итак, наш план включает:
- Теоретический разбор протокола WebSocket-ов;
- Выбор и установку веб-сервера с реализацией сервера WebSocket-ов;
- Создание простого эхо-сервера (отправляющего копию приходящих сообщений обратно клиенту) для знакомства с технологией;
- Создание простой клиентской веб-страницы для проверки работоспособности эхо-сервера из браузера;
- Создание простого чат-сервера, отправляющего сообщения всем подключившимся клиентам, и проверочной веб-страницы для него;
- Создание сервера обмена сообщениями между идентифицируемыми поставщиками и подписчиками, и проверочного веб-клиента для него;
- Проектирование и реализация WebSockets на MQL5;
- Создание простого скрипта в качестве клиента для эхо-сервера;
- Создание простого эксперта в качестве клиента чат-сервера;
- Наконец, создание копировщика сделок на MQL5: он будет выступать и поставщиком информации (монитором изменений и состояния счета), и потребителем информации (воспроизводить трейды), в зависимости от настроек.
Но прежде чем приступать к реализации плана, необходимо установить веб-сервер.