Мультивалютный индикатор Multi Symbol Price Divergence

Мультивалютный индикатор Multi Symbol Price Divergence
Для анализа совместного движения цен множества инструментов в один и тот же период времени, удобно и более наглядно, когда котировки находятся в одном окне графика на общей ценовой шкале. Для этих целей был разработан мультивалютный индикатор для анализа расхождения цен Multi Symbol Price Divergence для использования в торговом терминале Metatrader 5.

Во внешних параметрах индикатора можно указать до 5 символов для анализа. Итого вместе с текущим символом можно анализировать 6 символов одновременно. Индикатор определит, есть ли введённые в параметрах символы на сервере и добавит их в окно Обзор Рынка (Market Watch). Если нужно меньше символов, то достаточно оставить пустые значения или, если нужно включать время от времени разное количество символов можно просто добавить перед названием пробел, что будет означать, что программа не найдёт такого символа на сервере.

Для цен каждого символа можно включить инверсию. То есть, при включенной инверсии, цена символа для которого включена инверсия, будет перевёрнутой. Это может быть полезным, когда в списке используемых для анализа символов присутствуют такие, когда допустим USD (доллар США), может быть как базовой валютой, так и котируемой. Например, в валютной паре EURUSD доллар является котируемой валютой, а в валютной паре USDCHF - базовой. В таком случае, если на графике текущий символ EURUSD, то для USDCHF можно включить инверсию, получив таким образом более удобное представление цен для анализа.

Разработка мультивалютного индикатора волатильности на MQL5

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

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

Значения индикатора Average True Range (ATR) будем получать уже рассчитанные для каждого символа, то есть по хэндлу. Для примера всего будет шесть символов, названия которых можно установить во внешних параметрах индикатора. Корректность введённых названий будет контролироваться. Если того или иного указанного в параметрах символа не найдётся в общем списке, расчёты по нему производиться не будут. Все найденные символы будут помещены в окно Обзор рынка (Market Watch), если их в нём ещё нет.

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

Элементы управления в подокне индикатора. Полоса прокрутки (скроллинг).

Элементы управления в подокне индикатора. Полоса прокрутки (скроллинг).
Продолжим изучение элементов управления и на этот раз рассмотрим такой элемент, как прокрутка (скроллинг). Также, как и в предыдущей статье "Элементы управления в подокне индикатора. Кнопки.", будем работать в подокне индикатора. Предыдущую статью нужно изучить, так как там подробно объяснялось о том, как работать с событиями в функции OnChartEvent() и здесь будет о них только поверхностное упоминание. В этой статье создадим список всех показателей символа, которые только возможно получить с помощью MQL5, и так как список будет довольно большой, чтобы поместиться в подокне, сделаем для него вертикальный скроллинг.

До этого на этом сайте, во всех статьях по программированию на MQL5, при построении списков использовался графический объект OBJ_LABEL (текстовая метка). Но на этот раз будем использовать канву для отображения текста в ней. Удобство этого метода в том, что вместо множества объектов OBJ_LABEL будет использоваться только один - OBJ_BITMAP_LABEL (графическая метка). На канве можно рисовать все элементы интерфейса, но в этот раз мы ограничимся только выводом текста.

Скроллинг сделаем максимально простым. Обычно в верхней и нижней части делают стрелочки вверх и вниз, но здесь они будут исключены. Прокрутка будет состоять только из фона и скролл-бара (скролл). При наведении на скролл он будет менять цвет. При нажатии кнопки мыши на скролле цвет также будет меняться, давая пользователю понять, что захват произведён и скролл можно перетаскивать. Для создания элементов скроллинга будем использовать графические объекты типа OBJ_RECTANGLE_LABEL (прямоугольная метка).