Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 593

 

Еще вопрос, насколько нормально тестер работает с советниками, которые копируют данные с нескольких ТФ?

Если корректно, то какой тф выбирать при тестировании имеет значение?

 
Juer:

Вылазит ошибка out of memory при запуске тестирования (не запускается). Как это лечить?

После рестарта терминала тестирование запускается, а потом после нескольких тестов снова out of memory.

Уменьшить количество видимых и баров в истории (только в этом случае глубокая история котировок пропадет, так что тут Вам решать что важнее).  Также возможно, что открыто слишком много графиков в терминале. Бывает, что пользователь открывает порядка 50-и графиков с глубиной истории в 1 млн. баров. Тут уже никакой памяти не хватит.

 
Artyom Trishkin:

Вот тут смогут точно ответить.

В коде несколько десятков тысяч строк. В логах ошибки только после завершения тестирования xxx undeleted objects left. Где-то в среднем 9 тестов могу запустить, а потом ошибка out of memory.

 
Ihor Herasko:

Уменьшить количество видимых и баров в истории (только в этом случае глубокая история котировок пропадет, так что тут Вам решать что важнее).  Также возможно, что открыто слишком много графиков в терминале. Бывает, что пользователь открывает порядка 50-и графиков с глубиной истории в 1 млн. баров. Тут уже никакой памяти не хватит.

Нет, это ничего не помогает и не влияет. Тестирую с одним графиком, историю уменьшал по минимуму. И повторяю, тестируется, но ограниченное число раз. Где-то на 10-й тест вылазит ошибка out of memory.

 
Juer:

В коде несколько десятков тысяч строк. В логах ошибки только после завершения тестирования xxx undeleted objects left. Где-то в среднем 9 тестов могу запустить, а потом ошибка out of memory.

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

 
Ihor Herasko:

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

Уточню: удалить все объекты в OnDeinit() - графические, объекты классов если есть...

 
Artyom Trishkin:

Уточню: удалить все объекты в OnDeinit() - графические, объекты классов если есть...

Как мне их там удалить, если они там невидимы...

У меня коллекция объектов (класс наследуемый от CArrayObj), они в свою очередь добавляются ещё в список таких же объектов, а те в конечный объект (тоже наследуемый от CArrayObj), который уже виден на глобальном уровне и который я удаляю в OnDeinit... А те я не удаляю, когда их удалять, они мне нужны во время работы программы.

 
Juer:

Как мне их там удалить, если они там невидимы...

У меня коллекция объектов (класс наследуемый от CArrayObj), они в свою очередь добавляются ещё в список таких же объектов, а те в конечный объект (тоже наследуемый от CArrayObj), который уже виден на глобальном уровне и который я удаляю в OnDeinit... А те я не удаляю, когда их удалять, они мне нужны во время работы программы.

Не бывает, чтобы создаваемые Вами же объекты, были невидимы. 

Они могут быть недоступны из той или иной функции, но в самом то объекте они должны быть доступны. Вот в этом объекте и нужно чистить память. Обычно это делается деструкторе класса. Чтобы убедиться, расставьте Print'ы во всех деструкторах и в OnDeinit.

 
Пожалуйста,кто знает,подскажите способ определения наличия OCT панели на графике
 
Stanislav Dray:
Пожалуйста,кто знает,подскажите способ определения наличия OCT панели на графике

Что такое ОСТ панель?

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