Функция ArrayIsSeries вообще работает?

 

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

#property strict

То код перестаёт работать. Да, я вижу место, где кроется касяк. Хотел понять в чём суть. Начал принтовать и... как-бы это сказать более удачно.. очередной раз удивился. Если добавить строку в код индикатора:

  bool asSeries = ArrayIsSeries(ZZBuf);

Терминал убивается напрочь. Он просто зависает на неограниченное время с концами. Если в другой среде разработки при запуске приложения можно производить отладку и увидеть касяк или хотя бы даже как-то вывести в файл или на экран причину касяка, то как в терминалом МТ4 это сделать вопрос... Это как-то можно вообще сделать? Как понять почему терминал подвис? Есть может какие-то средства для этого? В папке терминала, кстати, MQL4\Logs\ нет пишется в лог актуального дня ничего в процессе подвисания.

Индикатор рабочий прилагаю ZigZagHighLow.mq4. Если к нему добавить обе строки, которые я привёл выше получится вариант ZigZagHighLow(Scriptong).mq4 (там ещё пару комментарием есть т.к. версия в процессе доработки) терминал убивается в конец. Вопрос актуален очень.

Файлы:
 
hoz:
...
bool asSeries = ArrayIsSeries(ZZBuf);
...

Этим вы проверяете является ли массив таймсерией. А разве ZZBuf - таймсерия? Нет - это индикаторный буфер.

Проверять направление его индексации нужно этой функцией: ArrayGetAsSeries()

Ведь очень же просто поставить курсор в редакторе на название функции и нажать F1 - всё сразу и разрешится.