Скачать MetaTrader 5

Как научиться создавать графические объекты? MQL4.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нужен программист? Оставь заказ и он сам тебя найдет!
forexman77
2106
forexman77 2015.03.30 10:12 

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

 

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

Начну с самого простого построении трендовой линии. Здесь есть пример https://www.mql5.com/ru/docs/constants/objectconstants/enum_object/obj_trend

Только, как сделать, чтобы линия появлялась, но не исчезала? 

2.Не понятно, как в советнике считывать текущее положение этой линии, в объектах нет буферов?

3.Создавать собираюсь в MQL4, сильно ли отличие от MQL5? 

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_TREND
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_TREND
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_TREND - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Vladimir Karputov
Модератор
45543
Vladimir Karputov 2015.03.30 10:23  
Возьмите в качестве примера OBJ_TREND и скопируйте себе в советник, как отдельные функции. Что значит "сделать, чтобы не исчезала"? Получение значений времени и цены объекта: ObjectGetTimeByValue и ObjectGetValueByTime.
OBJ_TREND - Документация на MQL4
  • docs.mql4.com
OBJ_TREND - Документация на MQL4
forexman77
2106
forexman77 2015.03.30 10:51  
barabashkakvn:
Возьмите в качестве примера OBJ_TREND и скопируйте себе в советник, как отдельные функции. Что значит "сделать, чтобы не исчезала"? Получение значений времени и цены объекта: ObjectGetTimeByValue и ObjectGetValueByTime.
Когда вызываю скрипт линия визуально появляется(действие происходит, как в ролике), а затем исчезает.
Vladimir Karputov
Модератор
45543
Vladimir Karputov 2015.03.30 11:09  
forexman77:
Когда вызываю скрипт линия визуально появляется(действие происходит, как в ролике), а затем исчезает.
Измените код скрипта. Уберите удаление объекта. Вы используете скрипт из справки целиком?
forexman77
2106
forexman77 2015.03.30 11:18  
barabashkakvn:
Измените код скрипта. Уберите удаление объекта. Вы используете скрипт из справки целиком?
Да. Сейчас попробую.
forexman77
2106
forexman77 2015.03.30 11:21  
barabashkakvn:
Измените код скрипта. Уберите удаление объекта. Вы используете скрипт из справки целиком?
Линия осталась. Все в порядке. Теперь буду разбираться.
Vladimir Karputov
Модератор
45543
Vladimir Karputov 2015.03.30 11:26  
Если будут вопросы по коду, выкладывайте код и спрашивайте.
forexman77
2106
forexman77 2015.03.30 17:23  
barabashkakvn:
Если будут вопросы по коду, выкладывайте код и спрашивайте.

Не понятно, что означают эти цифры и что задают? Если с временем могу предположить, что это индекс бара, тогда как понимать InpPrice, имеет тип int?

input int             InpDate1=35;         // Дата 1-ой точки в %
input int             InpPrice1=60;        // Цена 1-ой точки в %
input int             InpDate2=65;         // Дата 2-ой точки в %
input int             InpPrice2=40;        // Цена 2-ой точки в %
Vladimir Karputov
Модератор
45543
Vladimir Karputov 2015.03.30 17:32  
forexman77:

Не понятно, что означают эти цифры и что задают?

Расшифровка Объяснение даётся немного выше: 

#property description "Скрипт строит графический объект \"Трендовая линия\"."
#property description "Координаты точек привязки задаются в процентах от"
#property description "размеров окна графика."

 

и дальше эти данные будут использоваться для определения точек рисования:

void OnStart()
  {
.
.
.
//--- определим точки для рисования линии
   int d1=InpDate1*(bars-1)/100;
   int d2=InpDate2*(bars-1)/100;
   int p1=InpPrice1*(accuracy-1)/100;
   int p2=InpPrice2*(accuracy-1)/100;
//--- создадим линию тренда
.
.
.
forexman77
2106
forexman77 2015.03.30 17:48  
barabashkakvn:

Расшифровка Объяснение даётся немного выше: 

 

и дальше эти данные будут использоваться для определения точек рисования:

В примере "OBJ_TREND" по моему много лишнего. Так как плохо знаю эту область боюсь буду долго блуждать. 

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

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

Vladimir Karputov
Модератор
45543
Vladimir Karputov 2015.03.30 17:59  
forexman77:

В этом примере по моему много лишнего. Так как плохо знаю эту область боюсь буду долго блуждать. 

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

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

Если Вы знаете время и даты своих точек, то Вам нужно вызывать только bool TrendCreate()
123456789
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий