Некоторые вопросы по #property

 

По-тихоньку по наличию времени начинаю осваивать мкл5. Возникают вопросы попутно. На данный момент, меня больше интересуют моменты связанные с написанием индикаторов. Вот по #property более актуальны сейчас моменты.

Я вот открыл стандартный индикатор ZigzagColor, что бы посмотреть как написан код.

1) Вижу первый странный момент:

#property indicator_buffers 5
#property indicator_plots   1

Раньше в мкл4 второй строки не было, а в первой писалось количество буферов для рисования графики. Остальные, которые используются для расчётов вообще не указывались в данном свойстве. Бегло прогядев код у меня сложилось мнение, что теперь в мкл5 в #property indicator_buffers указывается количество буферов, имеющихся вообще в индикаторе, а в #property indicator_plots указывается количество буферов для отрисовки графики, верно?

2)

#property indicator_color1  DodgerBlue, Red

первый цвет DodgerBlue относится к 0-му буферу, а второй цвет Red относится ко второму буферу, верно? Судя из экспериментов у меня сложилось такое мнение.

3) И последний волнующий меня вопрос, на данный момент:

Если по 2-му моему вопросу я думаю верно, то судя по справке, должно работать и такое:

#property indicator_width1  2, 5

Это свойство я добавлял в этот стандартный индикатор ZigzagColor, но вторая цифра не даёт никакого результата. Только первая изменяет тольщину обоих линий зиг-зага, а вторая не изменяет. Хотя, если изменять свойство цвета, то там всё нормально. Вот поэтому я и запутался в этом, т.к. не складывается общая картина.

 
hoz:

По-тихоньку по наличию времени начинаю осваивать мкл5. Возникают вопросы попутно. На данный момент, меня больше интересуют моменты связанные с написанием индикаторов. Вот по #property более актуальны сейчас моменты.

Я вот открыл стандартный индикатор ZigzagColor, что бы посмотреть как написан код.

1) Вижу первый странный момент:

Раньше в мкл4 второй строки не было, а в первой писалось количество буферов для рисования графики. Остальные, которые используются для расчётов вообще не указывались в данном свойстве. Бегло прогядев код у меня сложилось мнение, что теперь в мкл5 в #property indicator_buffers указывается количество буферов, имеющихся вообще в индикаторе, а в #property indicator_plots указывается количество буферов для отрисовки графики, верно?

2)

первый цвет DodgerBlue относится к 0-му буферу, а второй цвет Red относится ко второму буферу, верно? Судя из экспериментов у меня сложилось такое мнение.

3) И последний волнующий меня вопрос, на данный момент:

Если по 2-му моему вопросу я думаю верно, то судя по справке, должно работать и такое:

Это свойство я добавлял в этот стандартный индикатор ZigzagColor, но вторая цифра не даёт никакого результата. Только первая изменяет тольщину обоих линий зиг-зага, а вторая не изменяет. Хотя, если изменять свойство цвета, то там всё нормально. Вот поэтому я и запутался в этом, т.к. не складывается общая картина.

2) неверно, посмотрите справку по #property

3) тоже нет, каждую граф. серию по отдельносьти

#property indicator_chart_window

#property indicator_buffers 4
#property indicator_plots   4

#property indicator_label1  "VHPChannel"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Gold
#property indicator_type2   DRAW_LINE
#property indicator_color2  LightSlateGray
#property indicator_style2  3
#property indicator_type3   DRAW_LINE
#property indicator_color3  DarkOrange
#property indicator_type4   DRAW_LINE
#property indicator_color4  DarkOrange
 
hoz:

По-тихоньку по наличию времени начинаю осваивать мкл5. Возникают вопросы попутно. На данный момент, меня больше интересуют моменты связанные с написанием индикаторов. Вот по #property более актуальны сейчас моменты.

Я вот открыл стандартный индикатор ZigzagColor, что бы посмотреть как написан код.

1) Вижу первый странный момент:

Раньше в мкл4 второй строки не было, а в первой писалось количество буферов для рисования графики. Остальные, которые используются для расчётов вообще не указывались в данном свойстве. Бегло прогядев код у меня сложилось мнение, что теперь в мкл5 в #property indicator_buffers указывается количество буферов, имеющихся вообще в индикаторе, а в #property indicator_plots указывается количество буферов для отрисовки графики, верно?

***

Да, правильно. На примере того-же [data folder]\MQL5\Indicators\Examples\ZigzagColor.mq5

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ZigzagPeakBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ZigzagLawnBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,ColorBuffer,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(3,HighMapBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(4,LowMapBuffer,INDICATOR_CALCULATIONS);
//--- set accuracy

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

 
Vladimir Karputov:

Да, правильно. На примере того-же [data folder]\MQL5\Indicators\Examples\ZigzagColor.mq5

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

Была бы документация по этому поводу, было бы хорошо. А так я смотрю еденицы вообще это понимают, а кто-то даже видя подобное говорит, что я не прав.. Например, Alexey Volchanskiy.


Если всё верно, тогда почему нет возможности так же задать толщину для линий зиг-зага в стандартном индикаторе? Мне он ни к чему, но на его примере я проверяю как устроены индикаторы.

Буферов зиг-зага у нас 2. Соответственно, должно было бы по аналогии с цветом работать так:

#property indicator_width1  1, 4

Но так не работает...

Я пробывал так:

#property indicator_width1  1
#property indicator_width2  5
Так тоже не работает. В чём загвоздка то? Ведь буферы у нас начинаются в свойствах не  с 0-ля, а с 1-цы, это так. Значит я верно указал с какого и по какой. Но толщина линии не изменилась..
 
hoz:
Была бы документация по этому поводу, было бы хорошо. А так я смотрю еденицы вообще это понимают, а кто-то даже видя подобное говорит, что я не прав.. Например, Alexey Volchanskiy.


Если всё верно, тогда почему нет возможности так же задать толщину для линий зиг-зага в стандартном индикаторе? Мне он ни к чему, но на его примере я проверяю как устроены индикаторы.

Буферов зиг-зага у нас 2. Соответственно, должно было бы по аналогии с цветом работать так:

Но так не работает...

Я пробывал так:

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

Справка: Связь между свойствами индикатора и соответствующими функциями. Обратите внимание на название таблицы: "Директивы для свойства графических построений" - у того же [data folder]\MQL5\Indicators\Examples\ZigzagColor.mq5 графическое построение одно:

#property indicator_plots   1

значит и директива для управления толщиной будет только ОДНА:

#property indicator_width1 1

. Это нужно выучить.

 
hoz:
А так я смотрю еденицы вообще это понимают, а кто-то даже видя подобное говорит, что я не прав.. Например, Alexey Volchanskiy.
Он все правильно отправил. в свойстве цвета находится цвет или набор цветов для рисования одного плота. и вообще все свойства которые property задаются для плота а не буфера. для рисования одного плота может быть задействовано до 5 буферов.
 
Vladimir Karputov:

Справка: Связь между свойствами индикатора и соответствующими функциями. Обратите внимание на название таблицы: "Директивы для свойства графических построений" - у того же [data folder]\MQL5\Indicators\Examples\ZigzagColor.mq5 графическое построение одно:

значит и директива для управления толщиной будет только ОДНА:

. Это нужно выучить.

Я это видел. Напишу, что думаю.. Во-первых, давайте возьмём 2 директивы и сравним их:

indicator_colorN         Цвет линии для графического построения номер N

indicator_widthN       Толщина линии для графического построения номер N

Обе директивы применимы как видно к соответствующему графическому построению. Это разве не буфер? Если это буфер, тогда не должна работать так же директива indicator_colorN т.к. у нас 1 рисующий буфер, иначе должны работать обе директивы т.к. они обе на графическое построение ориентированы.

 
Комбинатор:
Он все правильно отправил. в свойстве цвета находится цвет или набор цветов для рисования одного плота. и вообще все свойства которые property задаются для плота а не буфера. для рисования одного плота может быть задействовано до 5 буферов.
Ну так опять же почему-то цвета не смешиваются, а идут один за одним.. Меня это и навело на мысли, что они всё-таки к буферам привязаны. А если всё-таки не к буферам, тогда почему толщина не меняется у плота опять-таки вопрос...
 
hoz:

Я это видел. Напишу, что думаю.. Во-первых, давайте возьмём 2 директивы и сравним их:

Обе директивы применимы как видно к соответствующему графическому построению. Это разве не буфер? Если это буфер, тогда не должна работать так же директива indicator_colorN т.к. у нас 1 рисующий буфер, иначе должны работать обе директивы т.к. они обе на графическое построение ориентированы.

Справка: Стили рисования

Идентификатор

Описание

Буферов значений

Буферов цвета

DRAW_COLOR_ZIGZAG

Разноцветный ZigZag

2

1


означает, что это ОДНО построение, но для описания цвета используется один буфер цвета.

Про это хорошо написано здесь: DRAW_COLOR_ZIGZAG. При этом: толщина графического построения модет быть записана так:

#property indicator_width1 1

но не так:

#property indicator_width1 1 2 // !!! ошибка !!! 

а вот цвет (так как используется один буфер цвета) может задаваться так:

#property indicator_color1  clrDodgerBlue,clrRed
 
hoz:
А если всё-таки не к буферам, тогда почему толщина не меняется у плота опять-таки вопрос...

потому что цвет это единственное свойство которое можно перечислять

 
хочется отметить, что порядок директив безразличен