Как уменьшить тормоза MT4 под VPS?

 

Ребята, столкнулся (давно уже) с проблемой жутких GUI-тормозов MT4 под VPS. Например, логи отображаются иногда с задержкой в минуту-другую. Вызов и изменение настроек запущенного советника - десятки секунд.

В итоге все сводится к тому, что запускаю и практически ничего не трогаю. Оперативно вмешаться нереально (вспоминается тупой вариант удаленного управления советником через технические отложки).

Валить на производительность VPS не могу, т.к. любые вычислительные бенчи летают также, как и на локальной. Захожу на VPS через RDP.

Чем меньше советников запущено, тем быстрее GUI отзывается. Тормозит только MT4, остальные параллельно-запущенные приложения работают штатно.

Если советники убираю полностью, GUI перестает лагать.

Интересно, что даже при жутких тормозах, часики в MarketWatch идут исправно.

Сами советники исключительно зацикленные. На каждой итерации много обращений к истории. Частота торговых приказов ~ 2-3Гц.

Тормоза наблюдаются даже с одним запущенным советником. Но когда их несколько - ступор почти полный.

Количество баров в окне и в истории < 5000. Самих чартов < 10. Объекты не используются совсем. Comment используется очень активно. Print - средне.

Количество ордеров в истории > 1000 (ограничиваю днем-неделей).  Но к истории ордеров через MQL4 не обращаюсь. Текущих ордеров иногда > 100 (постоянно опрашиваю).

Понять бы, что в какой мере влияет на тормоза. Если это постоянное обращение к массивам истории - одно. Если много торговых приказов - другое.

Возможно, имеет смысл какие-то расчеты перенести в DLL. Но сам MQL4 справляется с вычислениями на ура - больше десятка итераций в секунду. Да и на работу других приложений не влияет. Процессоры разные многоядерные, памяти 1-4Gb.

Сам терминал в памяти сжирает ~ 30Mb. 

А главное, на локальной машине все очень быстро работет. На ней заставить GUI хоть немного притормаживать не получается.

Раньше тормозов на VPS, вроде, не было. Точно не припомню, когда это стало происходить. Может, дело в новых build. Все описал для MT4 build 482. 

Прошу, дайте дельные рекомендации. Отказаться пока полностью от MT4 нет возможности.

 
Закгрузка ЦП при этом, в среднем, >90%?
 
CPU < 30%.
 

Хм, в этом случае х3.

Можно предположить, что влияет Comment, обычно эта функция грузит у меня МТ в цикле, попробуйте для начала закомментить участок кода с ней и посмотреть на результат.

Документация по MQL5: Общие функции / Comment
Документация по MQL5: Общие функции / Comment
  • www.mql5.com
Общие функции / Comment - Документация по MQL5
 
papaklass:

На чем сказываются задержки? На отправке торговых приказов или исполнении заявок?

Если на испонении  заявок, то я тоже с этим сталкиваюсь. Бывает, что одиночная заявка исполняется секунд 10 - 15. И это на счете ЕСН. Да и на форуме Альпов подымали вопросы с задержками исполнения ордеров. Они приводили логи своего сервера, где исполнение было быстрое.

У человека тормозит GUI, что не понятного? Читайте первое предложение.
 
Можно попробовать всё распечатки буферизовать в стринговый массив и периодически вываливать в файл с минимумом использования GUI.
 

Убрать Commеnt() - это самая тяжелая функция он заставляет полностью перерисовать окно. Перейти на 451 билд пока. Поставить анвир и посмотреть количество GDI и USER объектов, ошибок страницы. 

 

hrenfx если выявите, что это действительно Comment, поставьте перед ней условие на Comment не чаще, чем раз в 40 мс. Ваш глаз все-равно быстрее не увидит, но это высвободит ресурсы - проверено.

Хотя, в вашем случае, можно и 500 мс поставить - 2 Гц это позволяют, если я правильно понимаю о влиянии скорости ваших алгоритмов.

 

Если используете внутренний учет ордеров через динамические массивы, то очень сильно тормозит функция ArrayResize().

Вместо комментов попробуйте использовать графический объект типа OBJ_TEXT.

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
sandex:

Вместо комментов попробуйте использовать графический объект типа OBJ_TEXT.

плохой совет.
 
sandex:

Если используете внутренний учет ордеров через динамические массивы, то очень сильно тормозит функция ArrayResize().

Вместо комментов попробуйте использовать графический объект типа OBJ_TEXT.

  Объекты все равно прийдется обновлять, так что выигрыша не получится. дельный совет ограничивать частоту обновлений. я бы окна которые не видны не обновлял совсем.

  Стопроцентно тормозит канал. 

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