LABEL RECTANGLE ФОРЕКС

Лучшие Форекс брокеры 2021:

Содержание этой статьи:

2.8 Пишем пользовательский индикатор-гистограмму волатильности периода Н1

В этом уроке мы создадим индикатор-гистограмму в отдельном окне для определения средней волатильности. Для этого мы используем период график H1, чтобы точно видеть, какое движением в среднем проходит цена в пунктах за каждый анализируемый час. Цель этого урока: повторить уже пройденный материал, проанализировать бары на истории, а также научиться использовать буфер гистограммы.

Создаем индикатор волатильности

В редакторе MetaEditor жмем Файл -> Создать -> Пользовательский индикатор. Задаем все настройки по умолчанию, жмем далее, в окне параметров отображения ставим галочку «индикатор в отдельном окне«, а также создаем два отдельных буфера. Первый будет иметь тип гистограммы для расчета волатильности по часам, а второй — линия, чтобы видеть суммарное изменение волатильности всего графика.

Созданный код будет иметь следующий вид:

Сразу же изменим толщину гистограммы до трех, чтобы было пожирнее и весомее.

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

Честные Форекс брокеры:

Далее определимся с количеством дней для анализа свечей. Возьмем ни много ни мало 50 дней. Но, чтобы иметь возможность менять это значение, вынесем его во внешние настройки индикатора.

Добавим две переменные на глобальном уровне: PipsDivided для перевода пунктов в старый вариант отображения (про эту переменную я писал подробнее в этом уроке). Переменная TimeNewBar будет нужна для сохранения времени открытия текущей свечи.

Переходим к функции обработки событий OnInit. В нее нужно добавить проверку на количество знаков на счете брокера для множителя PipsDivided. Также перевести дни для анализа в часы, т.к. нами будет использоваться часовой график. Можно было сразу задать время в настройках в часах, но в днях это делать просто удобнее.

Дополнительно для пользователей, который захотят установить индикатор на любой ТФ, отличный от Н1 мы сделаем проверку ТФ графика. Если она не проходит — индикатор напишет об этом в журнале и самоликвидируется с графика.

Переходим к основной функции OnCalculate. Первой же проверкой нужно узнать, подгрузились ли все необходимые бары на график. И если нет, то принудительно перерисуем график. Возьмем для построения гистограммы последние 3000 баров, т.е. 3000 часов или 125 дней. Т.к. для каждой свечи анализ будет проходить только за последние 50 дней, то вычтем это значение из общего числа баров.

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

Надежные Форекс площадки:

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

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

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

Он начинается свой отчет с переменной i вышестоящего цикла, т.е. с выделенной свечи и идет он ровно обозначенное количество свечей подряд. Второе выражение i+CalculatedDays должно вести отчет от последней анализируемой свечи цикла первого уровня, т.е. i.

Чтобы не выйти за пределы массива из-за недостатка баров на графике нам необходимо сделать проверку. Если свеча на очередной итерации превысит максимально допустимое количество баров — второй цикл прерывается.

Расчет длины свечи прост, необходимо лишь вычесть от цены открытия свечи ее цену закрытия, перевести все в пункты и возвести в модуль, т.к. нам все равно в каком направлении двигалась анализируемая свеча.

Есть вам необходимо знать движения с учетом хвостов (теней), то просто измените цены Open, Close на High, Low.

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

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

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

Если вы все правильно написали, то полученный индикатор будет иметь следующий вид:

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

Создаем текстовый лейбл

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

В функцию TextCreate мы передаем ID графика, имя объекта, номер подокна, время для построения и значение бара гистограммы с отступом в 1 пункт вверх, текст в виде цифр, тип шрифта, размер шрифта, цвет объекта, угол наклона в 90 градусов, а также точку привязки к объекту.

Конечный код функции OnCalculate будет иметь вид:

Все, индикатор готов. Теперь все смотрится куда гармоничнее.

Если повнимательнее посмотреть на бары гистограммы, то можно увидеть простую закономерность: ночью, начиная с 22 часов до 7 утра рынок очень спокойный, тогда как в Американскую и Лондонскую торговые сессии график максимально волатильный. А значит во флете рынок находится больше ночью, чем днем. Наша команда использует данную особенность рынка в наших советниках Night Hawk и Sakura.

Заключение

В этом уроке мы создали небольшой индикатор (всего 131 строка), который определяет как почасовую, так и общую волатильность на графике терминала MetaTrader 4. Закрепили ранее полученную информацию и немного приблизились к званию «гуру» кодинга.

В свое время я написал для нашего сайта индикатор волатильности Truly Volatility по подобной логике. Единственное отличие его в том, что он также умеет определять волатильность по дням внутри рабочей недели. Я думаю, что зная основы, вам не составит труда повторить это в данном код при необходимости.

Тема: Графические объекты в MQL5

Прошу прощения — я просто не правильно задал вопрос в связи с тем, что только учусь программировать.
Попробую задать вопрос по другому.

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

Я так понял, что надо сперва удалить графические объекты, а потом обратно создать. Но, если объекты удалены, то доступ к его свойствам уже отсутствует и тогда, как по новой создавать эти объекты. , или я что то не понимаю ? А может быть есть другой способ — обновления графических объектов на графике?

Прошу Вас написать пример с комментариями, как это сделать.

Получено лайков: 1

  • Просмотр профиля
  • Сортировка сообщений
  • Найти все темы

Прошу прощения — я просто не правильно задал вопрос в связи с тем, что только учусь программировать.
Попробую задать вопрос по другому.

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

Я так понял, что надо сперва удалить графические объекты, а потом обратно создать. Но, если объекты удалены, то доступ к его свойствам уже отсутствует и тогда, как по новой создавать эти объекты. , или я что то не понимаю ? А может быть есть другой способ — обновления графических объектов на графике?

Прошу Вас написать пример с комментариями, как это сделать.

  • Просмотр профиля
  • Сортировка сообщений
  • Найти все темы

Получено лайков: 1

  • Просмотр профиля
  • Сортировка сообщений
  • Найти все темы
  • Просмотр профиля
  • Сортировка сообщений
  • Найти все темы

OnChartEvent() совершенно не для этого предназначена. А для вашей хотелки в самый раз OnInit() и OnDeinit(). Потому что при изменении ТФ или настроек терминал производит перезапуск индикатора, так как если бы вы его с нуля бросили на график. Ну, а OnChartEvent() нужна для того, чтоб при работающем индикаторе(без смены ТФ, настроек и пр.) следить за событиями на графике и дает возможность реагировать на них как раз не перезагружая весь индикатор и не меняя настроек.

Правильно. В OnInit() создаете, а в OnDeinit() удаляете.

Еще раз. В OnInit() создаете все нужные объекты, а в OnDeinit() удаляете все ненужные. Как оно все там работает, медленно и очень вдумчиво читаем

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

Примеров — вагон и еще маленькая тележка.
1. Кучи примеров есть
2. Тонны примеров есть
3. Еще больше примеров знает гугль.
А писать персональные гипотетические примеры на пальцАх, без привязки к конкретной задаче — это тот еще «сизифов труд».

Спасибо большое за помощь .

По Вашему совету почитал про OnDeinit() и разобрал примеры.
В итоге — написал функцию. и всё получилось

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

OBJ_RECTANGLE_LABEL

Координаты точки привязки задаются в пикселях. Можно выбрать угол привязки прямоугольной метки из перечисления ENUM_BASE_CORNER. Тип рамки для прямоугольной метки можно выбрать из перечисления ENUM_BORDER_TYPE.

Предназначена для создания и оформления пользовательского графического интерфейса.

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

//— описание
#property description "Скрипт создает графический объект \" Прямоугольная метка\ "."
//— покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//— входные параметры скрипта
input string InpName = "RectLabel" ; // Имя метки
input color InpBackColor = clrSkyBlue ; // Цвет фона
input ENUM_BORDER_TYPE InpBorder = BORDER_FLAT ; // Тип рамки
input ENUM_BASE_CORNER InpCorner = CORNER_LEFT_UPPER ; // Угол графика для привязки
input color InpColor = clrDarkBlue ; // Цвет плоской границы (Flat)
input ENUM_LINE_STYLE InpStyle = STYLE_SOLID ; // Стиль плоской границы (Flat)
input int InpLineWidth =3; // Толщина плоской границы (Flat)
input bool InpBack = false ; // Объект на заднем плане
input bool InpSelection = true ; // Выделить для перемещений
input bool InpHidden = true ; // Скрыт в списке объектов
input long InpZOrder =0; // Приоритет на нажатие мышью
//+——————————————————————+
//| Создает прямоугольную метку |
//+——————————————————————+
bool RectLabelCreate( const long chart_ID=0, // ID графика
const string name= "RectLabel" , // имя метки
const int sub_window=0, // номер подокна
const int x=0, // координата по оси X
const int y=0, // координата по оси Y
const int width=50, // ширина
const int height=18, // высота
const color back_clr= C'236,233,216' , // цвет фона
const ENUM_BORDER_TYPE border= BORDER_SUNKEN , // тип границы
const ENUM_BASE_CORNER corner= CORNER_LEFT_UPPER , // угол графика для привязки
const color clr= clrRed , // цвет плоской границы (Flat)
const ENUM_LINE_STYLE style= STYLE_SOLID , // стиль плоской границы
const int line_width=1, // толщина плоской границы
const bool back= false , // на заднем плане
const bool selection= false , // выделить для перемещений
const bool hidden= true , // скрыт в списке объектов
const long z_order=0) // приоритет на нажатие мышью
<
//— сбросим значение ошибки
ResetLastError ();
//— создадим прямоугольную метку
if (! ObjectCreate (chart_ID,name, OBJ_RECTANGLE_LABEL ,sub_window,0,0))
<
Print ( __FUNCTION__ ,
": не удалось создать прямоугольную метку! Код ошибки = " , GetLastError ());
return ( false );
>
//— установим координаты метки
ObjectSetInteger (chart_ID,name, OBJPROP_XDISTANCE ,x);
ObjectSetInteger (chart_ID,name, OBJPROP_YDISTANCE ,y);
//— установим размеры метки
ObjectSetInteger (chart_ID,name, OBJPROP_XSIZE ,width);
ObjectSetInteger (chart_ID,name, OBJPROP_YSIZE ,height);
//— установим цвет фона
ObjectSetInteger (chart_ID,name, OBJPROP_BGCOLOR ,back_clr);
//— установим тип границы
ObjectSetInteger (chart_ID,name, OBJPROP_BORDER_TYPE ,border);
//— установим угол графика, относительно которого будут определяться координаты точки
ObjectSetInteger (chart_ID,name, OBJPROP_CORNER ,corner);
//— установим цвет плоской рамки (в режиме Flat)
ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//— установим стиль линии плоской рамки
ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//— установим толщину плоской границы
ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,line_width);
//— отобразим на переднем (false) или заднем (true) плане
ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
//— включим (true) или отключим (false) режим перемещения метки мышью
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//— скроем (true) или отобразим (false) имя графического объекта в списке объектов
ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//— установим приоритет на получение события нажатия мыши на графике
ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
//— успешное выполнение
return ( true );
>
//+——————————————————————+
//| Перемещает прямоугольную метку |
//+——————————————————————+
bool RectLabelMove( const long chart_ID=0, // ID графика
const string name= "RectLabel" , // имя метки
const int x=0, // координата по оси X
const int y=0) // координата по оси Y
<
//— сбросим значение ошибки
ResetLastError ();
//— переместим прямоугольную метку
if (! ObjectSetInteger (chart_ID,name, OBJPROP_XDISTANCE ,x))
<
Print ( __FUNCTION__ ,
": не удалось переместить X-координату метки! Код ошибки = " , GetLastError ());
return ( false );
>
if (! ObjectSetInteger (chart_ID,name, OBJPROP_YDISTANCE ,y))
<
Print ( __FUNCTION__ ,
": не удалось переместить Y-координату метки! Код ошибки = " , GetLastError ());
return ( false );
>
//— успешное выполнение
return ( true );
>
//+——————————————————————+
//| Изменяет размер прямоугольной метки |
//+——————————————————————+
bool RectLabelChangeSize( const long chart_ID=0, // ID графика
const string name= "RectLabel" , // имя метки
const int width=50, // ширина метки
const int height=18) // высота метки
<
//— сбросим значение ошибки
ResetLastError ();
//— изменим размеры метки
if (! ObjectSetInteger (chart_ID,name, OBJPROP_XSIZE ,width))
<
Print ( __FUNCTION__ ,
": не удалось изменить ширину метки! Код ошибки = " , GetLastError ());
return ( false );
>
if (! ObjectSetInteger (chart_ID,name, OBJPROP_YSIZE ,height))
<
Print ( __FUNCTION__ ,
": не удалось изменить высоту метки! Код ошибки = " , GetLastError ());
return ( false );
>
//— успешное выполнение
return ( true );
>
//+——————————————————————+
//| Изменяет тип границы прямоугольной метки |
//+——————————————————————+
bool RectLabelChangeBorderType( const long chart_ID=0, // ID графика
const string name= "RectLabel" , // имя метки
const ENUM_BORDER_TYPE border= BORDER_SUNKEN ) // тип границы
<
//— сбросим значение ошибки
ResetLastError ();
//— изменим тип рамки
if (! ObjectSetInteger (chart_ID,name, OBJPROP_BORDER_TYPE ,border))
<
Print ( __FUNCTION__ ,
": не удалось изменить тип границы! Код ошибки = " , GetLastError ());
return ( false );
>
//— успешное выполнение
return ( true );
>
//+——————————————————————+
//| Удаляет прямоугольную метку |
//+——————————————————————+
bool RectLabelDelete( const long chart_ID=0, // ID графика
const string name= "RectLabel" ) // имя метки
<
//— сбросим значение ошибки
ResetLastError ();
//— удалим метку
if (! ObjectDelete (chart_ID,name))
<
Print ( __FUNCTION__ ,
": не удалось удалить прямоугольную метку! Код ошибки = " , GetLastError ());
return ( false );
>
//— успешное выполнение
return ( true );
>
//+——————————————————————+
//| Script program start function |
//+——————————————————————+
void OnStart ()
<
//— размеры окна графика
long x_distance;
long y_distance;
//— определим размеры окна
if (! ChartGetInteger (0, CHART_WIDTH_IN_PIXELS ,0,x_distance))
<
Print ( "Не удалось получить ширину графика! Код ошибки = " , GetLastError ());
return ;
>
if (! ChartGetInteger (0, CHART_HEIGHT_IN_PIXELS ,0,y_distance))
<
Print ( "Не удалось получить высоту графика! Код ошибки = " , GetLastError ());
return ;
>
//— определим координаты прямоугольной метки
int x=( int )x_distance/4;
int y=( int )y_distance/4;
//— установим размеры метки
int width=( int )x_distance/4;
int height=( int )y_distance/4;
//— создадим прямоугольную метку
if (!RectLabelCreate(0, InpName ,0,x,y,width,height, InpBackColor , InpBorder , InpCorner ,
InpColor , InpStyle , InpLineWidth , InpBack , InpSelection , InpHidden , InpZOrder ))
<
return ;
>
//— перерисуем график и подождем одну секунду
ChartRedraw ();
Sleep (1000);
//— изменим размер прямоугольной метки
int steps=( int ) MathMin (x_distance/4,y_distance/4);
for ( int i=0;i<steps;i++)
<
//— изменим размеры
width+=1;
height+=1;
if (!RectLabelChangeSize(0, InpName ,width,height))
return ;
//— проверим факт принудительного завершения скрипта
if ( IsStopped ())
return ;
//— перерисуем график и подождем 0.01 секунды
ChartRedraw ();
Sleep (10);
>
//— задержка в 1 секунду
Sleep (1000);
//— изменим тип рамки
if (!RectLabelChangeBorderType(0, InpName , BORDER_RAISED ))
return ;
//— перерисуем график и подождем 1 секунду
ChartRedraw ();
Sleep (1000);
//— изменим тип рамки
if (!RectLabelChangeBorderType(0, InpName , BORDER_SUNKEN ))
return ;
//— перерисуем график и подождем 1 секунду
ChartRedraw ();
Sleep (1000);
//— удалим метку
RectLabelDelete(0, InpName );
ChartRedraw ();
//— подождем 1 секунду
Sleep (1000);
//—
>

Индикатор для рисования на графике форекс

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

Самой популярной торговой платформой на рынке Форекс, считается терминал Meta Trader 4, вся прелесть данного терминала состоит в том, что в него можно установить огромнейшее количество индикаторов, на любой вкус и цвет, по сути дела платформа Мета Трейдер имеет практически безграничные возможности, в плане технического анализа. Индикаторами называются инструменты, которые разработаны для анализа ценовых графиков, как правило, для МТ4 они могут быть скомпелированы в двух форматах — это формат mql и форма exe.

Существует масса различных категорий индикаторов, они могут быть информационными, вспомогательными, трендовыми и осциялляторами, стрелочными и объемными, в этой же главе мы будем рассматривать индикаторы, которые могут открыть перед трейдером более высокие возможности в плане графического анализа. Первый инструмент, с которым мы хотим Вас познакомить — это индикатор VR Draw применяется он именно для рисования на графике, и кроме этого никакой информации, по входам и выходам из сделок не несет.

Для чего рисовать на ценовом графике?

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

Конечно же такие инструменты есть в МТ4, да и вообще, практически каждый торговый терминал обладает возможностями предоставления классических инструментов для рисования графических структур, такие как трендовые линии, уровни, различные прямоугольники и стрелочки, но в некоторых моментах, когда необходимо выразить более сложную структуру, к примеру в виде параболы, то этих инструментов бывает недостаточно. При таком варианте трейдеры устанавливают в терминал МТ4 дополнительные инструменты, которые позволяют открыть более широкие возможности для рисования.

С недавнего времени, правила установки индикаторов и торговых роботов в терминал МТ4 поменялись, ранее все было намного проще, все корневые папки находились в «Программ Файлз», и были в открытом доступе, сейчас же все немного сложнее, поэтому давайте разберемся с тем, как правильно устанавливать инструменты, а сделаем мы все это дело в виде простого алгоритма, который будет представлен ниже.

  • Первым делом нам необходимо открыть платформу МТ4 от брокера с которым Вы торгуете
  • Далее находим кнопку «Файлы» и нажимаем на нее
  • В выпадающем меню находим вкладку «Открыть каталог данных», щелкаем по этой вкладке
  • В открывшемся окошке переходим по пути MQL и Indicators
  • В папку Indicators переносим файлы, которые скомпелированы в формате mql и exe, в случае с установкой торговых роботов их файлы нужно устанавливать в папку Experts
  • Обязательно производим перезапуск торговой платформы, так как без перезапуска инструменты не обновятся
  • Заново открываем торговый терминал и заходим в меню навигатора, сделать можно это дело простым сочетанием клавиш CTRL+N
  • Находим установленный инструмент и накидываем его на график

Ну а теперь, после того, как мы разобрались с тем, как устанавливать инструменты, можно переходить к обзору индикатора VR Draw, именно он отвечает за более широкие возможности рисования на графике. Как Вы наверняка уже поняли, инструмента нет в стандартном пакете МТ4, поэтому его надо будет скачать и установить по алгоритму, который указан выше. Мы всегда пропагандировали на своем сайте предоставление всех биржевых инструментов на бесплатной основе, мы ценим своих читателей и не хотим, чтобы они покупали то, что можно достать совершенно бесплатно. Возможно такая «плюшка» в следующий раз приведет Вас еще раз на нашу страницу. Ну а пока что ловите ссылочку на индикатор VR Draw

После скачивания и установки на график у Вас не вылезет классическое окошко с выбором входных параметров, как это обычно происходит с остальными индикаторами. Все что Вы увидите — это лейбл индикатора, который подсвечивается белым цветом в левом углу торговой платформы. Рисунок ниже показывает то, как должен выглядеть график после установки VR Draw.

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

  • Функция Color — позволяет трейдеру выбрать окрас маркера, доступна достаточно большая палитра, которая состоит из более чем двадцати цветов
  • Width — данная кнопка отвечает за то, какой толщины будет маркер для рисования, всего доступно двенадцать вариантов толщины, при этом с каждым щелчком по данной кнопке последовательно увеличивается толщина маркера, для того, чтобы скинуть маркер на начальный уровень обязательно надо прощелкать все двенадцать раз, только после этого он начнет новый расчет
  • Erase — параметр отвечает за быстрое удаление с ценового графика всех нарисованных графических объектов, достаточно удобная функция, которая позволит сэкономить огромнейшее количество времени

Индикатор для рисования на графике. Когда нужен?

Одним из основных вариантов использования индикатора VR Draw, да наверное чуть ли не единственным, это использование его в качестве пояснительного инструмента, то есть подписывать какие-то линии или уровни, делать заметки и т.д. При этом отмечу один интересный и достаточно полезный момент, дело в том, что стилистика нарисованных индикатором VR Draw графических структур, существенно отличается от рисунков других вспомогательных инструментов, поэтому трейдер не будет сильно путаться в том, каким инструментом и что нарисовано.

1

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

Так же отмечу то, что если Вы открываете сразу же несколько графических окон, как показано на рисунке ниже;

1 Работа с двумя графическими окнами VR Draw

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

1

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

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

1

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

1

Рисование на графике форекс mt4. Color Levels

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

18

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

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

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

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

2

Кроме этого, для спекулянта будут открыты и другие графические цвета, так же будут доступны следующие настройки;

  • Угол графика для привязки — в каком углу ценового графика будет отображена менюшка с фигурами
  • Цвет панели инструментов — в какой цвет будет окрашен фон меню
  • Отображать панель — включить или отключить цвет фона
  • 1/2 цвет границы — первый и второй варианты окраса контурной линии пустотелого прямоугольника
  • 1/2 стиль границы — первый и второй варианты выбора стиля пустотелого прямоугольника
  • 1/2 толщина границы — первый и второй варианты выбора толщины линий пустотелого прямоугольника
  • 3/4/5 цвет прямоугольника — три варианта цвета для закрашенных прямоугольничков

Подведем итоги

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

Индикаторы фигур технического анализа – скачать Pattern Graphix и другие

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

Индикатор фигуры «Голова и плечи» HeadAndShouldersDashboard (скачать)

Рисунок 1. Индикатор форекс фигур HeadAndShouldersDashboard.

Результаты работы индикатора отображаются в подвальном окне в виде таблицы с шестью столбцами, в которых указывается:

  • символ финансового инструмента (Symbol);
  • таймфрейм (Timeframe);
  • направление фигуры – медвежья или бычья (Direction);
  • тип паттерна – прямой или обратный (Pattern);
  • сколько баров прошло с момента завершения его формирования (Age);
  • ссылка на ценовой график, нажатием на которую можно его открыть (Chart).

Трейдеру доступны для изменения следующие параметры:

  • Symbols – перечислены через запятую анализируемые финансовые инструменты;
  • Is_M1/M5/M15/M30/H1/H4/D1/W1/MN_TimeframeEnabled – на каких таймфреймах проводить анализ;
  • SortBy – по какому столбцу сортировать;
  • SortType – тип сортировки (Ascendent – по возрастанию, Descending – по убыванию);
  • PriceProximityPercent – точность вычислений (в процентах);
  • FillPatternWithColor – закрашивать ли паттерн;
  • DisplayHeadAndSholders/DisplayReverseHeadAndSholders – искать ли прямые/обратные паттерны;
  • MaximumuNumberOfBarsForPatternsSearch – длина анализируемого периода в барах (начиная с текущего);
  • DisplaySwings – показывать ли свинги;
  • Depth/Deviation/Backstep – параметры вычисляемого в алгоритме ЗигЗага.

Группа переменных DisplaySettings определяет цвет и стилистику отображения паттернов. Группа переменных AlertSettings определяет способ оповещения трейдера при обнаружении нового паттерна.

5,

Pattern Graphix – индикатор фигур (скачать)

Располагаться установленный Pattern Graphix будет в разделе «Советники». Применения его к ценовому графику приведет к отображению окна (рис. 2), во вкладках которого необходимо задать, какие именно фигуры будут искаться.

Рисунок 2. Настроечное окно индикатора Pattern Graphix.

Определяемыми паттернами продолжения тенденции являются:

  • Треугольник;
  • Прямоугольник;
  • Вымпел;
  • Флаг.

Определяемыми разворотными паттернами являются:

  • Голова и плечи;
  • Двойная вершина/дно;
  • Тройная вершина/дно.

Определяемыми линиями/уровнями являются:

  • Поддержки и сопротивления;
  • Трендовые каналы;
  • Фибо-уровни.

Определяемыми свечными фигурами являются:

  • Молот;
  • Висельник;
  • Поглощения;
  • Харами;
  • Звезды;
  • Пробои и др.

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

1

Видео

1

Индикатор фигур технического анализа PZ Harmonic (скачать)

Отдельную категорию графических формаций составляют гармонические паттерны Гартли. В эту категорию входят такие фигуры, как:

  • Бабочка;
  • Летучая мышь;
  • Акула;
  • Cypher;
  • Классический паттерн Гартли.

15

Рисунок 3. Индикатор форекс фигур Гартли PZ Harmonic.

Тредйер может изменять значения следующих переменных:

  • Amplitude – минимальное расстояние между смежными вершинами фигуры (в свечах);
  • Max_HistoryBars – период (в барах), подвергаемый анализу;
  • Only_PerfectPatterns – отображать ли только надежные фигуры (true – да, false – нет).
  • группа Labels – задает параметры отображения вершин;
  • группа Ratios – задает параметры отображения пропорций;
  • группа Projections – задает параметры отображения проекций;
  • группа Alerts – задает параметры оповещений.

Для примера на рис. 4 приведен ценовой график с фигурами индикатора PZ Harmonic, при переменной Only_PerfectPatterns, установленной в false (на рис. 3, эта переменная имеет значение true).

1

Рисунок 4. Надежный сигнал индикатора графических фигур PZ Harmonic.

Способ идентификации графических фигур без специального индикатора

1

Рисунок 5. Нахождение фигур технического анализа с помощью индикатора ZigZag.

Такой метод позволяет убрать с ценового графика всю лишнюю информацию, мешающую анализу, чтобы существенно его облегчить. Например (рис. 6), сразу становятся видны двойные вершины (указаны стрелками), которые сформировали сопротивления. При этом первое сопротивление (желтая горизонтальная прямая) затем стало поддержкой, а потом опять сопротивлением.

1

Рисунок 6. Две графические фигуры (двойные вершины), выявленные анализом кривой индикатора ZigZag.

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

Traders //

Программистам MQL: подпишитесь на группу, чтобы получать уведомления о заказах.

Не забывайте указывать платформу: MT4 или MT5

Свыше 1000 заказов уже выполнено бесплатно!

** уровень должен быть 3 или выше, чтобы заказ был рассмотрен штатным программистом Стола (см. правила)

РЕКОМЕНДУЮ

Лучшее от vebster

Как добавить в прямоугольную метку кнопку?

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

Ниже код на создание простой метки

Пожалуйста помогите добавить внутрь кнопку

Комментарии ( 22 )

31 AM2 Сообщений: 12570 — Андрей

  • 29 января 2022, 17:39

6 vebster Автор Сообщений: 205

  • 30 января 2022, 10:36

25 Oxy Сообщений: 3293 — ..ιllιlι.lι.ιllι.ιlι..

  • 30 января 2022, 17:00

6 vebster Автор Сообщений: 205

  • 30 января 2022, 17:55

25 Oxy Сообщений: 3293 — ..ιllιlι.lι.ιllι.ιlι..

  • 30 января 2022, 17:58

6 vebster Автор Сообщений: 205

  • 30 января 2022, 20:40

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

чтобы это всё можно было перемещать Редактирован: 30 января 2022, 18:07

6 vebster Автор Сообщений: 205

  • 30 января 2022, 18:05

комментарий был удален 2022-02-03 08:31:07 vebster

25 Oxy Сообщений: 3293 — ..ιllιlι.lι.ιllι.ιlι..

  • 30 января 2022, 20:46

6 vebster Автор Сообщений: 205

  • 30 января 2022, 20:49

25 Oxy Сообщений: 3293 — ..ιllιlι.lι.ιllι.ιlι..

  • 30 января 2022, 20:54

6 vebster Автор Сообщений: 205

  • 30 января 2022, 20:57

Если только начали, вот у текстовых меток есть некоторые свойства кнопок: mql.opentraders.ru/31680.html

Но можно еще воспользоваться функцией прослушивания событий OnChartEvent() и сделать этим текстовым меткам:
CHARTEVENT_OBJECT_CLICK — событие щелчка мыши на графическом объекте, принадлежащем графику;
CHARTEVENT_OBJECT_DRAG — событие перемещения графического объекта при помощи мыши;
и другие события.

Изучайте справку mql4/mql5

25 Oxy Сообщений: 3293 — ..ιllιlι.lι.ιllι.ιlι..

  • 30 января 2022, 21:04

6 vebster Автор Сообщений: 205

  • 30 января 2022, 21:07

25 Oxy Сообщений: 3293 — ..ιllιlι.lι.ιllι.ιlι..

  • 31 января 2022, 11:08

комментарий был удален 2022-02-03 10:52:41 vebster

комментарий был удален 2022-02-03 10:52:32 vebster

6 vebster Автор Сообщений: 205

  • 1 февраля 2022, 08:32

комментарий был удален 2022-02-03 08:31:21 vebster

6 vebster Автор Сообщений: 205

  • 1 февраля 2022, 12:33

25 Oxy Сообщений: 3293 — ..ιllιlι.lι.ιllι.ιlι..

  • 1 февраля 2022, 13:43

комментарий был удален 2022-02-03 08:31:33 vebster

ЧАТ ТРЕЙДЕРОВ

Быстрое соединение

Текущие конкурсы и акции

Из недавнего:

  • dudusgere
    4 августа 2022, 11:19
    Досылка ( 1 ) в Блог им. dudusgere
    Выслал индикаторы в двух возможных форматах <>[Читать..]
  • PedroSDz
    4 августа 2022, 11:03
    Стоповые ордера ( 9 ) в Стол заказов MQL
    Вы должны поставить параметр

    star trading hour

    Внимание! Торговля и инвестирование на финансовых рынках сопряжены с повышенным риском потери капитала!
    OpenTraders — информационный ресурс, не ведет брокерскую или дилерскую деятельность, не открывает счета. Торговые счета Вы можете зарегистрировать у указанного выше брокера. Все материалы на ресурсе носят информационный характер и не являются побуждением к действию. Администрация сайта может не соглашаться с мнением авторов. См. Предупреждение о рисках

    Свойства объектов

    Графические объекты могут иметь множество свойств в зависимости от типа объекта. Все объекты, используемые в техническом анализе, имеют привязку на графиках по координатам цены и времени – трендовая линия, каналы, инструменты Фибоначчи и т.д. Но есть ряд вспомогательных объектов, предназначенных для улучшения интерфейса, которые имеют привязку к видимой всегда части графика (основное окно графика или подокна индикаторов):

    Да (только для чтения)

    Да (только для чтения)

    Да (только для чтения)

    В таблице использованы следующие обозначения:

    • X/Y – координаты точки привязки задаются в пикселях относительно одного из углов графика;
    • Width/Height – объекты имеет ширину и высоту. Если указано "только для чтения", то это означает, что значения ширины и высоты вычисляются только после отрисовки объекта на графике;
    • Date/Price – координаты точки привязки задаются парой дата/цена;
    • OBJPROP_CORNER – задаёт угол графика, относительно которого указываются координаты точки привязки. Может быть одним из 4-х значений перечисления ENUM_BASE_CORNER;
    • OBJPROP_ANCHOR – задаёт положение точки привязки в самом объекте, и может быть одним из 9-ти значений перечисления ENUM_ANCHOR_POINT. Именно от этой точки до выбранного угла графика указываются координаты в пикселях;
    • OBJPROP_ANGLE – задаёт угол поворота объекта против часовой стрелки.

    Идентификаторы свойств объекта используются в функциях ObjectGet() и ObjectSet(). Могут быть любыми из следующих величин.

    Получает/устанавливает первую координату времени

    Получает/устанавливает первую координату цены

    Получает/устанавливает вторую координату времени

    Получает/устанавливает вторую координату цены

    Получает/устанавливает третью координату времени

    Получает/устанавливает третью координату цены

    Получает/устанавливает цвет объекта

    Получает/устанавливает стиль линии объекта

    Получает/устанавливает ширину линии объекта

    Получает/устанавливает флаг фонового отображения объекта

    Получает/устанавливает флаг свойства луч для объектов типа OBJ_TREND и ему подобных

    Получает/устанавливает флаг отображения полного эллипса для объекта OBJ_FIBOARC

    Получает/устанавливает значение масштаба объекта

    Получает/устанавливает значение угла в градусах объекта OBJ_TRENDBYANGLE

    Получает/устанавливает код стрелки объекта OBJ_ARROW. Может быть одним из символов wingdings или один из предопределенных кодов стрелок

    Получает/устанавливает свойство отображения объекта на различных периодах. Может быть одним или комбинацией нескольких из констант видимости объекта

    Получает/устанавливает размер отклонения для объекта OBJ_STDDEVCHANNEL

    Получает/устанавливает размер шрифта для объектов OBJ_TEXT и OBJ_LABEL

    Получает/устанавливает номер угла привязки для объекта OBJ_LABEL. Принимает значения 0-3

    Получает/устанавливает расстояние X-координаты в пикселях относительно угла привязки (см. примечание)

    Получает/устанавливает расстояние Y-координаты в пикселях относительно угла привязки (см. примечание)

    Получает/устанавливает число уровней объекта Fibonacci. Может быть от 1 до 32

    Получает/устанавливает цвет линии уровня объекта

    Получает/устанавливает стиль линии уровня объекта

    Получает/устанавливает ширину линии уровня объекта

    Получает/устанавливает значения уровня объекта Fibonacci с индексом n. Индекс n может быть от 0 до (количество уровней -1), но не более 31

    Каждый графический объект на графике цен имеет некоторый набор свойств. Установка и получение значений свойств объектов производится соответствующими функциями по работе с графическими объектами. Для каждого типа объекта есть свой набор свойств, здесь перечислены все возможные значения из семейства перечислений ENUM_OBJECT_PROPERTY. Некоторые свойства требуют уточнения, как например, номер уровня для объекта расширения Фибоначчи. В таких случаях необходимо в функциях ObjectSet. () и ObjectGet. () указывать значение параметра modifier .

    Объект на заднем плане

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

    Запрет на показ имени графического объекта в списке объектов из меню терминала "Графики" — "Объекты" — "Список объектов". Значение true позволяет скрыть ненужный для пользователя объект из списка. По умолчанию true устанавливается для объектов, которые отображают события календаря, историю торговли, а также для созданных из MQL5-программы. Для того чтобы увидеть такие графические объекты и получить доступ к их свойствам, нужно нажать кнопку "Все" в окне "Список объектов".

    Возможность редактирования текста в объекте Edit

    datetime модификатор=номер точки привязки

    Время создания объекта

    color модификатор=номер уровня

    int модификатор=номер уровня

    Горизонтальное выравнивание текста в объекте "Поле ввода" (OBJ_EDIT)

    Луч продолжается вправо

    Отображение полного эллипса для объекта "Дуги Фибоначчи" (OBJ_FIBOARC)

    Код стрелки для объекта "Стрелка"

    Видимость объекта на таймфреймах

    Положение точки привязки графического объекта

    ENUM_ANCHOR_POINT (для OBJ_LABEL , OBJ_BITMAP_LABEL и OBJ_TEXT)

    Дистанция в пикселях по оси X от угла привязки (см. примечание)

    Дистанция в пикселях по оси Y от угла привязки (см. примечание)

    Отображение линий для волновой разметки Эллиота

    Состояние кнопки (Нажата/Отжата)

    Ширина объекта по оси X в пикселях. Задается для объектов OBJ_LABEL (read-only), OBJ_BUTTON, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.

    Высота объекта по оси Y в пикселях. Задается для объектов OBJ_LABEL (read-only), OBJ_BUTTON, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.

    X-координата левого верхнего угла прямоугольной области видимости в графических объектах "Графическая метка" и "Рисунок" (OBJ_BITMAP_LABEL и OBJ_BITMAP). Значение задается в пикселях относительного верхнего левого угла исходного изображения.

    Y-координата левого верхнего угла прямоугольной области видимости в графических объектах "Графическая метка" и "Рисунок" (OBJ_BITMAP_LABEL и OBJ_BITMAP). Значение задается в пикселях относительного верхнего левого угла исходного изображения.

    Цвет фона для OBJ_EDIT, OBJ_BUTTON, OBJ_RECTANGLE_LABEL

    Угол графика для привязки графического объекта

    Тип рамки для объекта "Прямоугольная рамка"

    Цвет рамки для объекта OBJ_EDIT и OBJ_BUTTON

    Для объектов OBJ_BITMAP_LABEL и OBJ_BITMAP программным путем можно установить специальный режим показа изображения. В этом режиме показывается только та часть исходного изображения, на которую накладывается прямоугольная область видимости, остальная часть картинки становится невидимой. Размеры области видимости необходимо установить с помощью свойств OBJPROP_XSIZE и OBJPROP_YSIZE. Область видимости можно "перемещать" только в пределах исходного изображения с помощью свойств OBJPROP_XOFFSET и OBJPROP_YOFFSET.

    Для объектов с фиксированными размерами: OBJ_BUTTON, OBJ_RECTANGLE_LABEL и OBJ_EDIT свойства OBJPROP_XDISTANCE и OBJPROP_YDISTANCE задают положение левой верхней точки объекта относительно угла графика (OBJPROP_CORNER), от которого будут отсчитываться координаты X и Y в пикселях.

    double модификатор=номер точки привязки

    double модификатор=номер уровня

    Масштаб (свойство объектов Ганна, "Эллипс" и "Дуги Фибоначчи")

    Угол. Для объектов с еще не заданным углом, созданных из программы, значение равно EMPTY_VALUE

    Отклонение для канала стандартного отклонения

    Описание объекта (текст, содержащийся в объекте)

    Текст всплывающей подсказки. Если свойство не задано, то показывается подсказка, автоматически сформированная терминалом. Можно отключить показ подсказки, установив для нее значение "\n" (перевод строки)

    string модификатор=номер уровня

    Имя BMP-файла для объекта "Графическая метка". Смотри также Ресурсы

    string модификатор: 0-состояние ON, 1-состояние OFF

    Символ для объекта "График"

    Для объекта OBJ_RECTANGLE_LABEL ( "Прямоугольная метка") можно задать один из трех видов отображения, которым соответствуют значения из перечисления ENUM_BORDER_TYPE.

    Для объекта OBJ_EDIT ("Поле ввода") и для функции ChartScreenShot() можно указать тип выравнивания по горизонтали с помощью значений перечисления ENUM_ALIGN_MODE.

    Выравнивание по левой границе

    Выравнивание по центру (только для объекта "Поле ввода" )

    Выравнивание по правой границе

    #define UP "\x0431"
    //+——————————————————————+
    //| Script program start function |
    //+——————————————————————+
    void OnStart ()
    <
    //—
    string label_name= "my_OBJ_LABEL_object" ;
    if ( ObjectFind (0,label_name)<0)
    <
    Print ( "Object " ,label_name, " not found. Error code = " , GetLastError ());
    //— создадим объект Label
    ObjectCreate (0,label_name, OBJ_LABEL ,0,0,0);
    //— установим координату X
    ObjectSetInteger (0,label_name, OBJPROP_XDISTANCE ,200);
    //— установим координату Y
    ObjectSetInteger (0,label_name, OBJPROP_YDISTANCE ,300);
    //— зададим цвет текста
    ObjectSetInteger (0,label_name, OBJPROP_COLOR , clrWhite );
    //— установим текст для объекта Label
    ObjectSetString (0,label_name, OBJPROP_TEXT ,UP);
    //— установим шрифт надписи
    ObjectSetString (0,label_name, OBJPROP_FONT , "Wingdings" );
    //— установим размер шрифта
    ObjectSetInteger (0,label_name, OBJPROP_FONTSIZE ,10);
    //— повернем на 45 градусов по часовой стрелке
    ObjectSetDouble (0,label_name, OBJPROP_ANGLE ,-45);
    //— запретим выделение объекта мышкой
    ObjectSetInteger (0,label_name, OBJPROP_SELECTABLE , false );
    //— отрисуем на графике
    ChartRedraw (0);
    >
    >

    Как написать индикатор: выводим спрэд

    Чтобы в полной мере понять, как написать индикатор на языке программирования MQL4, необходимо это практически сделать.

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

    Ранее в блоге уже была затронута тема программирования на MQL 4 для начинающих. Подробно и с "нуля" я рассказывал про написание скрипта для открытия ордера по текущему торговому инструменту. Если данная запись покажется сложной, можно прежде обратиться к указанной.

    Создание файла индикатора

    Для написания индикатора нам нужен пустой шаблон:

    1. откройте MetaEditor;
    2. нажмите "Файл → Создать";
    3. из появившегося списка выберите "Пользовательский индикатор" и нажмите "Далее";
    4. введите имя индикатор с использованием латинских букв, к примеру, mySpread;
    5. нажмите "Далее" и потом "Готово".

    Перед вами откроется новый файл с базовыми параметрами. Выделите все содержимое файла и нажмите "Delete".

    Написание индикатора

    Займемся написанием индикатора с нуля. Первое, что необходимо сделать, задать глобальные настройки индикатора, а именно: в каком окне онбудет отображаться – в окне с графиком или в отдельном. Нас интересует окно с графиком. Данное свойство необходимо обозначить с помощью префикса #property . Соответственно:

    • indicator_separate_window позволит отобразить индикатор в отдельном окне;
    • indicator_chart_window позволит отобразить индикатор на графике.

    Прописываем 1-й строчкой в нашем файле:

    Теперь индикатор будет выводиться в окне с графиком.

    Индикатор имеет три основные функции:

    1. функция init() – запускается один раз сразу после прикрепления индикатора к графику (также в случае изменения периода графика и валютной пары);
    2. функция start() – запускается каждый раз с изменением цены, т.е. с приходом нового тика;
    3. функция deinit() – запускается один раз при удалении индикатора.

    В функции init() обычно производятся предварительные вычисления или задаются значения переменных.

    В нашем индикаторе, который будет выводить спрэд с правом верхнем углу графика, функция init() сделает следующее:

    1. создаст "Текстовую метку" в заданном углу и с указанным смещением;
    2. задаст начальный спрэд.

    За создание объекта отвечает функция ObjectCreate(…) . В качестве обязательных аргументов необходимо задать: название и тип объекта, окно, в котором он будет создан, время и цену. Время и цена нас не интересуют, т.к. для смещения объекта типа "Текстовая метка" используются координаты относительно заданного угла.

    Переходим к программированию. Создаем текстовую метку с именем "mySpread":

    OBJ_LABEL означает, что тип объекта "Текстовая метка". Значение "0" после типа объекта указывает на то, что используется основное окно с графиком для отображения. Последние два нуля для нас не принципиальны.

    После создания объекта, нам нужно установить три параметра: угол, координату x, координату y. Параметр устанавливается с помощью функции ObjectSet("имя_объекта", тип_параметра, значение) . Задаем последовательно три параметра:

    Параметр OBJPROP_CORNER задает угол отображения. Отсчет угла начинается с левого верхнего и далее по часовой стрелке. "1" означает правый верхний угол.

    Указанные операции не случайно выполняются в функции init() – объект необходимо создать один раз. Функция start() будет работать постоянно и выполнение в ней указанных операций было бы неуместно.

    После создания объекта, зададим значение текста, т.е. отобразим спрэд (текстовая метка уже создана на графике, но мы ее не увидим, пока не будет задан текст). Текущий спрэд мы получим с помощью функции MarketInfo(…) . Данная функция возвращает различную информацию по выбранному финансовому инструменту.

    Валютную пару, к которой прикреплен индикатор, получим с помощью функции Symbol() .

    Функция ObjectSetText(…) позволит присвоить текстовой метке определенный Текст. В функцию мы передадим: название текстовой метки, текст, размер шрифта. Необязательными параметрами для данной функции являются: название шрифта и его цвет. В виде текста мы сразу передадим значение, полученное через MarketInfo(…) .

    Стоит отметить, что если в Дилинговом центре используется 5 цифр после запятой, то будет отображен спрэд в некорректном формате, к примеру, "10" по валютной паре EURUSD. Для этого нам необходимо разделить полученное значение на "10". В данном случае, если мы хотим создать универсальный индикатор, требуется добавление переменной. Тип переменной должен быть double , т.е. с плавающей точкой.

    Переменная Digits содержит количество цифр после десятичной точки в цене текущего инструмента. Обозначим условие, что если цифр 5 или 3 ( if (Digits == 5 || Digits == 3) ), то полученный спрэд делим на "10".

    Теперь строчка с заданием текста будет иметь вид:

    Получив значение спрэда мы задаем текст. Выглядит правильно, но на практике индикатор не будет работать. 2-й параметр, передаваемый в функцию ObjectSetText(…) должен иметь тип string , а мы передаем переменную spread типа double .

    Для того, чтобы избежать указанную эту проблему и не создавать дополнительную переменную, будем использовать функцию DoubleToStr(…) . 1-м параметром функции будет значение типа double , вторым – количество разрядов, т.е. чисел после запятой. Функция преобразует значение типа double в значение типа string с заданной точностью.

    Перед тем, как идти дальше стоит отметить, что каждая функция на языке MQL4 требует перед объявлением указать тип возвращаемого значения. Если мы создаем функцию суммирования целых чисел, к примеру, sum(a, b) , которая возвращает нам результат как целое число, значит тип возврата также должен быть целым. Для это перед названием функции обозначается ее тип int sum(a, b) . Функция будет иметь вид:

    Оператор return говорит о том, что функция возвращает результат (ответ), который соответствует формату функции (int в данном случае). После использования оператора return , функция завершает свое исполнение, даже если после него находится программный код. Данный оператор также используется для предварительного выхода из функции.

    Если же функция имеет тип void , то получения ответа не ожидается и оператор return можно не использовать. Функция завершит работу после исполнения последней строчки программного кода.

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

    В итоге функция init() будет иметь вид:

    Функция start() будет всего лишь получать новое значение спрэда и обновлять значение Текстовой метки.

    При использовании функции ObjectSetText(…) в теле функции start() мы сократили количество передаваемых параметров. Текстовая метка уже имеет заданные значения: название шрифта и его цвет.

    Для того, чтобы не засорять график, после удаления индикатора необходимо удалить созданную Текстовую метку. Для этого понадобится функция ObjectDelete("название_объекта") .

    В принципе мы могли использовать альтернативный способ получения спрэда, а именно вычесть из цены Спроса цену Предложения, т.е. Ask – Bid .

    Тестирование

    Для того, чтобы возможно было запустить индикатор в MetaTrader 4, нажимаем "F5", т.е. компилируем программу, затем открываем MetaTrader 4 и находим наш индикатор с именем "mySpread". Добавляем его на график и видим следующее:

    Прямоугольник | Rectangle

    Прямоугольник (англ. Rectangle) является фигурой продолжения в техническом анализе, формирование которой образует торговый диапазон, являющийся периодом консолидации перед дальнейшим продолжением тренда. Данную фигуру достаточно легко идентифицировать по двум примерно равным по высоте максимумам и двум примерно равным по высоте минимумам. При их соединении образуются две параллельные линии, которые являются верхней и нижней гранью прямоугольника. Также прямоугольники могут упоминаться как торговые диапазоны, зоны консолидации или зоны скопления.

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

    Для правильной идентификации прямоугольника на графике необходимо обратить внимание на следующие существенные моменты.

    1. Фигуре должен предшествовать восходящий или нисходящий тренд. Продолжительность периода времени, в течение которого действовал тренд, не должна быть слишком большой, поскольку с его увеличением повышается вероятность того, что прямоугольник будет фигурой разворота. Оптимальным считается тренд продолжительностью от нескольких недель до 2-3 месяцев.
    2. Для формирования верхнего уровня сопротивления необходимы по крайней мере два примерно равных по высоте максимума. По крайней мере два примерно равных по высоте минимума формируют нижний уровень поддержки. Не обязательным, но желательным условием является чередование минимумов и максимумов.
    3. В отличие от других фигур, для прямоугольника не характерна стандартная модель поведения объемов торговли. В некоторых случаях объемы могут постепенно снижаться по мере развития фигуры, иногда они будут циклически увеличиваться в области максимумов и минимумов, а в редких случаях они могут даже возрастать. Если объемы будут снижаться или увеличиваться, то для окончательного подтверждения фигуры необходимо дождаться пробития уровня поддержки или сопротивления. Циклические увеличения объемов торговли в области максимумов и минимумов иногда дают ключ к направлению будущего прорыва. Если они существенно выше в направлении максимумов, то более вероятно будет пробит уровень сопротивления, а если минимумов, то уровень поддержки.
    4. Надежными считаются прямоугольники, период формирования которых составляет от нескольких недель до нескольких месяцев. При меньшей продолжительности паттерн должен быть идентифицирован как флаг, который также является фигурой продолжения. Также с увеличением продолжительности периода формирования фигуры растет потенциал будущего движения цены после прорыва.
    5. Направление будущего прорыва невозможно предугадать заранее, хотя в некоторых случаях объемы торгов могут дать подсказку. Поскольку фигура является нейтральной, то необходимо дождаться убедительного прорыва уровня поддержки или сопротивления. В этом случае некоторые аналитики предлагают дождаться момента, когда цена отойдет от уровня пробития на 2-3%, либо подождать, чтобы цена оставалась выше или ниже уровня пробития в течение 2-3 дней.
    6. После пробития уровня сопротивления он становится уровнем поддержки для будущих ценовых коррекций. Аналогично, после пробития уровня поддержки, он становится уровнем сопротивления.
    7. Целью движения цены является высота прямоугольника, то есть расстояние (H) между уровнем поддержки и сопротивления.

    По сути прямоугольники представляют из себя торговый диапазон, в котором происходит борьба медведей и быков. Так происходит потому что в области верхнего уровня сопротивления сосредоточены значительные приказы на продажу, а в области нижнего уровня поддержки значительные приказы на покупку. Некоторые трейдеры активно используют такую ситуацию, открывая длинные позиции у уровня поддержки, а короткие – у уровня сопротивления. Однако следует помнить, что прямоугольник является нейтральной фигурой и открывать позицию следует только по факту убедительного пробития.

    Флаги, треугольники, прямоугольники

    Сколько раз вы входили на окончании коррекции, а она продолжалась и выбивала ваш стоп-лосс? Конечно же, без убыточных сделок не обойтись, но находить точку окончания коррекционного движения могут помочь фигуры графического анализа, а именно: треугольники, прямоугольники и флаги (по сути, разновидности одной фигуры). И о том, как правильно применять эти паттерны на форекс с пользой для своего депозита, как их находить в реальном времени, выставлять риски и цели, мы поговорим в сегодняшнем видео уроке.

    Треугольники, прямоугольники, флаги на форекс – секреты торговли фигур графического анализа

    Здравствуйте, дамы и господа форекс трейдеры.

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

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

    Что же есть фигуры?

    Фигуры представляют собой коррекцию на основном тренде. Представим, что у нас имеется какой-то тренд:

    Затем происходит коррекция, рисуются какие-то свечи:

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

    К примеру расширяющийся треугольник (или по-другому вымпел):

    Свечи могут вырисовываться не только в треугольник, но и в какую-то более ровную фигуру. К примеру прямоугольник:

    То есть, если мы очертим границы коррекции, то получим прямоугольник.

    Так же может быть обычный треугольник:

    И может быть коррекция в виде наклонённого прямоугольника, который есть ничто иное, как флаг:

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

    Итак, выше вы могли рассмотреть наши фигуры. Треугольник, расширяющийся треугольник, прямоугольник и флаг. Возникают такие фигуры во время коррекции.

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

    Дожидаемся, когда произойдёт пробой фигуры какой-либо свечой:

    И после этого входим.

    Как происходит вход?

    Представим, что у нас есть фигура прямоугольник и какая-то свеча пробивает её границу в сторону основного тренда:

    До этого у нас был тренд бычий. Если же вдруг происходит пробой вниз, то мы не входим на рынок:

    Мы заходим только по основному тренду. Итак, произошёл пробой по основному тренду. Многие источники говорят, что следует сразу же входить в сделку. Я же рекомендую поступать более прагматично.

    Что мы делаем? Мы не входим сразу в сделку, а ждём закрытия этой свечи и выставляем отложенный ордер buy stop чуть выше точки high этой свечи. В случае с бычьими сделками:

    Стоп лосс пойдёт чуть ниже точки low нашей пробойной сигнальной свечи:

    А в качестве тейк профита мы откладываем размер нашего прямоугольника, в данном случае, в сторону сделки. То есть если расстояние между его границами было 50 пунктов, то и тейк профит нашей сделки будет 50 пунктов:

    Однако я рекомендую выходить из сделки частично. То есть одну часть сделки закрывать на уровне стоп лосса, а вторую – по тейк профиту размером с фигуру. Представим, что у нас стоп-лосс здесь был 25 пунктов. Соответственно половину позиции мы закрываем на прибыли 25 пунктов, а вторую половину закрываем на прибыли в 50 пунктов.

    Что самое главное стоит запомнить при работе с фигурами?

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

    Теперь давайте отметим несколько фигур на графике, чтобы наглядно представить, как их искать на практике. У меня открыт дневной график EURUSD:

    Можно судить о том, что в наличии медвежий тренд. Цена шла вниз и через некоторое время происходит коррекция.

    И она, есть ничто иное, как флаг:

    Что тут произошло? Был пробой в сторону основного тренда:

    Сразу на рынок мы бы не входили, а выставили ордер чуть ниже точки low нашей свечи:

    И, соответственно, тейк профит номер один – это расстояние от стоп лосса до входа:

    В данном случае это 77 пунктов, но не забывайте, что это дневные графики. Цель номер два была бы размером нашего флага, и составила бы 100 пунктов. Получается, что первый тейк профит был взят вот тут:

    А второй вот тут:

    Как мы строим границы нашей фигуры?

    Мы не строим их именно по хвостам или точкам закрытия свечи. Мы стараемся выстроить фигуру так, чтобы было как можно больше касаний. Чтобы это были именно границы. Если множества касаний нет, то границу поставить нельзя. Скорее всего это не фигура, а нечто иное.

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

    Рассмотрим ещё один пример. В этот раз возьмём за фигуру прямоугольник. После пробоя вершины, примерно тут:

    Можно было говорить о том, что начался бычий тренд. И далее цена рисовала ничто иное, как прямоугольник:

    Примерно таким образом мы выделили его границы. Чуть позже произошёл пробой верхней границы. Ставим наш стоп лосс чуть ниже точки low пробойной свечи:

    Ставим отложенный ордер на покупку чуть выше точки high пробойной свечи, и ордер активируется:

    Наш первый тейк профит 90 пунктов, а второй 128. Как видно по графику, они без проблем были взяты:

    Ещё один пример. В этот раз давайте рассмотрим фигуру треугольник:

    На графике было явное бычье движенье. И далее цена начала стопориться по наклонной вот таким образом:

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

    Что здесь произошло? Был явный бычий тренд. Далее следует пробойная свеча. Мы как обычно ставим buy stop чуть выше её точки high:

    И ставим стоп лосс чуть ниже её low:

    Далее обратите внимание. Наш первый тейк профит равен размеру стоп лосса. Примерно 30 пунктов:

    Он был без проблем взят. А вот вторая наша цель измеряется по наиболее широкому расстоянию между границами треугольника:

    В данном случае она была 109 пунктов. И она не была взята:

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

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

    Давайте рассмотрим на примере реальных торгов:

    В первую очередь нужно определить тренд :

    Здесь мы видим тренд вниз. Что мы делаем далее? Мы отмечаем границы нашей коррекции:

    Верхняя граница явно горизонтальная. Можно было бы отметить и вторую горизонтальную линию, но открытие торгов, состоявшееся в понедельник, явно изменило наши планы:

    Я думаю, никто бы не открывал позиции на открытии в понедельник, поэтому границу нашей фигуры мы меняем следующим образом:

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

    Если произойдёт пробой наверх, то мы ничего не будем делать потому что тренд двигается вниз. А если через пару свечей произойдёт пробой вниз, то мы будем входить отложенным ордером со стоп лоссом, как описывалось выше. Целью будет расстояние между границами треугольника:

    В данном случае это 68 пунктов.

    Повторим ещё раз

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

    Только, когда фигура сформировалась из наших отмеченных границ коррекции, мы сможем принять её во внимание. Если фигуры не видно, то мы не рассматриваем такие колебания на графике. При построении границ стараемся, чтобы было как можно больше касаний. Чтобы линия была не где-то в воздухе, а именно ограничивала движение цены.

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

    Как могут помочь эти фигуры в вашей торговле?

    Дело в том, что фигурами можно торговать, как отдельной стратегией, а можно совмещать с собственной торговлей. То есть, когда вы видите, что рисуется треугольник, то торговать пин-бар внутри этого треугольника нет никакого смысла. Потому что цена дойдёт до границы треугольника, и ваша сделка прибыли не принесёт.

    Или скажем вы увидели какой-то сетап. Какой-то момент для потенциального входа, а он находится внутри прямоугольника:

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

    На этом всё. Надеюсь этот материал поможет вам лучше работать и определять фигуры продолжения тренда на графике.

    Рейтинг Форекс брокеров: