https://mql5tutorial.com
В этом видео мы хотим посмотреть, как можно создать объект. На этот раз
это кнопка продажи. Итак, давайте посмотрим, как запрограммировать что-то подобное на
MQL5. Для этого нажмите на этот маленький значок вверху или
нажмите клавишу F4. Затем вызывается мета-редактор, и здесь мы нажимаем «Файл», «
Новый файл», «Советник из шаблона», продолжаем. Я дам ему имя
SimplerSellButton один раз, нажмите «Далее», «Далее» и закончите. Теперь все, что находится выше
функции OnTick, можно удалить здесь, а также удалить две строки комментариев. Мы
начинаем с включаемым заявлением, чтобы импортировать файл Trade.mqh,
который является частью MQL5 и предлагают нам упрощенные торговые функции. Затем мы создаем
экземпляр класса CTrade. Это называется сделкой, и мы будем использовать ее позже
для открытия упрощенных позиций. Также нам понадобятся две переменные. Один раз для
цены продажи и один раз для цены покупки. Это также значения, которые мы
сначала вычисляем в функции OnTick . С помощью функции SymbolInfoDouble для текущей валютной пары
на графике. Мы используем для расчета SYMBOL_ASK или SYMBOL_BID, а с помощью
NormalizeDouble и _Digits мы гарантируем, что правильное количество десятичных знаков
рассчитывается для соответствующей валютной пары . Теперь мы можем создать реальный объект. Это
делает функция ObjectCreate. Если вы выделите его один раз и нажмете клавишу F1,
мы увидим здесь ряд параметров, а если вы щелкните здесь, мы увидим, что
существует множество различных типов объектов. Мы хотим создать кнопку в этом видео
. Это был бы этот объект. Это кнопка, которая должна отображаться
на основном графике рядом со свечами. ObjectCreate нужны некоторые параметры. Первый параметр
здесь предназначен для текущей валютной пары на графике. Параметр № 2 задает имя для
объекта. Параметр номер 3 - это тип объекта. В нашем случае мы используем OBJ_BUTTON. Четвертый
параметр обозначает окно. Поскольку мы хотим использовать главное окно, это
окно 0. Если вы используете осцилляторы, второе окно обычно отображается
под свечами. Мы не хотим использовать это в данном случае. И мы
также устанавливаем последние два параметра здесь на 0. Они будут использоваться для других объектов, чтобы указать значение для
даты или цены, точки привязки. Мы сделали это, например, когда нарисовали линию над самой высокой свечой. Наша кнопка
всегда должна находиться на одном и том же месте, поэтому нам не нужны эти значения. Однако
я хотел бы изменить несколько свойств. Например, я хотел бы использовать ObjectSetInteger, чтобы
изменить это свойство для текущей валютной пары
на графике и объекта с именем SellButton
. Это называется OBJPROP_XDISTANCE. Мы устанавливаем его на 200, и это расстояние в
пикселях до края. Установка ширины кнопки работает аналогичным образом. Опять же, ObjectSetInteger
для текущей валютной пары на графике и объект с именем SellButton. На этот раз
мы меняем свойство OBJPROP_XSIZE и устанавливаем ширину кнопки равной 200.
Теперь мы повторяем все это снова для свойства OBJPROP_YDISTANCE. Это расстояние
по вертикали. Мы устанавливаем его на 250 пикселей, и теперь аналогичным образом поступаем
с высотой кнопки. Правильное свойство для этого называется OBJPROP_YSIZE, а высота
кнопки в нашем случае составляет всего 50 пикселей. И чтобы соблюдались значения расстояния,
мы все еще можем определить здесь, в каком углу мы хотим отображать объект. Для этого
меняем свойство OBJPROP_CORNER. В моем случае я выбрал угол 2. И чтобы кнопка
получила значимую метку, на этот раз мы используем ObjectSetString и меняем свойство
OBJPROP_TEXT. При этом мы меняем здесь обозначение на ПРОДАЖУ. Пока это готовый
объект, но по-прежнему отсутствует обработка событий, т.е. что должно происходить при нажатии кнопки
. Итак, мы должны запрограммировать это сейчас. MQL5 предоставляет для этого функцию под названием
OnChartEvent, и если вы отметите ее один раз и нажмете клавишу F1, мы увидим,
что здесь есть много событий, которые мы можем запрограммировать. В этом случае нас
интересует только то, был ли объект нажат. Мы можем определить это через CHARTEVENT_OBJECT_CLICK
. Сама функция получает здесь значения через некоторые параметры. Первый
параметр здесь обозначает само событие. В этом случае нас особенно интересует 3-й
параметр, потому что он содержит имя объекта. Но давайте сначала проверим, действительно ли идентификатор
содержит значение CHARTEVENT_OBJECT_CLICK. Потому что мы хотим реагировать
только на нажатие кнопки SellButton, а не на регистрацию щелчка на графике.
И если это так, то, конечно, мы также хотели бы знать, как называется
Информация по комментариям в разработке