Ошибки, баги, вопросы - страница 2491

 
Nikolai Semko:
Раз речь зашла про rates_total, тогда спрошу у сообщества, какая конструкция в OnCalculate изящнее и оптимальнее?
Раньше я в OnCalculate использовал конструкцию типа такой:


но после того, как понял, что могут возникать ситуации, когда prev_calculated>rates_total, понял, что ничего не понимаю, махнул рукой и, если пересчет всех баров занимает не больше пару секунд, то стал использовать такую конструкцию:

как кто делает и как, вообще, грамотно?

Грамотно так как сам понимаешь что происходит. Замечание по поводу вашей конструкции: Вместо  ==1 я-бы написал >=1 или просто if(rates_total > prev_calculated) для того, чтобы если подкачались пропущенные бары их пересчитать.

Плюс ко всему, в mql5 и с директивой strict в mql4 чтобы не выскочить за пределы массива надо учитывать сколько баров могут быть задействованы в расчётах от крайнего левого бара. Вот и получается, что шаблона как такового на все случаи жизни лично у меня нет.

 
Nikolai Semko:
Раз речь зашла про rates_total, тогда спрошу у сообщества, какая конструкция в OnCalculate изящнее и оптимальнее?
Раньше я в OnCalculate использовал конструкцию типа такой:


но после того, как понял, что могут возникать ситуации, когда prev_calculated>rates_total, понял, что ничего не понимаю, махнул рукой и, если пересчет всех баров занимает не больше пару секунд, то стал использовать такую конструкцию:

как кто делает и как, вообще, грамотно?

Я рассчитываю limit = rates_total - prev_calculated.
Затем, если limit > 1, то limit = rates_total - 1 (или необходимое для первого расчета кол-во баров-1) и инициализация.
А далее цикл от limit до >=0
С мобилы код не могу ...
 
Nikolai Semko:
Раз речь зашла про rates_total, тогда спрошу у сообщества, какая конструкция в OnCalculate изящнее и оптимальнее?
Раньше я в OnCalculate использовал конструкцию типа такой:


но после того, как понял, что могут возникать ситуации, когда prev_calculated>rates_total, понял, что ничего не понимаю, махнул рукой и, если пересчет всех баров занимает не больше пару секунд, то стал использовать такую конструкцию:

как кто делает и как, вообще, грамотно?

в принципе вопрос актуальный, в примерах от разработчиков (поставка МТ) разные способы подсчета, даже BarsCalculated() в Bears.mql5  используется

недавно под МТ4 обсуждали, я пока на таком шаблоне остановился: https://www.mql5.com/ru/forum/314931/page2#comment_11946579

под МТ5 нужно проверить, но чарты по разному себя ведут (МТ4 / МТ5), в МТ5 если прокрутить колесиком мыши к началу истории, кажется будет сбрасываться в ноль prev_calculated - в прошлом году писал индикатор под МТ5 был удивлен такому поведению

ЗЫ: кастомный график нужно сделать и по таймеру быстро историю пробрасывать - так сказать испытательный стенд нужен, чтобы поведение rates_total и prev_calculated  отследить, я пару страниц назад тут писал, про несоответствие  rates_total и  iBars() - это тоже нужно учитывать

ЗЫЗЫ: как вариант коды Младена по изучать, мне нравится его стиль написания индикаторов - все продумано до мелочей, единтсвенная проблема в его кодах - очень своеобразный стиль форматирования исходника 

[Удален]  
Igor Makanu:

...........................

очень своеобразный стиль форматирования исходника 


 
Сергей Таболин:


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

;)

пример https://www.mql5.com/ru/code/22766
[Удален]  

Просто вопрос.

ulong  имеет максимальное значение 18.........

Я получил значение 61........

А IntegerToString() этого значения выдаёт вообще выдаёт 90.............

Пришлось попотеть, пока нашёл проблему.

Можно ли как-то локализовать это?

 

Это нормально, что агенты после выполнения задания в облаке не освобождают оперативную память?



Версия 2085, 13 июня 2019.

Держит оперативную память минимум 1 час.

 
SEM:

Это нормально, что агенты после выполнения задания в облаке не освобождают оперативную память?


Вопрос не полный. Сколько времени агенты у Вас держат память? Какой билд терминала?

 
A100:

Ошибка при выполнении:

Результат  : 1

Ожидалось: 2 или (как в С++) - ошибка при компиляции

Спасибо за сообщение!

В MQL5 неподдерживается overriding (и/или hiding) методов классов.

Если мне не изменяет память, то несколько лет назад мы с Вами обсуждали уже эту особенность, правда речь тогда шла о том, какую перегрузку лучше вызывать ближайшую по наследованию или более точную по параметрам.


В новой версии компилятора, overriding будет работать, как в C++

Т.е. при переопределении родительского метода, вызвать его можно будет только через скоп "b.A::f()", попытка вызова b.f(10) приведёт к ошибке, метод b.f() - не имеет параметра, а метод A::f(int) недоступен (скрыт), т.к. бы переопределён.

 
Vladimir Karputov:

Вопрос не полный. Сколько времени агенты у Вас держат память? Какой билд терминала?


Дополнил информацию

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

SEM, 2019.07.01 09:03

Это нормально, что агенты после выполнения задания в облаке не освобождают оперативную память?



Версия 2085, 13 июня 2019.

Держит оперативную память минимум 1 час.