По-тихоньку по наличию времени начинаю осваивать мкл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
По-тихоньку по наличию времени начинаю осваивать мкл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
Для чего это нужно (здесь правда подмешался массив для цвета): при связывании массива с индикаторным буфером программисту уже не нужно заботиться о размере массива (как о первоначальном, так и об увеличении размера в процессе работы) - такие массивы автоматически будут по размерам идентичны таймсерии баров. И основное назначение таких вспомогательных массивов - это хранение промежуточный расчётов.
Да, правильно. На примере того-же [data folder]\MQL5\Indicators\Examples\ZigzagColor.mq5
Для чего это нужно (здесь правда подмешался массив для цвета): при связывании массива с индикаторным буфером программисту уже не нужно заботиться о размере массива (как о первоначальном, так и об увеличении размера в процессе работы) - такие массивы автоматически будут по размерам идентичны таймсерии баров. И основное назначение таких вспомогательных массивов - это хранение промежуточный расчётов.
Если всё верно, тогда почему нет возможности так же задать толщину для линий зиг-зага в стандартном индикаторе? Мне он ни к чему, но на его примере я проверяю как устроены индикаторы.
Буферов зиг-зага у нас 2. Соответственно, должно было бы по аналогии с цветом работать так:
#property indicator_width1 1, 4
Но так не работает...
Я пробывал так:
#property indicator_width1 1 #property indicator_width2 5Так тоже не работает. В чём загвоздка то? Ведь буферы у нас начинаются в свойствах не с 0-ля, а с 1-цы, это так. Значит я верно указал с какого и по какой. Но толщина линии не изменилась..
Была бы документация по этому поводу, было бы хорошо. А так я смотрю еденицы вообще это понимают, а кто-то даже видя подобное говорит, что я не прав.. Например, Alexey Volchanskiy.
Если всё верно, тогда почему нет возможности так же задать толщину для линий зиг-зага в стандартном индикаторе? Мне он ни к чему, но на его примере я проверяю как устроены индикаторы.
Буферов зиг-зага у нас 2. Соответственно, должно было бы по аналогии с цветом работать так:
Но так не работает...
Я пробывал так:
Так тоже не работает. В чём загвоздка то? Ведь буферы у нас начинаются в свойствах не с 0-ля, а с 1-цы, это так. Значит я верно указал с какого и по какой. Но толщина линии не изменилась..Справка: Связь между свойствами индикатора и соответствующими функциями. Обратите внимание на название таблицы: "Директивы для свойства графических построений" - у того же [data folder]\MQL5\Indicators\Examples\ZigzagColor.mq5 графическое построение одно:
#property indicator_plots 1
значит и директива для управления толщиной будет только ОДНА:
#property indicator_width1 1
. Это нужно выучить.
А так я смотрю еденицы вообще это понимают, а кто-то даже видя подобное говорит, что я не прав.. Например, Alexey Volchanskiy.
Справка: Связь между свойствами индикатора и соответствующими функциями. Обратите внимание на название таблицы: "Директивы для свойства графических построений" - у того же [data folder]\MQL5\Indicators\Examples\ZigzagColor.mq5 графическое построение одно:
значит и директива для управления толщиной будет только ОДНА:
. Это нужно выучить.
Я это видел. Напишу, что думаю.. Во-первых, давайте возьмём 2 директивы и сравним их:
indicator_colorN Цвет линии для графического построения номер N
indicator_widthN Толщина линии для графического построения номер N
Обе директивы применимы как видно к соответствующему графическому построению. Это разве не буфер? Если это буфер, тогда не должна работать так же директива indicator_colorN т.к. у нас 1 рисующий буфер, иначе должны работать обе директивы т.к. они обе на графическое построение ориентированы.
Он все правильно отправил. в свойстве цвета находится цвет или набор цветов для рисования одного плота. и вообще все свойства которые property задаются для плота а не буфера. для рисования одного плота может быть задействовано до 5 буферов.
Я это видел. Напишу, что думаю.. Во-первых, давайте возьмём 2 директивы и сравним их:
Обе директивы применимы как видно к соответствующему графическому построению. Это разве не буфер? Если это буфер, тогда не должна работать так же директива indicator_colorN т.к. у нас 1 рисующий буфер, иначе должны работать обе директивы т.к. они обе на графическое построение ориентированы.
Справка: Стили рисования
Идентификатор | Описание | Буферов значений | Буферов цвета |
Разноцветный ZigZag | 2 | 1 |
означает, что это ОДНО построение, но для описания цвета используется один буфер цвета.
Про это хорошо написано здесь: DRAW_COLOR_ZIGZAG. При этом: толщина графического построения модет быть записана так:
#property indicator_width1 1
но не так:
#property indicator_width1 1 2 // !!! ошибка !!!
а вот цвет (так как используется один буфер цвета) может задаваться так:
#property indicator_color1 clrDodgerBlue,clrRed
А если всё-таки не к буферам, тогда почему толщина не меняется у плота опять-таки вопрос...
потому что цвет это единственное свойство которое можно перечислять
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
По-тихоньку по наличию времени начинаю осваивать мкл5. Возникают вопросы попутно. На данный момент, меня больше интересуют моменты связанные с написанием индикаторов. Вот по #property более актуальны сейчас моменты.
Я вот открыл стандартный индикатор ZigzagColor, что бы посмотреть как написан код.
1) Вижу первый странный момент:
Раньше в мкл4 второй строки не было, а в первой писалось количество буферов для рисования графики. Остальные, которые используются для расчётов вообще не указывались в данном свойстве. Бегло прогядев код у меня сложилось мнение, что теперь в мкл5 в #property indicator_buffers указывается количество буферов, имеющихся вообще в индикаторе, а в #property indicator_plots указывается количество буферов для отрисовки графики, верно?
2)
первый цвет DodgerBlue относится к 0-му буферу, а второй цвет Red относится ко второму буферу, верно? Судя из экспериментов у меня сложилось такое мнение.
3) И последний волнующий меня вопрос, на данный момент:
Если по 2-му моему вопросу я думаю верно, то судя по справке, должно работать и такое:
Это свойство я добавлял в этот стандартный индикатор ZigzagColor, но вторая цифра не даёт никакого результата. Только первая изменяет тольщину обоих линий зиг-зага, а вторая не изменяет. Хотя, если изменять свойство цвета, то там всё нормально. Вот поэтому я и запутался в этом, т.к. не складывается общая картина.