Обсуждение статьи "Трейдинг с экономическим календарём MQL5 (Часть 11): Модульная новостная панель на Canvas"
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Опубликована статья Трейдинг с экономическим календарём MQL5 (Часть 11): Модульная новостная панель на Canvas:
В части 10 вся программа находилась в одном файле. Все аспекты — построение пользовательского интерфейса, фильтрация событий, управление прокруткой, определение наведения курсора, перетаскивание панели и торговая логика — были реализованы в одном месте. В информационной панели использовались объекты графика MetaTrader 5. Каждая строка события требовала отдельного создания и размещения нескольких объектов-меток; при перетаскивании панели при каждом движении мыши приходилось перемещать каждый объект, а полоса прокрутки состояла из трёх объектов, управляемых независимо друг от друга. Цвета были жёстко заданы, а размер макета был фиксированным.
В части 11 всё это заменяется системой отрисовки на основе Canvas и архитектурой, состоящей из четырёх модулей. Объекты графика больше не используются. Вместо них используется единое растровое изображение Canvas, на котором программа рисует напрямую, а поверх него — второй Canvas в качестве оверлея-разделителя. Вся панель — фон, заголовок, чипы фильтров, строки событий, полоса прокрутки, всплывающее уведомление и баннер обратного отсчёта — отрисовывается за один проход. Поскольку все элементы рисуются, а не создаются из объектов, макет адаптируется к изменениям во время выполнения: размеры информационной панели являются переменными, ширина столбцов масштабируется пропорционально, а полная перерисовка выполняется одним вызовом функции.
Программа состоит из четырёх специализированных модулей. Модуль ядра содержит все общие данные — палитру темы, структуры событий, состояние прокрутки и константы макета. Логический модуль отвечает за все операции с данными — загрузку событий, применение фильтров, построение плана строк и управление поиском кандидатов для сделок. Модуль рендеринга отвечает за всю отрисовку — он считывает данные из слоя данных и рисует на Canvas, не изменяя состояние. Модуль взаимодействия отвечает за весь пользовательский ввод — преобразует движения мыши, щелчки, перетаскивания и события колёсика в изменения состояния и запускает перерисовку. Сторожевой макрос, определённый в основной точке входа, предотвращает дублирование объявлений при совместной компиляции всех четырёх модулей. Вкратце, вот чего мы намерены достичь.
Автор: Allan Munene Mutiiria