
Создание панели торгового администратора на MQL5 (Часть I): Создание интерфейса обмена сообщениями
Введение
Вы можете взаимодействовать с пользователями вашей системы непосредственно из MetaTrader 5. Это один из способов, с помощью которого администратор может в режиме реального времени получать информацию о работе системы. Она также может служить подтверждением недавно переданных системных сигналов на социальный канал. Если вы дочитаете до конца, то сможете увидеть, как можно создать интерактивный интерфейс, показанный на этом рисунке:
Панель системного администратора: Индекс Boom 500, H1
Панель управления администратора (MetaTrader 5) и приложение Telegram (получение сообщений от администратора в режиме реального времени)
В современном мире со сверхбольшим единовременным количеством сеансов пользователей, где миллионы сделок совершаются в течение миллисекунд, наличие эффективных каналов связи в торговых экосистемах является более важным, чем когда-либо. Представьте, что более 70% трейдеров в настоящее время используют платформы мгновенного обмена сообщениями, такие как Telegram, для получения обновлений в режиме реального времени, что демонстрирует тенденцию к внедрению интегрированных коммуникационных решений в торговых средах. Этот сдвиг подчеркивает необходимость того, чтобы трейдеры получали алгоритмический и немедленный доступ к экспертным выводам и рекомендациям.
Для трейдеров и разработчиков, использующих MetaTrader 5, задача заключается в преодолении разрыва между автоматизированной генерацией сигналов и эффективным вмешательством человека на больших расстояниях. Панель администратора предоставляет системным администраторам возможность осуществлять быструю и прямую связь с трейдерами, находящимися по всему миру. Используя эту систему, администраторы могут легко подтверждать или аннулировать сигналы, а также предоставлять важные комментарии или рекомендации трейдерам через такие платформы, как Telegram.
В настоящей статье рассматривается создание этой жизненно важной админ-панели с использованием MQL5. В ней предлагается пошаговое руководство по разработке этой программы, улучшающей торговую коммуникацию и надзор. Мы рассмотрим, как использовать возможности MQL5 для создания комплексной системы, способствующей эффективному управлению сигналами и обеспечивающей мгновенную связь с трейдерами, тем самым революционизируя способ проведения торговых операций во всем мире.
Схема передачи сигналов
Блок-схема иллюстрирует роли системы, пользователей и администраторов в торговой экосистеме, а также связанные с ними инструменты.
Вот краткое изложение того, что мы рассмотрим в данном обсуждении:
- Понимание координат при разработке графического пользовательского интерфейса MetaTrader 5
- Понимание библиотечных файлов при разработке на MQL5
- Создание пользовательского алгоритма панели администратора в MQL5
- Интеграция Telegram API для общения с трейдерами
- Тестирование панели администратора
- Советы по использованию
- Заключение
Понимание координат при разработке графического пользовательского интерфейса MetaTrader 5
При разработке графических пользовательских интерфейсов (GUI) в рамках платформы MetaTrader 5 важно понимать систему координат, определяющую расположение и размер графических элементов на графике.
Система координат:
Система координат в MetaTrader 5 представляет собой двухмерное пространство, определяемое горизонтальной (x) и вертикальной (y) осями. Каждое окно диаграммы имеет свою собственную систему координат, начиная с левого верхнего угла, который обозначается как исходная точка (0,0).
Позиционирование элементов:
Чтобы расположить элементы в координатном пространстве диаграммы, обычно указываются две точки, использующие координаты:
- Верхний левый угол: Определяется координатами (x1, y1). Это позиция, с которой начинается элемент.
- Правый нижний угол: Определяется координатами (x2, y2). Обозначает диагональный конец элемента.
Расчет ширины и высоты:
Размеры элемента ГПИ определяются исходя из разницы между этими координатами:
- Ширина: Рассчитывается как (Ширина = x2 - x1)
- Высота: Рассчитывается как (Высота = y2 - y1)
Эти вычисления определяют размер вашего элемента, обеспечивая, что он будет соответствовать указанным границам на диаграмме.
Пример оформления графического интерфейса пользователя и пример использования в MQL5
Пример практического применения
При создании диалоговых окон или графических элементов управления, таких как панели или кнопки, использование этих координат помогает четко определить местоположение и размер. Такой подход гарантирует, что все компоненты графического пользовательского интерфейса будут последовательно размещены и масштабированы таким образом, чтобы они соответствовали доступному пространству в окне диаграммы, что способствует созданию единого пользовательского интерфейса. Понимание и эффективное использование этой системы координат имеет основополагающее значение для создания интуитивно понятных и визуально привлекательных приложений в среде MetaTrader 5.
Другой пример: Создание простой панели с кнопкой в MetaTrader 5
Создадим простую панель с кнопкой в окне графиков MetaTrader 5, используя описанную ранее систему координат.
Определим координаты:
Сначала определим координаты как для панели, так и для кнопки. Мы разместим панель в левом верхнем углу графика и поместим кнопку внутри этой панели.
Координаты панели:
- Левый верхний угол (x1, y1): (10, 10)
- Правый нижний угол (x2, y2): (200, 100)
Эти координаты позволят создать панель, которая начинается в 10 пикселях от верхнего края и в 10 пикселях левее от края окна диаграммы, шириной 190 пикселей (200 минус 10) и высотой 90 пикселей (100 минус 10).
Координаты кнопки:
- Левый верхний угол (x1, y1): (20, 20)
- Правый нижний угол (x2, y2): (180, 60)
Эти координаты позволят разместить кнопку внутри панели, начиная с 20 пикселей от верхнего края и 20 пикселей от левого края панели, шириной - 160 пикселей (180 минус 20) и высотой - 40 пикселей (60 минус 20). По крайней мере, теперь у вас есть математическое объяснение.
Понимание библиотечных файлов при разработке на MQL5
В MQL5 файлы ".mqh" - это заголовочные файлы, используемые для организации и модуляции кода в платформе MetaTrader 5, которая в основном используется для разработки торговых алгоритмов и пользовательских индикаторов. Файлы являются важнейшим компонентом для эффективного и поддерживаемого управления кодом в сложных проектах на MQL5.
В MetaEditor можно найти включаемый файл в папке MQL5 следующим образом:
Поиск включаемых файлов #include в MQL5
Ниже приведено объяснение их назначения и использования:
Назначение файлов (.mqh):
1. Возможность повторного использования кода: файлы ".mqh" предназначены для хранения повторно используемых компонентов кода, таких как определения функций, объявления классов и макроопределения, которые могут использоваться совместно в нескольких программах на MQL5.
2. Модульность: Разделяя код на разные файлы, разработчики могут создавать модульные приложения. Это позволяет изолировать, поддерживать и разрабатывать независимо определенные функциональные возможности кода.
3. Организация: Использование заголовочных файлов помогает логически организовать код. Разработчики могут хранить различные части своего приложения отдельно в различных файлах, например, размещать служебные функции или константы в специальных заголовках.
Типичное содержимое файлов (.mqh):
- Объявления функций: функции, которые могут использоваться в нескольких скриптах.
- Классы и структуры: Определения и реализации классов и структур, используемых в объектно-ориентированном программировании.
- Константы и макросы: определенные постоянные значения и макросы, которые можно использовать глобально.
- Включает в себя: Файл может также содержать другие файлы ".mqh", создавая тем самым иерархию или цепочку включенных функциональных возможностей.
Как использовать файлы (.mqh):
Чтобы использовать файл ".mqh" в вашем MQL5-скрипте (например, ".mq5" или другой файл ".mqh"), можно включить его с помощью директивы #include. Вот пример:Эта директива указывает компилятору включить содержимое "MyLibrary.mqh" в том месте, где появляется директива #include, позволяя вашему скрипту получить доступ к функциям, классам или макросам, определенным во включенном заголовке.
Преимущества:
- Улучшенная читабельность: Благодаря реферированию сложного кода в заголовки основной скрипт остается чище и более понятным.
- Упрощенное обслуживание: Изменения или обновления могут быть внесены в один заголовочный файл, и все содержащие его скрипты автоматически унаследуют эти обновления.
- Совместная работа: В командной среде разделение кода на несколько файлов может способствовать улучшению совместной работы, поскольку разные члены команды могут работать над отдельными частями кодовой базы без конфликтов.
Например, в настоящем проекте мы будем использовать файлы, представленные в данной таблице:
Название файла | Тип файла | Описание |
---|---|---|
Dialog.mqh: | Библиотечный файл; |
|
Button.mqh: | Библиотечный файл |
|
Edit.mqh: | Библиотечный файл |
|
Создание пользовательского алгоритма панели администратора в MQL5
Создадим новый экспертный шаблон в MetaEditor, назвав его "Панель администратора" или любым другим уникальным именем. Сохраните только свойства разработчика — ваше имя, версию и авторские права — и очистите остальную часть шаблона. Затем следуйте приведенному ниже руководству по созданию вашей панели.
Создаем новый эксперт в MetaEditor
При создании программы "Admin Panel.mq5" мы позаботились о том, чтобы каждый элемент служил определенной цели, сохраняя при этом согласованность работы. Основа нашей программы начинается с включения ключевых библиотек, таких как "Trade.mqh", "Dialog.mqh", "Button.mqh" и "Edit.mqh", которые предоставляют необходимые классы и функции для создания интерактивных интерфейсов на основе графиков. Внедряя их, мы используем существующие ресурсы, что позволяет нам сосредоточиться на пользовательской функциональности.
Затем мы определили класс "CScalableDialog" для управления масштабируемой и перетаскиваемой панелью внутри диаграммы. Этот класс расширяет "CDialog", который обеспечивает гибкую основу для нашей панели. При разработке этого мы реализовали такие методы, как "HandleDragging", чтобы пользователи могли легко перемещать панель, и "SetSize", чтобы обеспечить динамическое изменение размера. Это дает нам возможность создать удобный интерфейс, который может адаптироваться к различным размерам экрана и предпочтениям пользователей, что делает инструмент универсальным.
В рамках функции "OnInit" мы сосредоточились на инициализации компонентов интерфейса. Это включает в себя создание кнопок, полей ввода и настройку макета панели. Мы уделили пристальное внимание тому, чтобы каждый элемент был правильно расположен и функционален. Метод (adminPanel. Create) устанавливает главное диалоговое окно, в то время как последующие строки добавляют кнопки, такие как "sendButton", "quickMessageButton" и служебные кнопки для сворачивания и закрытия панели. Здесь мы позаботились о том, чтобы все компоненты плавно взаимодействовали внутри панели.
Функция "OnChartEvent" - это то, с помощью чего мы управляем логикой взаимодействия. Эта функция обрабатывает различные действия пользователя, такие как нажатия, перемещения мыши и события создания объектов. Вызывая такие методы, как "HandleDragging", мы даем возможность панели динамически реагировать на вводные данные пользователя. Структура коммутаторов в "OnChartEvent" позволяет нам эффективно направлять различные события к соответствующим хэндлерам, гарантируя, что интерфейс остается отзывчивым и интуитивно понятным.
Наконец, функции обработки щелчков кнопки ("OnSendButtonClick", "OnQuickMessageButtonClick", "OnMinimizeButtonClick" и "OnCloseButtonClick") - это то, с помощью чего программа выполняет определенные действия на основе пользовательского ввода. Например, "OnSendButtonClick" извлекает сообщение из поля ввода и отправляет его в Telegram, предоставляя обратную связь об успешном выполнении операции. Эти функции просты, но в то же время крайне важны, поскольку они преобразуют действия пользователя в значимые результаты. Здесь мы позаботились о том, чтобы интерфейс был не только функциональным, но и соответствовал ожиданиям пользователя.Интеграция Telegram API для общения с трейдерами
Интегрируя обмен сообщениями Telegram в программу MQL5, мы создали функцию "SendMessageToTelegram", чтобы облегчить взаимодействие между нашим торговым интерфейсом и чатом Telegram. Функция начинается с определения двух важнейших переменных: "bothToken" и "chatId". Это уникальные идентификаторы, предоставляемые Telegram, позволяющие нам аутентифицировать нашего бота и указать чат, в который будет отправлено сообщение. Жестко задавая эти значения, мы обеспечиваем, что сообщение будет отправлено нужному адресату безопасно и эффективно. Чтобы узнать больше о "BOT TOKEN" и "CHAT ID.", вы можете посетить api.telegram.org или мои предыдущие статьи.
Затем мы создаем строку "url", которая является конечной точкой для Telegram Bot API, объединяя ее с "botToken", чтобы создать полный URL, необходимый для отправки сообщений. Этот шаг имеет решающее значение, поскольку он устанавливает соединение с сервером Telegram, позволяя нашей системе взаимодействовать с ним программно. Наряду с этим, мы объявляем массив "символов" "post_data" для хранения полезной нагрузки сообщения, которая будет отформатирована в формате JSON в соответствии с требованиями API.
Чтобы отформатировать сообщение в формате JSON, мы объединяем "chatId" и фактический текст "сообщения" в строку "jsonMessage". Затем эта строка преобразуется в массив символов с помощью "StringtoCharArray", а размер массива изменяется соответствующим образом с помощью "ArrayResize", чтобы обеспечить его надлежащее соответствие данным. Этот шаг обеспечивает соответствие структуры сообщения ожиданиям Telegram API, что важно для успешной коммуникации.
Затем функция устанавливает переменную "timeout", чтобы определить, как долго программа должна ожидать ответа от сервера Telegram. Мы подготавливаем массив "result" для хранения ответа сервера и строку "responseHeaders" для любой дополнительной возвращаемой информации. Эти переменные важны для обработки ответа и диагностики любых проблем, которые могут возникнуть во время запроса.
Функция "WebRequest" - это то место, где происходит фактическое взаимодействие с Telegram API. Мы отправляем запрос "POST" на URL-адрес, передавая необходимые заголовки, тайм-аут и "post_data". Если запрос выполнен успешно, о чем свидетельствует ответ HTTP 200, функция выводит сообщение об успешном выполнении и возвращает значение "true". В противном случае он выводит код состояния HTTP и сообщение об ошибке, возвращая "false". Такая обработка ошибок жизненно важна для отладки и обеспечения надежности наших функций отправки сообщений.
Вот наш окончательный код после объединения всех фрагментов:
Тестирование панели администратора
После успешной компиляции мы запустили программу, и она заработала так, как было задумано.
Запуск админ-панели из советников: индекс Boom 500
Советы по использованию
Если вы создали Telegram-бота и канал и у вас есть доступ к Telegram bot API, просто нужно отредактировать исходный код ниже, чтобы жестко закодировать токен вашего бота и идентификатор чата для использования панели администратора. В качестве альтернативы можно просто получить токены и ввести их в скомпилированный советник, представленный во вложениях ниже, без необходимости изменять исходный код.
Ввод токена бота и идентификатора чата
Заключение
В заключение отметим, что разработка советника панели администратора в MQL5 демонстрирует значительный прогресс в управлении и общении с трейдерами непосредственно с платформы MetaTrader 5. Благодаря интеграции динамичного и масштабируемого графического пользовательского интерфейса с возможностями обмена сообщениями в режиме реального времени посредством Telegram, этот инструмент повышает эффективность и оперативность торговых операций. Возможность быстрой отправки сообщений или пользовательских уведомлений непосредственно с панели управления обеспечивает мгновенную связь, гарантируя, что важная информация будет передана без задержек. Этот проект подчеркивает потенциал сочетания удобных интерфейсов с надежными средствами коммуникации, прокладывая путь к более интерактивным и эффективным решениям по управлению торговлей.
Необходимы дальнейшие разработки, включая добавление других кнопок быстрого доступа, чтобы сократить время между вводом текста и отправкой сообщений, особенно в ответ на недавнюю динамику рынка. Мы будем углубляться в этот вопрос в будущих статьях настоящей серии. Я ценю вас, Трейдеры! Счастливых разработок.
Мы всегда рады вашим отзывам. Ознакомьтесь с прикрепленными файлами в ваших проектах.
Название файла | Описание файла |
---|---|
Admin Panel.mq5 | Исходный код панели администратора |
Admin Panel.ex5 | Советник панели администратора готов к запуску . Просто нужно ввести свой корректный токен бота и идентификатор чата |
(terminal64_bK0FbSvNmw) | Изображение, показывающее, как работает панель администратора. |
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/15417





- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Спасибо
Добро пожаловать! @Cracker Delicious
В MetaTrader 5, если вы планируете использовать скомпилированную панель администратора, приложенную в файле, обязательно нажмите Ctrl + O, чтобы включить WebRequest в настройках советника. Также добавьте ссылку на Telegram API, чтобы он работал.