📚 Hub Books: Онлайн-чтение книгРазная литератураЯзык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Издание 2-е, исправленное и дополненное - Тимур Машнин

Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Издание 2-е, исправленное и дополненное - Тимур Машнин

Шрифт:

-
+

Интервал:

-
+
1 ... 6 7 8 9 10 11 12 13 14 ... 23
Перейти на страницу:
функций ObjectCreate, ObjectDelete и ObjectsDeleteAll, MQL5 предлагает целый набор функций для работы с графическими объектами: ObjectName, ObjectFind, и другие.

Функции ObjectName, ObjectFind, ObjectGetTimeByValue, ObjectGetValueByTime, ObjectsTotal, ObjectGetDouble, ObjectGetInteger, ObjectGetString, TextGetSize — это функции, возвращающие информацию.

Функции ObjectSetDouble, ObjectSetInteger, ObjectSetString, TextSetFont — это функции устанавливающие свойства объекта.

Функция ObjectMove перемещает объект в окне.

Функция TextOut выводит текст в пиксельный массив для отображения объектом OBJ_BITMAP_LABEL или OBJ_BITMAP.

После добавления графических объектов рекомендуется принудительно перерисовать график символа с помощью функции ChartRedraw.

Надо отметить, что функция ObjectCreate позволяет создавать программным способом те графические объекты, которые вы можете вручную нарисовать на графике символа, пользуясь панелью инструментов клиентского терминала.

С помощью функции ObjectSetDouble устанавливаются такие свойства графического объекта, как OBJPROP_PRICE — изменение параметра price функции ObjectCreate,

OBJPROP_LEVELVALUE — определение уровней для таких объектов, как инструменты Фиббоначи и Вилы Эндрюса,

OBJPROP_SCALE — определение масштаба для таких объектов, как инструменты Ганна и Дуги Фибоначчи,

OBJPROP_ANGLE — определение угла объекта, т. е. возможность повернуть объект, который изначально не имеет жесткой привязки, например, повернуть текст,

OBJPROP_DEVIATION — определение отклонения для объекта Канал стандартного отклонения.

Как пример использования OBJPROP_PRICE:

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

Пример использования OBJPROP_ANGLE:

Этот код создает вертикальную линию с подписью цены закрытия предыдущего бара.

С помощью функции ObjectSetInteger устанавливаются такие свойства графического объекта, как цвет, стиль, размер и др.

С помощью функции ObjectSetString можно изменить имя объекта, при этом объект со старым именем будет удален и будет создан объект с новым именем, установить текст для таких объектов, как текст, кнопка, метка, поле ввода, событие, установить текст всплывающей подсказки для объекта, описание уровня для объектов, имеющих уровни, шрифт, имя BMP-файла для объекта «Графическая метка» и «Рисунок», символ для объекта «График».

Функция TextSetFont позволяет установить тип шрифта текста, его размер, стиль и угол наклона для объектов, содержащих текст.

Как уже было сказано, функция TextOut позволяет скомбинировать текст и изображение.

Например, показанный на слайде код выводит текст в изображение, залитое одним цветом.

Здесь ExtImg это пиксельный массив, представляющий изображение 100х100 пикселей.

Функция ObjectCreate создает объект «Графическая метка» OBJ_BITMAP_LABEL, а функция ObjectSetString устанавливает для этого объекта файл изображения с именем::IMG. По поводу знака «::» справочник говорит следующее:

Для использования своего ресурса в коде нужно перед именем ресурса добавлять специальный признак"::».

Функция ArrayFill заполняет пиксельный массив пикселями белого цвета.

Функция TextOut выводит в пиксельный массив слово «Text».

Функция ResourceCreate создает из пиксельного массива ресурс с именем::IMG.

В итоге на белом фоне отображается надпись «Text».

Также можно вывести текст на готовое изображение.

Здесь функция ResourceReadImage считывает существующее изображение из папки Images окна Navigator редактора MQL5 в пиксельный массив::IMG, связанный с объектом «Графическая метка», а функция TextOut выводит в пиксельный массив слово «Text».

То же самое можно проделать и с объектом «Рисунок» OBJ_BITMAP.

Здесь мы в функции OnCalculate создаем объект «Рисунок» с помощью функции ObjectCreate, которая прикрепляет рисунок к цене закрытия последнего бара.

И далее мы заполняем связанный с этим объектом файл, текстом и изображением.

В качестве примера использования графических объектов, рассмотрим создание индикатора, который выводит в небольшое окно на графике символа тот же график, но с другим временным периодом.

Для этого используем графический объект OBJ_CHART.

В качестве входных параметров индикатора используем символ графика и его период.

В функции OnInit создадим графический объект График OBJ_CHART.

По умолчанию точка привязки этого объекта — левый верхний угол графика.

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

С помощью свойства объектов OBJPROP_CHART_ID функции ObjectGetInteger получим идентификатор графика, используя который мы теперь можем применять функции работы с графиками и свойства графиков.

Откроем наш график символа, к которому мы хотим присоединить индикатор, и нажав правой кнопкой мышки, выберем пункт в контекстном меню Шаблоны и Сохранить шаблон.

Теперь мы можем перенести на наш графический объект все настройки и индикаторы графика символа.

Присоединив индикатор к графику символа, мы можем нажать на нем правой кнопкой мышки и изменить его свойства, включая его период, размеры и др.

Функция PlaySound

Функция PlaySound воспроизводит звуковой файл.

Например, это можно делать при появлении сигнала индикатора для напоминания.

В качестве примера добавим звуковой сигнал в наш индикатор Impulse keeper при появлении первого сигнала на покупку или продажу.

Скачаем какой-нибудь WAV-сигнал из Интернета и поместим его файл в папку Sounds терминала.

Добавим код в индикатор Impulse keeper.

Здесь добавлены счетчики сигналов на продажу и покупку countBuy, countSell, для того, чтобы сигнал звучал только при появлении первого сигнала.

И если появляется сигнал на покупку или продажу, соответствующий счетчик увеличивается и звучит оповещение.

При дублирующем сигнале оповещение не звучит.

При окончании серии сигналов, счетчик обнуляется.

Функция OnChartEvent

Функция OnChartEvent является функцией обратного вызова, которая вызывается при взаимодействии пользователя с графиком символа и событиях, связанных с графическими объектами графика символа.

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

Для этого добавим в код индикатора функцию OnChartEvent, обрабатывающую событие щелчка мыши на графическом объекте индикатора.

Но сначала, здесь мы в функции OnCalculate с помощью

1 ... 6 7 8 9 10 11 12 13 14 ... 23
Перейти на страницу:

Комментарии

Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!

Никто еще не прокомментировал. Хотите быть первым, кто выскажется?