Как уменьшить потребление памяти терминалом?

 

Пожалуйста, подскажите, какие меры можно предпринять, чтобы уменьшить потребление оперативной памяти терминалом МТ5?

У меня на данный момент это выглядит вот так:

Казалось бы, МТ5 более современный терминал по сравнению МТ4. И он должен быть более оптимизирован, в том числе с точки зрения работы с память. Но почему-то на практике это не так.
При +/- одинаковом числе открытых графиков, индикаторов и советников на них, МТ5 расходует существенно больше оперативной памяти, чем МТ4.

Мне известны следующие способы снижения ресурсоёмкости терминала:

  1. Отключить новости
  2. На вкладке "Графики" уменьшить макс. количество баров в окне (я уменьшил до 10000)
  3. В Обзоре рынка удалить все символы, кроме необходимых для торговли и расчётов
  4. На вкладке Сообщество отключить все неиспользуемые сервисы 

Однако, возможно, есть ещё какие-то лайфхаки, о которых я не знаю? Если кто знает, пожалуйста, подскажите.

Операционная система Windows Server 2016.

 

Я когда-то уже задавался этим вопросом: https://www.mql5.com/ru/forum/378634
Может что-то из того обсуждения вам будет полезно.

Сейчас посмотрел свои скриншоты трёхлетней давности, сравнил с вашими и вижу, что потребление памяти таки уменьшилось, почти в три раза. 
Так что прогресс не стоит на месте, оптимизация выполняется. Получается, что разработчики не просто так свой хлеб едят.

 

MetaTrader 5 оптимизирован лучше, и при этом:

  1. у него на порядки больше данных, детализированнее история
  2. функциональность кратно выше
  3. предназначен для массивной работы, поэтому приоритет за кешами и удержанием памяти
  4. 64 битный

Сам комплекс сверхэффективный - откройте каталог программы и оцените наличие всего трех exe файлов небольшого размера на огромный функционал. Мизерное количество софтверных компаний в состоянии такое сделать. 

Кроме того, мы прозрачно распространяем 3 версии оптимизированных программ: x64, AVX и AVX2. То есть, даем возможность каждому трейдеру выжать максимум из своих процессоров.

Вышесказанное и вся публичная история наших разработок является доказательством нашей оптимизации и эффективности.


 
Renat Fatkhullin #:

Сам комплекс сверхэффективный - откройте каталог программы и оцените наличие всего трех exe файлов небольшого размера на огромный функционал.

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

Вот за это в сочетании с простотой установки и продуманной структурой хранения данных огромное спасибо и низкий поклон вашей команде!

 
Janis Ozols:

Однако, возможно, есть ещё какие-то лайфхаки, о которых я не знаю? Если кто знает, пожалуйста, подскажите.

Отключить показ торговой истории и на каждом графике удалить autotrade-объекты.

Как пример, только на одном чарте 16K таких объектов (даже если последний раз торговали годы назад). Если используете шаблоны (templates), убедитесь, что в них отсутствуют эти объекты.

 

Janis Ozols:

На вкладке Сообщество отключить все неиспользуемые сервисы

Если не логиниться в Терминале к MQL5-сообществу, то потребление ресурсов должно быть ниже (не проверял).
 
fxsaber #:
Отключить показ торговой истории и на каждом графике удалить autotrade-объекты.

Спасибо! Можно включить их периодическое удаление по префиксу в советник, который установлен на этом графике (при наличии исходного кода).


fxsaber #:
Если не логиниться в Терминале к MQL5-сообществу, то потребление ресурсов должно быть ниже (не проверял).

Кстати, интересная мысль. А советники, купленные в Маркете, будут при этом работать? Подключение к Сообществу им нужно только в момент активации или постоянно?

 
Janis Ozols #:

советники, купленные в Маркете, будут при этом работать? Подключение к Сообществу им нужно только в момент активации или постоянно?

Не в курсе. Думаю, после активации искусственный disconnect не уменьшит потребление.

Скорее всего, запуск своего советника через Маркет-механизм и в виде простого EX5 - огромная разница.

 
Запросто можно нарваться на впустую выделенную память под массив.

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

Новая версия платформы MetaTrader 5 build 4230: больше встроенных приложений и расширение поддержки ONNX

fxsaber, 2024.03.05 18:13

void OnStart()
{
  MqlTick Ticks[];
  
  ArrayResize(Ticks, 5e7);
  Print(MQLInfoInteger(MQL_MEMORY_USED)); // 2862
  
  ArrayResize(Ticks, 1);
  Print(MQLInfoInteger(MQL_MEMORY_USED)); // 2862
}

И если нужно наплевать на быстродействие и уменьшить потребление памяти, то только ArrayCopy+ArrayFree.

 
fxsaber #:

И если нужно наплевать на быстродействие и уменьшить потребление памяти, то только ArrayCopy+ArrayFree.

Или минус единица для третьего параметра ArrayResize.

 

В MT5 больше всего жрет история торговли. Когда запускаете MT5, то грузится кеш (N Mb) истории для процесса, который отвечает за визуализацию истории торговли. Своего рода невидимый советник.

Каждый следующий запуск советника, который работает с историей торговли, кратно увеличивает потребление. Один советник - кеш забирает Nx2 Mb, два советника - Nx3 Mb и т.д.


Взял b4364, отрубил все, что мог. Пустой счет.


Обратите внимание, что показатели RAM отличаются.


Далее запускаем такой советник.

void OnInit()
{
  HistorySelect(0, INT_MAX);   // Запросили всю историю торговли.
  HistorySelectByPosition(0);  // Оставили только балансовые сделки.
}


Слабо что-то поменялось по RAM.


А теперь заходим на счет с богатой торговой историей.


Просто один чарт.


Добавляем на него наш советник.


Второй чарт с советником.


Десять чартов с советником-пустышкой.



Поэтому при большой истории два варианта.

  1. Попросить брокера обнулить историю торговли.
  2. Открыть у брокера новый торговый счет и продолжить торговать там.