VPS, MT5 и память - сколько ему надо?! - страница 3

 

Делал свой график на канвасе, со своей панелью таймфреймов. Так вот, при частом переключении резко возрастала оперативная память. Это происходит из-за запроса данных с чужих таймфреймов. Если долго не обращаться(не переключаться), памать выгружается. Может быть причина в этом.

ps:  опишу поподробнее: на дополнительном графике-канвасе стоит 5-ти минутный фрейм. Нажал кнопку переключения на 15 мин - оперативка увеличилась примерно на 80 кб. Обратно на 5 или другой фрейм еще примерно на столько же. Итак, играясь переключением таймфремов можно было выжрать всю память. И выгружалась она не через 2-3 минуты, а по разному то 10, то 20 минут, а то и больше. Как я сказал выше это происходит из-за запроса данных с чужих таймфреймов. По идеи думал - скопировал данные в массив, использовал, удалил. Фиг вам, терминал сам решает когда удалять. Так, что если ваш эксперт использует запросы данных с других фреймов может быть причина в этом.

 
tyup:

Делал свой график на канвасе, со своей панелью таймфреймов. Так вот, при частом переключении резко возрастала оперативная память. Это происходит из-за запроса данных с чужих таймфреймов. Если долго не обращаться(не переключаться), памать выгружается. Может быть причина в этом.

ps:  опишу поподробнее: на дополнительном графике-канвасе стоит 5-ти минутный фрейм. Нажал кнопку переключения на 15 мин - оперативка увеличилась примерно на 80 кб. Обратно на 5 или другой фрейм еще примерно на столько же. Итак, играясь переключением таймфремов можно было выжрать всю память. И выгружалась она не через 2-3 минуты, а по разному то 10, то 20 минут, а то и больше. Как я сказал выше это происходит из-за запроса данных с чужих таймфреймов. По идеи думал - скопировал данные в массив, использовал, удалил. Фиг вам, терминал сам решает когда удалять. Так, что если ваш эксперт использует запросы данных с других фреймов может быть причина в этом.

Сам по себе запрос данных с других ТФ к разрастанию памяти приводить не должен.

Если у вас есть воспроизводимый пример, напишите в сервис-деск, разберутся и исправят. 

 
Andrey Khatimlianskii:

Сам по себе запрос данных с других ТФ к разрастанию памяти приводить не должен.

Если у вас есть воспроизводимый пример, напишите в сервис-деск, разберутся и исправят. 

Это было давно. Но, помню когда локализовывал проблему, оставлял только CopyRates и две кнопки и все было так как я описал выше. Просто сейчас 5-ку не использую, как только ввели в 4-ку ООП и канвас спрыгнул обратно.
 
tyup:
Это было давно. Но, помню когда локализовывал проблему, оставлял только CopyRates и две кнопки и все было так как я описал выше. Просто сейчас 5-ку не использую, как только ввели в 4-ку ООП и канвас спрыгнул обратно.
А как же быстрые тесты и оптимизация в облаке?  ну или на своих ядрах в своей сети агентов  -  оно же на МТ5 летает!
Просто - любая оптимизация на MT4 по времени рядом не может стоять против МТ5.
 
vito333:
OS на VPS какая?
Windows Server 2016 x64
 

Разобрался.

Использовал для работы нескольких экспертов на одном инструменте готовый класс из статьи "ИСПОЛЬЗОВАНИЕ ORDER_MAGIC ДЛЯ ТОРГОВЛИ РАЗНЫМИ ЭКСПЕРТАМИ НА ОДНОМ ИНСТРУМЕНТЕ"

В‌от при вызове метода расчёта позиции он и отжирает за раз у меня в терминале около 180Мб на эксперт. А вызовы у меня идут в OnTradeTransaction после каждого входа-выхода в позицию. Метод класса грузит ВСЮ историю, вида if(HistorySelect(0,TimeCurrent())). Почему память не освобождается - не знаю, мне знаний не хватает корректно определить.

Д‌ля тестов поменял определение позиции на стандартное PositionSelect(), с ним всё ровно, никакого лишнего расхода памяти.

Т‌еперь буду пытаться или изменить или смотреть в сторону аналогичного решения от Дмитрия Федосеева.

И‌ли может у кого готовое решение есть?

 

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

Однако при этом первом вызове так же отжирает 180Мб ((

Буду думать дальше. 

 
vito333:

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

Однако при этом первом вызове так же отжирает 180Мб ((

Буду думать дальше. 

механизмом исключений - можно найти быстро  то место которое отжирает память

 
Yuriy Zaytsev:

механизмом исключений - можно найти быстро  то место которое отжирает память

вот тут, можно по подробнее ?
 
Maxim Kuznetsov:
вот тут, можно по подробнее ?

Ну я имел ввиду , если потихоньку отключать те или иные вызовы , рано или поздно можнл выйти  на тот модуль  который отжирает память. Но это при условии что у вас код написан в виде отдельных процедур а не тупо линейно.
Причина обращения: