Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов - страница 73

 

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

все одно и то же. ошибка есть.


где лежат файлы hcs ? 

 
Ilyas:

С GUI, согласен, это как раз та задача, где использование многопоточности желательно, но это порождает некоторые усложнения в реализации, например, синхронизация.

Разделение ресурсоёмкой задачи по потокам никак не снижает нагрузку с CPU в целом, и даже повышает, если исключить возможность использования HyperThreading в разделённых потоках (решаемая задача просто полностью займёт все ядра CPU).
4-5 копий роботов, о которых вы упоминали (возможно работающие не самым оптимиальным образом), работают каждый в своём потоке, именно поэтому, нагрузка на CPU была 100%

Вполне возможно, что снижение нагрузки на 10-15% (25%), произошло из-за падения производительности алгоритма в целом, например из-за синхронизации.

Выделить сигнальную модель в отдельный поток, возможно и при существующих возможностях в MQL (в виде отдельной MQL программы)

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

по нагрузке изучал эту тему плотно, на собственной виртуалке при той же нагрузке (аналогичное число копий роботов, число ядер, их производительность, память), процессор использовался не более 30%, вся нагрузка ложилась в основном на отрисовку GUI - кластера, данные, объекты и т.д.

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

в целом я вас понял

 
Vladislav Andruschenko:

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

все одно и то же. ошибка есть.


где лежат файлы hcs ? 

В базе тестера

G:\ROBO MT5\Tester\bases\MetaQuotes-Demo\history

 
Slava:

В базе тестера

G:\ROBO MT5\Tester\bases\MetaQuotes-Demo\history

Что могло пойти не так ? 
У меня нет такой папки. 
В папке tester нет папки bases 

 Проверил на других терминалах тоже нет такой папки. 
 
Vladislav Andruschenko:
Что могло пойти не так ? 
У меня нет такой папки. 
В папке tester нет папки bases 

 Проверил на других терминалах тоже нет такой папки. 

Запустите тестирование.

После этого откройте диспетчер задач. Во вкладке Details найдите строчку metatester64.exe.

Покажите командную строку, с которой был запущен тестер

PS попробуйте руками создать папку G:\ROBO MT5\Tester\bases

 
Slava:

Запустите тестирование.

После этого откройте диспетчер задач. Во вкладке Details найдите строчку metatester64.exe.

Покажите командную строку, с которой был запущен тестер

PS попробуйте руками создать папку G:\ROBO MT5\Tester\bases


Снес полностью всю папку терминала, установил в другую папку 

и чудом все заработало.

Оптимизация по всем символам до сих пор не работает, но уже прогресс. 


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

Кстати проблема такая же у пользователя с Китая. 

Наверно у него китайские символы в имени полного пути. Буду выяснять. 


Спасибо за помощь. Методом проб теперь понимаю, что в пути проблема.

И то ли это недавнее обновление Windows (7) то ли обновление терминала.

Ведь раньше все работало штатно. 


С оптимизатором буду разбираться теперь.  

 
Konstantin:

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

Вы бы сначала обмен данными между MQL-программами выпросили бы лучше - проблема стара как МТ4, обмен через глобальные переменные терминала довольно неудобен, нужна возможность пробрасывать сложные типы данных между MQL-программами, тогда, кстати, и многопоточность средствами MQL можно организовать

 
Denis Kirichenko:

MT5 Build 2044

-----------------------------

При тестировании советника в режиме визуализации заметил такую штуку. Допустим нужно прогнать советник на том инструменте, где ни базовая валюта, ни котируемая не являются валютами депозита.

К примеру, валюта депозита = "USD", а текущий символ = "AUDNZD". В этом случае при запуске тестирования окно визуализатора просто зависает намертво. Кстати историю по нужным символам предварительно подкачал на всякий случай.

А вот если сделать так, что валюта депозита = "AUD" ||  "NZD" и  текущий символ = "AUDNZD", то всё работает.

Скажите. Какой полный путь к вашему терминалу. 
 
Vladislav Andruschenko:
Скажите. Какой полный путь к вашему терминалу. 

C:\Program Files\MetaTrader 5

И  никакой базы Тестера у себя не вижу. Есть только такие папки:

1) C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache

2) C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\logs


Позже база нашлась. Не там искал. Вот такой путь:

C:\Users\User\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\bases

 
Igor Makanu:

Вы бы сначала обмен данными между MQL-программами выпросили бы лучше - проблема стара как МТ4, обмен через глобальные переменные терминала довольно неудобен, нужна возможность пробрасывать сложные типы данных между MQL-программами, тогда, кстати, и многопоточность средствами MQL можно организовать

Это не проблема уже много лет, используйте маппинг или сокеты, все коннектится без проблем, скорость на уровне скорости памяти, но городить огород ради одного алгоритма в несколько роботов, это для меня слишком, проще написать один раз свой терминал в котором через реализованное API писать роботов на разных ЯП умеющих работать с потоками на уровне ОС, к примеру С++, Python, C# и имеющие богатые библиотеки, а вот в качестве коннектора уже использовать МТ5, сам задумываюсь над таким коннектором, а то анохронизм одного терминала не устраивает уже )))