Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
hrenfx
3675
hrenfx  

Ребята, столкнулся (давно уже) с проблемой жутких 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 нет возможности.

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

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

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

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

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

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

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
Heroix
1284
Heroix  
papaklass:

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

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

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

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

Heroix
1284
Heroix  

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

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

Alexander Bereznyak
25197
Alexander Bereznyak  

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

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

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

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

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