Переписать код с mql4 в mql5

 

Привет! Начинаю изучать язык mql5  и столкнулся с проблемой... Не могу реализовать функцию с mql4!

int    i, k=iBars(Symbol(), 0);
for (i=1; i<k; i++) 

 пробовал так, но терминал МТ5 начинает глючит)) Ребята нужна ваша помощь)  Как будет правильно выглядеть код для mql5?) Спасибо!

int    i, k=Bars(_Symbol, _Period);
for (i=1; i<k; i++) 
 

Как глючит? 

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

 
Dmitry Fedoseev:

Как глючит? 

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

Да, тормозит) Когда убираю этот код, всё работает нормально...
 
Aibek Mugiynov:
Да, тормозит) Когда убираю этот код, всё работает нормально...
Если этот код убрать, что вместо него?
 
Aibek Mugiynov:
Да, тормозит) Когда убираю этот код, всё работает нормально...
Вам реально нужно перебирать все бары? Ограничьте общую длину или количество обрабатываемых значений за один заход.
 
В общем с этим кодом я получаю значения вершин индикатора зигзаг в mql4, а тут в mql5 не знаю как... Или есть другой код для mql5? А то я всё с mql4 беру и переписываю под mql5))
 
Aibek Mugiynov:
В общем с этим кодом я получаю значения вершин индикатора зигзаг в mql4, а тут в mql5 не знаю как... Или есть другой код для mql5? А то я всё с mql4 беру и переписываю под mql5))

Вам реально нужны вершины за весь период? И их пересчет на каждом баре?

Вы код приведите полностью - проще будет подсказать, а не тыкать пальцем в небо.

В mql4 и mql5 абсолютно разная схема обработки индикаторных буферов

 
Aibek Mugiynov:
Вот так я получаю значения цены вершин индикатора зигзаг, а как можно реализовать его в mql5? 

Вообще-то как-то лениво писать полный код. У вас вроде есть своя реализация для mql5 - выложите ее.

iCustom должен быть в инит-функции.

В OnCalculate нужно проверить загрузился ли индикатор посредством BarsCalculated, затем скопировать буфер во внутренний массив посредством CopyBuffer и уже с ним работать.

пример в доке 

https://www.mql5.com/en/docs/indicators/icustom

Documentation on MQL5: Technical Indicators / iCustom
Documentation on MQL5: Technical Indicators / iCustom
  • www.mql5.com
Technical Indicators / iCustom - Reference on algorithmic/automated trading language for MetaTrader 5
 
Два варианта: или сменить зигзаг (в кодабазе есть быстрый зигзаг (от Юрича)), или  в настройках терминала уменьшить количество баров на графике. Лучше первый вариант, потому-что с этим зигзагом тестировать все равно не получится.
 
Неужели такой сложный язык mql5))  Весь рунет перерыл, нету ни одной темы подходящей...
 
Aibek Mugiynov:
Вот так я получаю значения цены вершин индикатора зигзаг, а как можно реализовать его в mql5? 
посмотрите детали реализации zigzag в Mt4/Mt5 - что то сдаётся что
      if(d1>0) break;

неправильно и в MT5 цикл бежит действительно по всем барам на каждом тике

то есть индикатор вместо 0 заполняет буфер EMPTY_VALUE которое совсем не 0 :-)

Причина обращения: