Скачать MetaTrader 5

Смотри, как бесплатно скачать роботов

Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят

Понравился скрипт?
Оцени его работу в терминале MetaTrader 5

2015.07.08 09:55
Библиотеки

ObjectCreateAndSet - библиотека для MetaTrader 5

| Russian English 中文 Español Deutsch 日本語 Português

Просмотров:
1485
Рейтинг:
голосов: 21
\MQL5\Include\\MQL5\Scripts\

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

Другой файл — это скрипт с тестовым примером применения функций из прилагаемого файла (создает текстовую метку, постепенно поворачивает ее текст на 90 градусов, попутно меняя текст и его цвет).

I. Функции для создания объектов:

Cформированы на основе находящихся в Справочнике по MQL5. Основные отличия от одноименных функций в справочнике:

  • добавлены строки для установки всплывающих подсказок и строки для выбора установки видимости объектов на различных таймфреймах;
  • убраны строки с функциями формирования объектов при не заданных координатах, ценах, точках привязок (за исключением в VLineCreate(...) и EventCreate(...));
  • за счет имеющихся в прилагаемом файле функций по установке (изменению) свойств объектов, при создании объектов добавлены дополнительные условия проверки успешности установки значений свойств.

Список находящихся в файле функций для создания объектов:

Имя
Краткое описание
Тип объекта

VLineCreate

Создает вертикальную линию

OBJ_VLINE

HLineCreate

Создает горизонтальную линию

OBJ_HLINE

TrendCreate

Создает линию тренда по заданным координатам

OBJ_TREND

ArrowedLineCreate

Создает линию со стрелкой по заданным координатам

OBJ_ARROWED_LINE

ChannelCreate

Создает равноудаленный канал по заданным координатам

OBJ_CHANNEL

RectangleCreate

Создает прямоугольник по заданным координатам

OBJ_RECTANGLE

TriangleCreate

Создает треугольник по заданным координатам

OBJ_TRIANGLE

EllipseCreate

Создает эллипс по заданным координатам

OBJ_ELLIPSE

ArrowCreate
Создает OBJ_ARROW
OBJ_ARROW
TextCreate Создает объект "Текст"
OBJ_TEXT

LabelCreate

Создает текстовую метку

OBJ_LABEL

ButtonCreate

Создает кнопку

OBJ_BUTTON

BitmapCreate

Создает рисунок в окне графика

OBJ_BITMAP

BitmapLabelCreate

Создает объект "Графическая метка"

OBJ_BITMAP_LABEL

EditCreate

Создает объект "Поле ввода"

OBJ_EDIT

EventCreate

Создает объект "Событие" на графике

OBJ_EVENT

RectLabelCreate

Создает прямоугольную метку

OBJ_RECTANGLE_LABEL

 

II. Функции установки значений свойств:

Через ObjectSetDouble(...), ObjectSetInteger(...) и ObjectSetString(...) без указания модификатора:


Имя функции
Перечисление
Свойство
Краткое описание
Тип свойства
1. ObSetDouble ENUM_OBJECT_PROPERTY_DOUBLE OBJPROP_SCALE Масштаб (свойство объектов Ганна и объекта "Дуги Фибоначчи") double
OBJPROP_ANGLE
Угол. Для объектов с еще не заданным углом, созданных из программы, значение равно EMPTY_VALUE
double
OBJPROP_DEVIATION Отклонение для канала стандартного отклонения
double
2. ObSetIntegerAlign ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_ALIGN Горизонтальное выравнивание текста в объекте "Поле ввода" (OBJ_EDIT)
ENUM_ALIGN_MODE
3. ObSetIntegerAncorPoint ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_ANCHOR
Положение точки привязки графических объектов OBJ_LABEL, OBJ_BITMAP_LABEL и OBJ_TEXT
ENUM_ANCHOR_POINT
4.
ObSetIntegerArrowAncor
ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_ANCHOR Положение точки привязки графического объекта OBJ_ARROW
ENUM_ARROW_ANCHOR
5. ObSetIntegerArrowCode
ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_ARROWCODE Код OBJ_ARROW
char
6. ObSetIntegerBool ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_BACK
Объект на заднем плане
bool
OBJPROP_FILL Заливка объекта цветом (для OBJ_RECTANGLE, OBJ_TRIANGLE, OBJ_ELLIPSE, OBJ_CHANNEL, OBJ_STDDEVCHANNEL,OBJ_REGRESSION) bool
OBJPROP_HIDDEN Запрет на показ имени графического объекта в списке объектов из меню терминала "Графики" - "Объекты" - "Список объектов". Значение true позволяет скрыть ненужный для пользователя объект из списка. По умолчанию true устанавливается для объектов, которые отображают события календаря, историю торговли, а также для созданных из MQL5-программы. Для того чтобы увидеть такие графические объекты и получить доступ к их свойствам, нужно нажать
кнопку "Все" в окне "Список объектов".
bool
OBJPROP_SELECTED
Выделенность объекта bool
OBJPROP_READONLY
Возможность редактирования текста в объекте Edit bool
OBJPROP_SELECTABLE
Доступность объекта bool
OBJPROP_RAY_LEFT
Луч продолжается влево bool
OBJPROP_RAY_RIGHT Луч продолжается вправо bool
OBJPROP_RAY Вертикальная линия продолжается на все окна графика bool
OBJPROP_ELLIPSE Отображение полного эллипса для объекта "Дуги Фибоначчи" (OBJ_FIBOARC) bool
OBJPROP_DRAWLINES Отображение линий для волновой разметки Эллиота bool
OBJPROP_STATE Состояние кнопки (Нажата/Отжата) bool
OBJPROP_DATE_SCALE Признак отображения шкалы времени для объекта "График" bool
OBJPROP_PRICE_SCALE Признак отображения ценовой шкалы для объекта "График" bool
7. ObSetIntegerBorderType ENUM_OBJECT_PROPERTY_INTEGER
OBJPROP_BORDER_TYPE
Тип рамки для объекта "Прямоугольная рамка"
ENUM_BORDER_TYPE
8. ObSetIntegerColor ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_COLOR Цвет (в зависимости от типа объекта это цвет линии, текста; и т.д.) color
OBJPROP_BGCOLOR Цвет фона для OBJ_EDIT, OBJ_BUTTON, OBJ_RECTANGLE_LABEL color
OBJPROP_BORDER_COLOR Цвет рамки для объекта OBJ_EDIT и OBJ_BUTTON color
9. ObSetIntegerCorner
ENUM_OBJECT_PROPERTY_INTEGER
OBJPROP_CORNER Угол графика для привязки графического объекта
ENUM_BASE_CORNER
10. ObSetIntegerInt ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_WIDTH Толщина линии int
OBJPROP_LEVELS Количество уровней int
OBJPROP_FONTSIZE Размер шрифта int
OBJPROP_TIMEFRAMES Видимость объекта на таймфреймах (набор флагов flags) int
OBJPROP_XDISTANCE Дистанция в пикселях по оси X от угла привязки (см. примечание в Справочнике по MQL5) int
OBJPROP_YDISTANCE Дистанция в пикселях по оси Y от угла привязки (см. примечание в Справочнике по MQL5)
int
OBJPROP_XSIZE Ширина объекта по оси X в пикселях. Задается для объектов OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL int
OBJPROP_YSIZE Высота объекта по оси Y в пикселях. Задается для объектов OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL int
OBJPROP_XOFFSET X-координата левого верхнего угла прямоугольной области видимости в графических объектах "Графическая метка" и "Рисунок" (OBJ_BITMAP_LABEL и OBJ_BITMAP). Значение задается в пикселях относительного верхнего левого угла исходного изображения int
OBJPROP_YOFFSET Y-координата левого верхнего угла прямоугольной области видимости в графических объектах "Графическая метка" и "Рисунок" (OBJ_BITMAP_LABEL и OBJ_BITMAP). Значение задается в пикселях относительного верхнего левого угла исходного изображения int
OBJPROP_CHART_SCALE Масштаб для объекта "График" (значение в диапазоне 0–5) int
11. ObSetIntegerLineStyle ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_STYLE
Стиль
ENUM_LINE_STYLE
12. ObSetIntegerLong ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_ZORDER Приоритет графического объекта на получение события нажатия мыши на графике (CHARTEVENT_CLICK). По умолчанию при создании значение выставляется равным нулю, но при необходимости можно повысить приоритет. При наложении объектов друг на друга событие CHARTEVENT_CLICK получит только один объект, чей приоритет выше остальных.
long

ObSetString ENUM_OBJECT_PROPERTY_STRING OBJPROP_NAME Имя объекта
string
OBJPROP_TEXT Описание объекта (текст, содержащийся в объекте) string
OBJPROP_TOOLTIP Текст всплывающей подсказки. Если свойство не задано, то показывается подсказка, автоматически сформированная терминалом. Можно отключить показ подсказки, установив для нее значение "\n" (перевод строки) string
OBJPROP_FONT Шрифт string
OBJPROP_SYMBOL Символ для объекта "График" string

 

Через ObjectSetDouble(...), ObjectSetInteger(...) и ObjectSetString(...) с указанием модификатора:


Имя
Перечисление Свойство Краткое описание Тип свойства
1. ObSetDoubleMod ENUM_OBJECT_PROPERTY_DOUBLE OBJPROP_PRICE Координата цены - double, модификатор=номер точки привязки double
OBJPROP_LEVELVALUE Значение уровня - double, модификатор=номер уровня
double
2.
ObSetIntegerLevelColorMod ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_LEVELCOLOR Цвет линии-уровня - color, модификатор=номер уровня
color
3.
ObSetIntegerLevelStyleMod
ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_LEVELSTYLE
Стиль линии-уровня ENUM_LINE_STYLE, модификатор=номер уровня
ENUM_LINE_STYLE
4.
ObSetIntegerLevelWidthMod
ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_LEVELWIDTH
Толщина линии-уровня - int, модификатор=номер уровня
int
5. ObSetIntegerTimeMod ENUM_OBJECT_PROPERTY_INTEGER OBJPROP_TIME
Координата времени - datetime, модификатор=номер точки привязки
datetime
6. ObSetStringMod ENUM_OBJECT_PROPERTY_STRING OBJPROP_LEVELTEXT Описание уровня - string, модификатор=номер уровня string
OBJPROP_BMPFILE
Имя BMP-файла для объекта "Графическая метка" - string. Смотрите также в Справочнике: Ресурсы. Модификатор: 0-состояние ON, 1-состояние OFF string

 

Дополнительные функции в файле:



bool ObDelete (long chart_ID,string name)
Удаление одиночного объекта с известным именем

 

III. Cпособы применения файла:

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

При втором варианте удобно, с моей точки зрения, применить его при создании какого-либо кода сначала как включаемый файл. И лишь после того, как в коде будут прописаны все обращения к функциям из него, затем удалить из создаваемого кода строку ссылки на файл(#include...).

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

Применение в виде включаемого файла:

  1. Сохраните прилагаемый выше файл ObjectCreateAndSet.mqh в папке "Include". Для вставки файла в эту папку, ее можно открыть через Навигатор в MetaEditor, кликнув в Навигаторе на папке с названием "Include" правой кнопкой мыши и затем нажав в открывшемся меню на строку "Открыть папку".

  2. При создании кода, где будут применяться функции из этого файла, скопируйте в самом верху файла строку с #include... и поставьте ее затем в верху создаваемого вами кода:
    #include <ObjectCreateAndSet.mqh>
    При необходимости, в прилагаемом выше файле тестового кода можно посмотреть, куда можно примерно поставить эту строку.

  3. После этого скомпилируйте создаваемый вами код. Это сделает доступным видеть подсказку имен имеющихся в подключаемом файле функций при наборе первых букв из их имен:

Подсказка полного имени функции после ввода первых букв её названия

Рис.1. Всплывающая подсказка после набора первых букв имени функции

Рис.2. Всплывающая подсказка с параметрами для выбранной функции

На всякий случай упомяну, что содержащиеся в каком-либо конкретном файле функции удобно смотреть и через Список функций на панели инструментов MetaEditor:

Рис.3. Кнопка для вызова списка функций, содержащихся в файле

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

Рис.4. После нажатия кнопки вызова списка функций открывается список функций в файле (удобно для быстрого перехода к коду какой-либо функции и/или просто для просмотра имеющихся)

Обновления:

  • 2015.09.14: В функции ObDelete() добавлен вывод имени объекта в журнал вкладки терминала "Эксперты", если при удалении объекта возникла ошибка. Это облегчает поиск в коде причины ошибки в случае ее возникновения.
ColorStepXCCX_HTF ColorStepXCCX_HTF

Индикатор ColorStepXCCX с возможностью изменения таймфрейма индикатора во входных параметрах.

ColorStdDev_HTF ColorStdDev_HTF

Индикатор ColorStdDev с возможностью изменения таймфрейма индикатора во входных параметрах.

ColorTrend_CF_HTF ColorTrend_CF_HTF

Индикатор ColorTrend_CF с возможностью изменения таймфрейма индикатора во входных параметрах.

ColorStepXCCXTrend_x10 ColorStepXCCXTrend_x10

Индикатор ColorStepXCCXTrend_x10 отображает направление движения осциллятора ColorStepXCCX с десяти разных таймфреймов.