64-битный MT5 build 858 блокируется...

 

Здравствуйте,

Мой брокер вчера выпустил 64-битную версию MT5 build 858, и после обновления с build 842 (который работал нормально) до этой новой версии, MT5 спорадически блокируется (т.е. замирает и становится невосприимчивым). Единственный способ закрыть MT5 после того, как это произошло, - убить его через диспетчер задач.

Эта проблема была очевидна как на моей демонстрационной машине MT5 (windows 7), так и на моей живой машине MT5 VPS (Windows Server 2008r2). На обеих этих машинах ранее без проблем работал MT5 build 842.

Ничего не изменилось в конфигурации MT5 - те же самые эксперты и т.д., которые использовались в билде 842, теперь работают на обеих установках билда 858.

Несколько недель назад я также запустил 32-битную машину, чтобы протестировать билд 858 (по какой-то причине мой разоритель выпустил 32-битную версию билда 858 пару недель назад, а 64-битную - только вчера), с которой у меня не возникло никаких проблем. С тех пор я перевел свою реальную торговлю на 32-битную платформу и пока не испытывал никаких проблем. Сегодня днем 64-битная демо-версия, на которой я работал, снова дала сбой.

О, и в логах нет ничего, что указывало бы на то, что у MT5 были какие-либо проблемы.

У кого-нибудь еще есть такие проблемы?

 
Полагаю, вы сообщили об этой проблеме в службу поддержки?
 
angevoyageur:
Полагаю, вы сообщили об этой проблеме в службу поддержки?
А, нет - торопился и совсем вылетело из головы! Спасибо за напоминание - сейчас же это сделаю...
 

Текущее состояние вопроса - проблемы с блокировкой возникают как с билдом 858, так и с новой версией, доступной на сайте MetaQuotes - билдом 868. Проблемы с блокировкой возникают как на 32, так и на 64-битных платформах. В настоящее время у меня есть отчет о проблеме, запущенный как MetaQuotes, так и моим брокером.

Есть ли кто-нибудь еще, кто испытывает проблемы с блокировкой билдов, более новых, чем билд 842? Я использую ряд экспертов, поэтому подозреваю, что MT5 должен быть достаточно "загружен", чтобы возникли эти проблемы с блокировкой.

Я также переустановил MT5 на различных машинах и VPS (в основном, чтобы исключить любые проблемы с машиной). И поскольку эти установки были свежими, я не вижу, что я каким-то образом испортил свою установку MT5. Я также перекомпилировал своих Экспертов с помощью новых компиляторов сборки, и это также не дало никаких изменений.

К сведению, я запускаю точно такие же Эксперты на тех же машинах, что и в прошлом году (на различных сборках MT5), и НИКОГДА не было случая, чтобы MT5 заблокировался (я был действительно впечатлен стабильностью MT5 до сих пор). Только когда я обновил свои беспроблемные установки MT5 build 842 до build 858, начались эти проблемы.

 
cowil:

Текущее состояние вопроса - проблемы с блокировкой возникают как с билдом 858, так и с новой версией, доступной на сайте MetaQuotes - билдом 868. Проблемы с блокировкой возникают как на 32, так и на 64-битных платформах. В настоящее время у меня есть отчет о проблеме, запущенный как MetaQuotes, так и моим брокером.

Есть ли кто-нибудь еще, кто испытывает проблемы с блокировкой билдов, более новых, чем билд 842? Я использую ряд экспертов, поэтому подозреваю, что MT5 должен быть достаточно "загружен", чтобы возникли эти проблемы с блокировкой.

Я также переустановил MT5 на различных машинах и VPS (в основном, чтобы исключить любые проблемы с машиной). И поскольку эти установки были свежими, я не вижу, что я каким-то образом испортил свою установку MT5. Я также перекомпилировал своих Экспертов с помощью новых компиляторов сборки, и это также не дало никаких изменений.

К сведению, я запускаю точно такие же Эксперты на тех же машинах, что и в прошлом году (на различных сборках MT5), и НИКОГДА не было случая, чтобы MT5 заблокировался (я был действительно впечатлен стабильностью MT5 до сих пор). Только когда я обновил свои беспроблемные установки MT5 build 842 до build 858, начались эти проблемы.

Я обнаружил ошибку в функции Bars() в этих билдах 858/868. Эта ошибка значительно замедляет выполнение кода. Возможно, у вас тоже есть такая проблема.
Documentation on MQL5: Timeseries and Indicators Access / Bars
Documentation on MQL5: Timeseries and Indicators Access / Bars
  • www.mql5.com
Timeseries and Indicators Access / Bars - Documentation on MQL5
 
angevoyageur:
Я обнаружил ошибку в функции Bars() в этих билдах 858/868. Эта ошибка значительно замедляет выполнение кода. Возможно, у вас тоже есть такая проблема.

Привет - спасибо за ваш вклад.

На самом деле я не использую функцию Bars() в своем коде, но мне кажется немного странным, что такая серьезная ошибка закралась в столь часто используемую функцию - особенно если учесть, что раньше ее там не было... Возможно, связанная функция, которую я использую, вызывает тот же код, что и функция Bars()?

Как вам удалось это обнаружить и затем изолировать? Было ли время, которое требовалось Bars() для выполнения своей функции, необычайно долгим? Если да, то о каком времени вы говорите - о сотнях миллисекунд?

Сейчас я пытаюсь заставить MetaQuotes или моего брокера поставить мне билд 842 или более раннюю версию, но пока безуспешно...

 
cowil:

Привет - спасибо за ваш вклад.

На самом деле я не использую функцию Bars() в своем коде, но мне кажется немного странным, что такая серьезная ошибка закралась в столь часто используемую функцию - особенно если учесть, что раньше ее там не было... Возможно, связанная функция, которую я использую, вызывает тот же код, что и функция Bars()?

Как вам удалось это обнаружить и затем изолировать? Было ли время, которое требовалось Bars() для выполнения своей функции, необычайно долгим? Если да, то о каком времени вы говорите - о сотнях миллисекунд?

Сейчас я пытаюсь заставить MetaQuotes или моего брокера поставить мне билд 842 или более раннюю версию, но пока безуспешно...

Сначала я заметил, что советник не обновляет информацию, отображаемую на графике, на каждом тике. Поэтому я начал отлаживать код и обнаружил, что обработчик события OnTick() не вызывается на каждом тике, что означает, что OnTick для предыдущего тика все еще выполняется.

Затем я использую профайлер, чтобы проанализировать, что происходит в OnTick(), и обнаружил, что это функция Bars(), которая занимает много секунд на выполнение. После я проверяю функцию Bars() с помощью очень простого кода, чтобы убедиться, что это ошибка в MT5/mql5. Тот же самый код работает без проблем с билдом 842.

Profiler - потрясающий инструмент, такой простой в использовании и мощный.

 
angevoyageur:

Сначала я заметил, что советник не обновляет информацию, отображаемую на графике, на каждом тике. Поэтому я начал отлаживать код и обнаружил, что обработчик события OnTick() не вызывается на каждом тике, что означает, что OnTick для предыдущего тика все еще выполняется.

Затем я использовал профайлер для анализа того, что происходит в OnTick(), и обнаружил, что функция Bars() занимает много секунд на выполнение. После я проверяю функцию Bars() с помощью очень простого кода, чтобы убедиться, что это ошибка в MT5/mql5. Тот же самый код работает без проблем с билдом 842.

Profiler - потрясающий инструмент, такой простой в использовании и мощный.

Во-первых, огромное спасибо за информацию - очень признателен! :)

Боже, вы говорите, СЕКУНДЫ...? Это определенно серьезная проблема. Думаю, я могу сделать то же самое и посмотреть, что делает мой Эксперт. Я запускаю один и тот же Эксперт на 8 разных графиках, поэтому не хочется думать, что может происходить, если такие задержки происходят в каждом Эксперте.

И никакой радости от MetaQuotes по поводу попыток получить билд 842 или более раннюю версию. Цитата"Нет, у нас нет ссылки на билд 842. Мы нигде не храним старые версии". Невероятно... :( Когда вы говорите, что у вас есть билд 842, я предполагаю, что это уже установленная версия, а не устанавливаемая?

 
cowil:

Во-первых, огромное спасибо за информацию - очень ценю! :)

Боже, вы говорите, СЕКУНДЫ...? Это определенно серьезный вопрос. Думаю, я могу сделать то же самое и посмотреть, что делает мой эксперт. Я запускаю один и тот же Эксперт на 8 разных графиках, поэтому не хочется думать, что может происходить, если такие задержки происходят в каждом Эксперте.

И никакой радости от MetaQuotes по поводу попыток получить билд 842 или более раннюю версию. Цитата"Нет, у нас нет ссылки на билд 842. Мы нигде не храним старые версии". Невероятно... :( Когда вы говорите, что у вас есть билд 842, я предполагаю, что это уже установленная версия, а не устанавливаемая?

Да, уже установленная от брокера (см. ваш PM).
 

Мой собственный брокер также не смог предоставить мне более старую версию. Так что, как бы невероятно это ни казалось, ни мой (крупный) брокер, ни крупная компания-разработчик программного обеспечения (т.е. MetaQuotes) не смогли предоставить мне ни одной предыдущей сборки MT5. Невероятно!!!

ТАК ЧТО ДЛЯ ВСЕХ, КТО ЕЩЕ ЧИТАЕТ ЭТОТ ПОСТ, ОБНОВЛЕНИЕ - ЭТО, ПО СУТИ, УЛИЦА С ОДНОСТОРОННИМ ДВИЖЕНИЕМ! КАК БЫ НЕВЕРОЯТНО ЭТО НИ КАЗАЛОСЬ, НО НЕ СУЩЕСТВУЕТ ПРЕДЫДУЩИХ СБОРОК, К КОТОРЫМ МОЖНО БЫЛО БЫ ВЕРНУТЬСЯ В СЛУЧАЕ ПРОБЛЕМНОГО РЕЛИЗА MT5. ПОЭТОМУ УБЕДИТЕСЬ, ЧТО ВЫ ВСЕ ТЩАТЕЛЬНО ПРОВЕРЯЕТЕ, ПЕРЕД ТЕМ КАК ОБРАТИТЬСЯ К НОВОЙ РЕЛИЗЕ, ИСКЛЮЧИТЕЛЬНО В ЖИВОМ (т.е. с использованием реальных денег) ОКРУЖЕНИИ!!!

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

1. Найдите кого-нибудь, у кого все еще работает сборка 842.

2. Попросите его сделать копию всей структуры каталогов установки MT5 и поместить ее во временный каталог на его компьютере.

3. Попросите их пройтись по директориям ../bases/xxx/history/<SymbolPair> (из скопированной установки MT5 в их временной директории) и удалить все содержимое каждой директории (Этот шаг в основном удаляет данные истории этого конкретного брокера).

4. После удаления исторических данных попросите их заархивировать всю структуру каталогов установки в их временной директории и отправить ее вам (я использовал для этого dropbox).

5. На своем компьютере установите сборку 858/868 (это гарантирует, что будут установлены соответствующие настройки реестра).

6. Распакуйте всю полученную вами установку MT5 во временную директорию на вашем компьютере и переименуйте директорию установки полученной установки MT5 (в вашей временной директории) в имя директории установки, которую вы использовали в вышеуказанной установке 858/868.

7. Удалите структуру директории установки MT5 build 858/868 и замените ее той, которая сейчас находится в вашей временной директории.

8. Скорее всего, все файлы в замененном каталоге MT5 будут помечены как Read-Only. Пометьте их на Чтение/Запись.

8. Запустите MT5. Теперь у вас должна быть рабочая версия 842. Конечно, теперь вам нужно настроить имя сервера вашего брокера (если ваша установка 842 была настроена на использование другого брокера, а не вашего собственного), логин и пароль в "Tools" -> "Options" -> вкладка "Server".

Опять же, я хочу подчеркнуть, что это крайняя мера, которая не одобряется мной и, скорее всего, не будет одобрена ни MQ, ни вашим брокером. Однако, отчаянные времена иногда требуют отчаянных мер. Если вам нужна установка сборки 842, пожалуйста, дайте мне знать.

 
angevoyageur:
Да, уже установил от брокера (см. ваш PM).

Здравствуйте,

Пытался найти сборку 842 у разных брокеров, но все, на кого я натыкался, уже обновились. В конце концов, приведенный выше хак вернул меня к работе - с тех пор (скрестим пальцы) моя установка MT5 больше не падала.

Я сразу заметил, что билд 842 работает намного эффективнее, чем два более новых билда (т.е. меньше использует процессор), поэтому я подозреваю, что разновидность проблемы, с которой вы столкнулись при работе с функцией Bars(), может быть связана с другой функцией, которую я использую в своих экспертах. Думаю, пора достать Profiler и начать проводить собственные тесты. И если я выясню, в чем проблема, MetaQuotes может, черт возьми, заплатить мне 300 евро, которые я потерял (из-за этой проблемной сборки) за эти знания! :)

В любом случае, еще раз спасибо за помощь - очень признателен!

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