Индикатор не рисует стрелки

 
Здравствуйте уважаемые профессионалы MQL. Очень нужна Ваша помощь. После переработки индикатора с MQL4 в MQL5 перестали рисоваться стрелки, хотя расчеты внутри индикатора идут верно, но отрисовки нет. Скажите пожалуйста, в чем может быть причина?
Файлы:
 
Ekaterina Belova:
Здравствуйте уважаемые профессионалы MQL. Очень нужна Ваша помощь. После переработки индикатора с MQL4 в MQL5 перестали рисоваться стрелки, хотя расчеты внутри индикатора идут верно, но отрисовки нет. Скажите пожалуйста, в чем может быть причина?

Для предопределённых массивов high и low у Вас стоит флаг "массив как таймсерия" (стр 86, 87):

   ArraySetAsSeries(high, true);
   ArraySetAsSeries(low, true);

В то же время для индикаторных рисуемых массивов-буферов up и dn такой флаг в OnInit() у Вас не установлен. Соответственно, массивы имеют противонаправленную индексацию, что не правильно. Установите буферам up и dn индексацию как в таймсерии.

Кроме того: у Вас всего два массива, установленные как рисуемые индикаторные буферы, а в директивах указано, что их четыре:

#property indicator_buffers 4
#property indicator_plots   4

buffers - это всего сколько буферов

plots - количество рисуемых из них.

Поставьте везде 2

 
Artyom Trishkin #:

Для предопределённых массивов high и low у Вас стоит флаг "массив как таймсерия" (стр 86, 87):

В то же время для индикаторных рисуемых массивов-буферов up и dn такой флаг в OnInit() у Вас не установлен. Соответственно, массивы имеют противонаправленную индексацию, что не правильно. Установите буферам up и dn индексацию как в таймсерии.

Кроме того: у Вас всего два массива, установленные как рисуемые индикаторные буферы, а в директивах указано, что их четыре:

buffers - это всего сколько буферов

plots - количество рисуемых из них.

Поставьте везде 2

Большое спасибо.

 
     Здравствуйте! Писал несложный индикатор только чтобы не считать это на калькуляторе и бумажке. Выход за пределы массива устранил. Но в тестере стратегий он не рисует линии. Не знаю почему. Иногда был написан такой код, что итоговую линию индикатор рисовал. Но сейчас не рисует. Если можете, -- подскажите почему не рисует. Код индикатора прилагаю. Идея индикатора такая: последние изменения значений двух скользящих средних с периодом 2 и 5 и линии Tenkan с периодом 9 индикатора Ichimoku суммируются. Если итоговая линия падает ниже нуля, то можно продавать. А если эта же линия поднимается выше нуля, -- то можно покупать. 2023.12.02_18:20 GMT+3. Это один из вариантов определения тренда. 
Файлы:
Trend3.mqproj  2 kb
Trend3.mq5  7 kb
 
Николай Никитюк #:
Иногда был написан такой код, что итоговую линию индикатор рисовал. Но сейчас не рисует.

сравните с вариантом где рисовал и разберитесь что такого наисправлено :-)

на поверхностный взгляд у вас там лишние настройки PLOT_DRAW_BEGIN и сильно преждевременная оптимизация (великий программистский грех)

PS/ старайтесь писать максимально очевидный код. "на i баре .. a) берём показания линий b) складываем, вычитаем, умножаем c) записываем в буфер"

пусть не оптимально, зато работает и лёгко сопровождать/менять. Когда встанет вопрос скорости - тогда скоростью и займётесь. 

PPS/ и да: короткие вещи лучше вставлять как код в сообщения и не принуждать других скачивать файлы

 
     Здравствуйте! От Максима Кузнецова я не получил ответа. Это комментарий ради комментария. Отписка. По прежнему бьюсь над индикатором. Он нужен мне, потому что тестер стратегий работает не лучшим образом. Проще самому посчитать прибыльность советника: лоты, свопы. В советнике вычисления, которые на графике движения цены не видны. Поэтому пишу индикатор. Он делает часть вычислений видными. У меня получилось сделать видимой главную линию индикатора. А дополнительные, -- не получается. Почему -- не пойму. Поэтому опять пишу на форум. Кто хорошо знает как писать индикаторы, может подскажете? Фрагмент кода не копирую. Нужно знать всё что написано в файле. Иначе не поймёте. Выкладываю файл индикатора. Ошибка -- выход за пределы массива. Не могу понять где выход за пределы? 2023.12.24_13:,35 GMT+3.  
Файлы:
Trend3.mq5  9 kb
 
Николай Никитюк #:
     Здравствуйте! От Максима Кузнецова я не получил ответа. Это комментарий ради комментария. Отписка. По прежнему бьюсь над индикатором. Он нужен мне, потому что тестер стратегий работает не лучшим образом. Проще самому посчитать прибыльность советника: лоты, свопы. В советнике вычисления, которые на графике движения цены не видны. Поэтому пишу индикатор. Он делает часть вычислений видными. У меня получилось сделать видимой главную линию индикатора. А дополнительные, -- не получается. Почему -- не пойму. Поэтому опять пишу на форум. Кто хорошо знает как писать индикаторы, может подскажете? Фрагмент кода не копирую. Нужно знать всё что написано в файле. Иначе не поймёте. Выкладываю файл индикатора. Ошибка -- выход за пределы массива. Не могу понять где выход за пределы? 2023.12.24_13:,35 GMT+3.  

и ещё раз :  "PPS/ и да: короткие вещи лучше вставлять как код в сообщения и не принуждать других скачивать файлы"

прямо в первх-же строчках 

#property indicator_buffers 4

#property indicator_plots   4

НЕВЕРНО - у вас 7 буферов 

PlotIndexSetInteger(4,PLOT_DRAW_BEGIN,InpMA2Period+1);

вообще ненужно - потому что он не рисуется, потому что буфер INDICATOR_DATA

открывайте документацию, даже учебник неплохой опубликован - и вперёд

что и как вычисляете даже и не смотрел :-)

 
Николай Никитюк #:
     Здравствуйте! От Максима Кузнецова я не получил ответа. Это комментарий ради комментария. Отписка. По прежнему бьюсь над индикатором. Он нужен мне, потому что тестер стратегий работает не лучшим образом. Проще самому посчитать прибыльность советника: лоты, свопы. В советнике вычисления, которые на графике движения цены не видны. Поэтому пишу индикатор. Он делает часть вычислений видными. У меня получилось сделать видимой главную линию индикатора. А дополнительные, -- не получается. Почему -- не пойму. Поэтому опять пишу на форум. Кто хорошо знает как писать индикаторы, может подскажете? Фрагмент кода не копирую. Нужно знать всё что написано в файле. Иначе не поймёте. Выкладываю файл индикатора. Ошибка -- выход за пределы массива. Не могу понять где выход за пределы? 2023.12.24_13:,35 GMT+3.  

попробуйте

ошибку читайте полностью

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

Файлы:
Trend3_v2.mq5  9 kb
Причина обращения: