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

Тут можно читать онлайн Тимур Машнин - Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5 - бесплатно ознакомительный отрывок. Жанр: Прочая околокомпьтерная литература, издательство Литагент Ридеро. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

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

Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5 - описание и краткое содержание, автор Тимур Машнин, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Создание пользовательских индикаторов и советников для торговой платформы MetaTrader 5 с использованием языка программирования MQL5.

Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5 - читать онлайн бесплатно ознакомительный отрывок

Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5 - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Тимур Машнин
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Функцией ObjectSetInteger со свойством OBJPROP_WIDTH определяется размер объекта.

Функцией ObjectSetInteger со свойством OBJPROP_ANCHOR определяется привязка к цене сверху или снизу по центру.

Функцией ObjectSetInteger со свойством OBJPROP_HIDDEN – true определяется отсутствие созданных объектов в списке объектов графика символа.

Функцией ObjectSetString со свойством OBJPROP_TOOLTIP определяется содержание всплывающей подсказки при наведении указателя на объект.

В функции OnDeinit () уберем все добавленные графические объекты:

void OnDeinit (const int reason) {

ObjectsDeleteAll (0, -1, -1);

}

Более подробно о создании объектов на графике символа мы поговорим далее.

Графические объекты

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

bool ObjectCreate (

long chart_id, // идентификатор графика

string name, // имя объекта

ENUM_OBJECT type, // тип объекта

int sub_window, // индекс окна

datetime time1, // время первой точки привязки

double price1, // цена первой точки привязки

datetime timeN=0, // время N-ой точки привязки

double priceN=0, // цена N-ой точки привязки

datetime time30=0, // время 30-й точки привязки

double price30=0 // цена 30-точки привязки

);

Здесь параметр sub_window это индекс главного окна графика символа со значением 0 или индекс подокна другого индикатора, присоединенного к графику символа.

Например, если в предыдущем примере мы изменим код, и присоединим к графику символа, скажем, индикатор ADX, мы увидим следующее:

for (int i=start; i

{

if (close [i-1]> open [i-1] &&close [i-1]> EMA34HBuffer [i-1] &&close [i-1]> EMA34LBuffer [i-1] &&low [i-1]> EMA125Buffer [i-1] &&low [i-1]> PSARBuffer [i-1] &&EMA125Buffer [i-1]

if (!ObjectCreate (0,«Buy»+i, OBJ_ARROW,0,time [i-1],high [i-1]))

{

return (false);

}

if (!ObjectCreate (0,«Buy1»+i, OBJ_ARROW,1,time [i-1],high [i-1]))

{

return (false);

}

ObjectSetInteger (0,«Buy»+i, OBJPROP_COLOR, clrGreen);

ObjectSetInteger (0,«Buy»+i, OBJPROP_ARROWCODE,233);

ObjectSetInteger (0,«Buy»+i, OBJPROP_WIDTH,2);

ObjectSetInteger (0,«Buy»+i, OBJPROP_ANCHOR, ANCHOR_UPPER);

ObjectSetInteger (0,«Buy»+i, OBJPROP_HIDDEN, true);

ObjectSetString (0,«Buy»+i, OBJPROP_TOOLTIP, close [i-1]);

ObjectSetInteger (0,«Buy1»+i, OBJPROP_COLOR, clrGreen);

ObjectSetInteger (0,«Buy1»+i, OBJPROP_ARROWCODE,233);

ObjectSetInteger (0,«Buy1»+i, OBJPROP_WIDTH,2);

ObjectSetInteger (0,«Buy1»+i, OBJPROP_ANCHOR, ANCHOR_UPPER);

ObjectSetInteger (0,«Buy1»+i, OBJPROP_HIDDEN, true);

ObjectSetString (0,«Buy1»+i, OBJPROP_TOOLTIP, close [i-1]);

}

if (close [i-1] EMA34LBuffer [i-1] &&EMA125Buffer [i-1]> EMA34HBuffer [i-1]) {

if (!ObjectCreate (0,«Sell»+i, OBJ_ARROW,0,time [i-1],low [i-1]))

{

return (false);

}

if (!ObjectCreate (0,«Sell1»+i, OBJ_ARROW,1,time [i-1],low [i-1]))

{

return (false);

}

ObjectSetInteger (0,«Sell»+i, OBJPROP_COLOR, clrRed);

ObjectSetInteger (0,«Sell»+i, OBJPROP_ARROWCODE,234);

ObjectSetInteger (0,«Sell»+i, OBJPROP_WIDTH,2);

ObjectSetInteger (0,«Sell»+i, OBJPROP_ANCHOR, ANCHOR_LOWER);

ObjectSetInteger (0,«Sell»+i, OBJPROP_HIDDEN, true);

ObjectSetString (0,«Sell»+i, OBJPROP_TOOLTIP, close [i-1]);

ObjectSetInteger (0,«Sell1»+i, OBJPROP_COLOR, clrRed);

ObjectSetInteger (0,«Sell1»+i, OBJPROP_ARROWCODE,234);

ObjectSetInteger (0,«Sell1»+i, OBJPROP_WIDTH,2);

ObjectSetInteger (0,«Sell1»+i, OBJPROP_ANCHOR, ANCHOR_LOWER)

ObjectSetInteger (0,«Sell1»+i, OBJPROP_HIDDEN, true);

ObjectSetString (0,«Sell1»+i, OBJPROP_TOOLTIP, close [i-1]);

}

}

Нумерация подокон идет сверху вниз в порядке отображения Тип отображаемого - фото 46

Нумерация подокон идет сверху вниз в порядке отображения.

Тип отображаемого объекта задается перечислением ENUM_OBJECT, которое можно посмотреть в справочнике.

После добавления графических объектов, не забываем их удалять в функции обратного вызова OnDeinit (), используя функцию ObjectDelete:

bool ObjectDelete (

long chart_id, // chart identifier

string name // object name

);

Или используя функцию ObjectsDeleteAll:

int ObjectsDeleteAll (

long chart_id, // chart identifier

int sub_window=-1, // window index

int type=-1 // object type

);

Помимо вышеупомянутых функций ObjectCreate, ObjectDelete и ObjectsDeleteAll, MQL5 предлагает набор функций для работы с графическими объектами: ObjectName, ObjectFind, ObjectGetTimeByValue, ObjectGetValueByTime, ObjectMove, ObjectsTotal, ObjectGetDouble, ObjectGetInteger, ObjectGetString, ObjectSetDouble, ObjectSetInteger, ObjectSetString, TextSetFont, TextOut, TextGetSize.

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

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

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

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

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

void ChartRedraw (

long chart_id=0 // идентификатор графика

);

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

С помощью функции ObjectSetDouble устанавливаются такие свойства графического объекта, как OBJPROP_PRICE – изменение параметра price функции ObjectCreate, OBJPROP_LEVELVALUE – определение уровней для таких объектов, как инструменты Фиббоначи и Вилы Эндрюса, OBJPROP_SCALE – определение масштаба для таких объектов, как инструменты Ганна и Дуги Фибоначчи, OBJPROP_ANGLE – определение угла объекта, т.е. возможность повернуть объект, который изначально не имеет жесткой привязки, например, повернуть текст, OBJPROP_DEVIATION – определение отклонения для объекта Канал стандартного отклонения.

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

int OnCalculate (const int rates_total,

const int prev_calculated,

const datetime &time [],

const double &open [],

const double &high [],

const double &low [],

const double &close [],

const long &tick_volume [],

const long &volume [],

const int &spread [])

{

// – —

ArraySetAsSeries (time, true);

ArraySetAsSeries (high, true);

ArraySetAsSeries (low, true);

ArraySetAsSeries (close, true);

ObjectDelete (0,«Price»);

if (!ObjectCreate (0,«Price», OBJ_HLINE,0,time [1],close [1]))

{

return (false);

}

ObjectSetInteger (0,«Price», OBJPROP_COLOR, clrGreen);

ObjectSetInteger (0,«Price», OBJPROP_WIDTH,1);

ObjectSetString (0,«Price», OBJPROP_TOOLTIP, close [1]);

if (open [1]> close [1])

ObjectSetDouble (0,«Price», OBJPROP_PRICE, low [1]);

if (open [1]

ObjectSetDouble (0,«Price», OBJPROP_PRICE, high [1]);

// – - return value of prev_calculated for next call

return (rates_total);

}

//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

void OnDeinit (const int reason) {

ObjectsDeleteAll (0, -1, -1);

}

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

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

int OnCalculate (const int rates_total,

const int prev_calculated,

const datetime &time [],

const double &open [],

const double &high [],

const double &low [],

const double &close [],

const long &tick_volume [],

const long &volume [],

const int &spread [])

{

// – —

ArraySetAsSeries (time, true);

ArraySetAsSeries (high, true);

ArraySetAsSeries (low, true);

ArraySetAsSeries (close, true);

ObjectDelete (0,«Line»);

ObjectDelete (0,«Price»);

if (!ObjectCreate (0,«Line», OBJ_VLINE,0,time [1],close [1]))

{

return (false);

}

ObjectSetInteger (0,«Line», OBJPROP_COLOR, clrBlue);

ObjectSetInteger (0,«Line», OBJPROP_WIDTH,1);

ObjectSetString (0,«Line», OBJPROP_TOOLTIP, close [1]);

if (!ObjectCreate (0,«Price», OBJ_TEXT,0,time [3],high [1]))

{

return (false);

}

ObjectSetString (0,«Price», OBJPROP_TEXT, close [1]);

ObjectSetInteger (0,«Price», OBJPROP_COLOR, clrBlack);

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Тимур Машнин читать все книги автора по порядку

Тимур Машнин - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5 отзывы


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


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x