English Español Deutsch 日本語
preview
Создание панели торгового администратора на MQL5 (Часть I): Создание интерфейса обмена сообщениями

Создание панели торгового администратора на MQL5 (Часть I): Создание интерфейса обмена сообщениями

MetaTrader 5Примеры | 10 марта 2025, 09:14
154 3
Clemence Benjamin
Clemence Benjamin

Введение

Вы можете взаимодействовать с пользователями вашей системы непосредственно из MetaTrader 5. Это один из способов, с помощью которого администратор может в режиме реального времени получать информацию о работе системы. Она также может служить подтверждением недавно переданных системных сигналов на социальный канал. Если вы дочитаете до конца, то сможете увидеть, как можно создать интерактивный интерфейс, показанный на этом рисунке:

Панель системного администратора.

Панель системного администратора: Индекс Boom 500, H1


Панель администратора

Панель управления администратора (MetaTrader 5) и приложение Telegram (получение сообщений от администратора в режиме реального времени)

В современном мире со сверхбольшим единовременным количеством сеансов пользователей, где миллионы сделок совершаются в течение миллисекунд, наличие эффективных каналов связи в торговых экосистемах является более важным, чем когда-либо. Представьте, что более 70% трейдеров в настоящее время используют платформы мгновенного обмена сообщениями, такие как Telegram, для получения обновлений в режиме реального времени, что демонстрирует тенденцию к внедрению интегрированных коммуникационных решений в торговых средах. Этот сдвиг подчеркивает необходимость того, чтобы трейдеры получали алгоритмический и немедленный доступ к экспертным выводам и рекомендациям.

Для трейдеров и разработчиков, использующих MetaTrader 5, задача заключается в преодолении разрыва между автоматизированной генерацией сигналов и эффективным вмешательством человека на больших расстояниях. Панель администратора предоставляет системным администраторам возможность осуществлять быструю и прямую связь с трейдерами, находящимися по всему миру. Используя эту систему, администраторы могут легко подтверждать или аннулировать сигналы, а также предоставлять важные комментарии или рекомендации трейдерам через такие платформы, как Telegram.

В настоящей статье рассматривается создание этой жизненно важной админ-панели с использованием MQL5. В ней предлагается пошаговое руководство по разработке этой программы, улучшающей торговую коммуникацию и надзор. Мы рассмотрим, как использовать возможности MQL5 для создания комплексной системы, способствующей эффективному управлению сигналами и обеспечивающей мгновенную связь с трейдерами, тем самым революционизируя способ проведения торговых операций во всем мире.

Схема передачи сигналов

Схема передачи сигналов

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

Вот краткое изложение того, что мы рассмотрим в данном обсуждении:

  1. Понимание координат при разработке графического пользовательского интерфейса MetaTrader 5
  2. Понимание библиотечных файлов при разработке на MQL5
  3. Создание пользовательского алгоритма панели администратора в MQL5
  4. Интеграция Telegram API для общения с трейдерами
  5. Тестирование панели администратора
  6. Советы по использованию
  7. Заключение


Понимание координат при разработке графического пользовательского интерфейса 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

Создаем новый эксперт в 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

Прикрепленные файлы |
Admin_Panel.mq5 (21.75 KB)
Admin_Panel.ex5 (121.76 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (3)
Cracker Delicious
Cracker Delicious | 22 авг. 2024 в 02:39
Спасибо.
Clemence Benjamin
Clemence Benjamin | 23 авг. 2024 в 10:09
Cracker Delicious #:
Спасибо

Добро пожаловать! @Cracker Delicious

Clemence Benjamin
Clemence Benjamin | 23 авг. 2024 в 13:43

В MetaTrader 5, если вы планируете использовать скомпилированную панель администратора, приложенную в файле, обязательно нажмите Ctrl + O, чтобы включить WebRequest в настройках советника. Также добавьте ссылку на Telegram API, чтобы он работал.

Разрешить WebRequest



Автоматизация торговли с помощью трендовой стратегии Parabolic SAR на MQL5: Создаем эффективный советник Автоматизация торговли с помощью трендовой стратегии Parabolic SAR на MQL5: Создаем эффективный советник
В этой статье мы автоматизируем торговлю с помощью стратегии Parabolic SAR на MQL5, создав эффективный советник. Советник будет совершать сделки по трендам, определяемым индикатором Parabolic SAR.
Переосмысливаем классические стратегии (Часть II): Пробои индикатора Bollinger Bands Переосмысливаем классические стратегии (Часть II): Пробои индикатора Bollinger Bands
В статье рассматривается торговая стратегия, объединяющая линейный дискриминантный анализ (Linear Discriminant Analysis, LDA) с полосами Боллинджера с использованием прогнозов категориальных зон для стратегических сигналов входа в рынок.
Возможности Мастера MQL5, которые вам нужно знать (Часть 34): Эмбеддинг цены с нетрадиционной RBM Возможности Мастера MQL5, которые вам нужно знать (Часть 34): Эмбеддинг цены с нетрадиционной RBM
Ограниченные машины Больцмана (Restricted Boltzmann Machines, RBM) — форма нейронной сети, разработанная в середине 1980-х годов, когда вычислительные ресурсы были непомерно дорогими. Вначале она опиралась на выборку Гиббса (Gibbs Sampling) и контрастивную дивергенцию (Contrastive Divergence) с целью уменьшения размерности или выявления скрытых вероятностей/свойств во входных обучающих наборах данных. Мы рассмотрим, как обратное распространение ошибки (backpropagation) может работать аналогичным образом, когда RBM "встраивает" (embeds) цены в прогнозирующий многослойный перцептрон.
Cоздание стратегии возврата к среднему на основе машинного обучения Cоздание стратегии возврата к среднему на основе машинного обучения
В данной статье предлагается очередной оригинальный подход к созданию торговых систем на основе машинного обучения, с использованием кластеризации и разметки сделок для стратегий возврата к среднему.