Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов - страница 73
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
переустановил терминал, отключил антивирус полностью, подключался к разным брокерам,
все одно и то же. ошибка есть.
где лежат файлы hcs ?
С GUI, согласен, это как раз та задача, где использование многопоточности желательно, но это порождает некоторые усложнения в реализации, например, синхронизация.
Разделение ресурсоёмкой задачи по потокам никак не снижает нагрузку с CPU в целом, и даже повышает, если исключить возможность использования HyperThreading в разделённых потоках (решаемая задача просто полностью займёт все ядра CPU).
4-5 копий роботов, о которых вы упоминали (возможно работающие не самым оптимиальным образом), работают каждый в своём потоке, именно поэтому, нагрузка на CPU была 100%
Вполне возможно, что снижение нагрузки на 10-15% (25%), произошло из-за падения производительности алгоритма в целом, например из-за синхронизации.
Выделить сигнальную модель в отдельный поток, возможно и при существующих возможностях в MQL (в виде отдельной MQL программы)
синхронизацию потоков можно делать через мьютексы (если их добавить) или через самописные семафоры, это не проблема расставить флаги запрета обращения к данным во время их использования
по нагрузке изучал эту тему плотно, на собственной виртуалке при той же нагрузке (аналогичное число копий роботов, число ядер, их производительность, память), процессор использовался не более 30%, вся нагрузка ложилась в основном на отрисовку GUI - кластера, данные, объекты и т.д.
про оптимальность своего кода не утверждаю, т.к. любой сложный код можно хоть как то но оптимизировать в подавляющем большинстве случаев ))
в целом я вас понял
переустановил терминал, отключил антивирус полностью, подключался к разным брокерам,
все одно и то же. ошибка есть.
где лежат файлы hcs ?
В базе тестера
G:\ROBO MT5\Tester\bases\MetaQuotes-Demo\history
В базе тестера
G:\ROBO MT5\Tester\bases\MetaQuotes-Demo\history
Что могло пойти не так ?
Запустите тестирование.
После этого откройте диспетчер задач. Во вкладке Details найдите строчку metatester64.exe.
Покажите командную строку, с которой был запущен тестер
PS попробуйте руками создать папку G:\ROBO MT5\Tester\bases
Запустите тестирование.
После этого откройте диспетчер задач. Во вкладке Details найдите строчку metatester64.exe.
Покажите командную строку, с которой был запущен тестер
PS попробуйте руками создать папку G:\ROBO MT5\Tester\bases
Снес полностью всю папку терминала, установил в другую папку
и чудом все заработало.
Оптимизация по всем символам до сих пор не работает, но уже прогресс.
Кстати проверил другие папки и обнаружил, что тестер начинает выдавать ошибку, когда папка длинная и с русскими символами.
Кстати проблема такая же у пользователя с Китая.
Наверно у него китайские символы в имени полного пути. Буду выяснять.
Спасибо за помощь. Методом проб теперь понимаю, что в пути проблема.
И то ли это недавнее обновление Windows (7) то ли обновление терминала.
Ведь раньше все работало штатно.
С оптимизатором буду разбираться теперь.
синхронизацию потоков можно делать через мьютексы (если их добавить) или через самописные семафоры, это не проблема расставить флаги запрета обращения к данным во время их использования
Вы бы сначала обмен данными между MQL-программами выпросили бы лучше - проблема стара как МТ4, обмен через глобальные переменные терминала довольно неудобен, нужна возможность пробрасывать сложные типы данных между MQL-программами, тогда, кстати, и многопоточность средствами MQL можно организовать
MT5 Build 2044
-----------------------------
При тестировании советника в режиме визуализации заметил такую штуку. Допустим нужно прогнать советник на том инструменте, где ни базовая валюта, ни котируемая не являются валютами депозита.
К примеру, валюта депозита = "USD", а текущий символ = "AUDNZD". В этом случае при запуске тестирования окно визуализатора просто зависает намертво. Кстати историю по нужным символам предварительно подкачал на всякий случай.
А вот если сделать так, что валюта депозита = "AUD" || "NZD" и текущий символ = "AUDNZD", то всё работает.
Скажите. Какой полный путь к вашему терминалу.
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
Вы бы сначала обмен данными между MQL-программами выпросили бы лучше - проблема стара как МТ4, обмен через глобальные переменные терминала довольно неудобен, нужна возможность пробрасывать сложные типы данных между MQL-программами, тогда, кстати, и многопоточность средствами MQL можно организовать
Это не проблема уже много лет, используйте маппинг или сокеты, все коннектится без проблем, скорость на уровне скорости памяти, но городить огород ради одного алгоритма в несколько роботов, это для меня слишком, проще написать один раз свой терминал в котором через реализованное API писать роботов на разных ЯП умеющих работать с потоками на уровне ОС, к примеру С++, Python, C# и имеющие богатые библиотеки, а вот в качестве коннектора уже использовать МТ5, сам задумываюсь над таким коннектором, а то анохронизм одного терминала не устраивает уже )))