- handle тормоз
- Функция SymbolSelect() при добавлении большого количества символов в MarketWatch вешает Метатрейдер надолго.
- Автоматическая подгрузка истории во время работы советника
Все зависит от компьютера - хотите работать в мультисимвольном режиме и обрабатывать по 2000-4000 символов, тогда Ваш выбор Core i7 (лучше Core i9), памяти минимум 32 Гб. Я не говорю о том, что память и диск должны быть быстрыми.
Например когда я обхожу 2000 символов (банально запрашиваю Copyrates за шесть баров) - я
MetaTrader 5 x64 build 2605 started for MetaQuotes Software Corp. Windows 10 build 19041, Intel Core i7-9750H @ 2.60GHz, 25 / 31 Gb memory, 1643 / 1861 Gb disk, IE 11, UAC, GMT+2 C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
трачу 200 мс, а на другом
Core i3-9100F 3.6GHz, ОЗУ 8Gb
ПК на это уходит 3 минуты.
Все зависит от компьютера - хотите работать в мультисимвольном режиме и обрабатывать по 2000-4000 символов, тогда Ваш выбор Core i7 (лучше Core i9), памяти минимум 32 Гб. Я не говорю о том, что память и диск должны быть быстрыми.
Например когда я обхожу 2000 символов (банально запрашиваю Copyrates за шесть баров) - я
трачу 200 мс, а на другом
ПК на это уходит 3 минуты.
Я согласен с тем что Мощность ПК тоже играет роль. Но мне не понятно почему нагрузка на ЦП не скачкообразная при короткой работе алгоритма, а вырастает и становится постоянной. И почему она не падает даже после выгрузки советника с графика. Хочу понять чтоб определится со способом решения проблемы. Либо алгоритм менять, либо это особенность Метатрейдера, а может даже и Баг, тогда разработчикам думаю было бы интересно узнать об этом.
Все зависит от компьютера - хотите работать в мультисимвольном режиме и обрабатывать по 2000-4000 символов, тогда Ваш выбор Core i7 (лучше Core i9), памяти минимум 32 Гб. Я не говорю о том, что память и диск должны быть быстрыми.
Например когда я обхожу 2000 символов (банально запрашиваю Copyrates за шесть баров) - я
трачу 200 мс, а на другом
ПК на это уходит 3 минуты.
На сколько сильно влияет на скорость работы терминала (не тестера) MT5 объем оперативной памяти?
Здравствуйте, уважаемые форумчане. Попытаюсь вкратце описать проблему. Пишу мультивалютный советник с большим количеством инструментов. Раз в минуту по таймеру он проходит по списку инструментов и мониторит ситуацию на предмет интересных для алгоритма событий для входа. Когда инструментов штук 50 всё отлично. Когда подключаю пару сотен, начинает загружаться Процессор, причём что очень важно, загружается не сразу, а через минуту как наступает событие проверки советником инструментов и загрузка не понижается, то есть сам обход по всем инструментам занимает доли секунды, замерял специально от начала цикла до конца может уходить 5-10 сотых секунды. Но даже загрузка процессора не происходит скачкообразно, а поднимается и не падает, при увеличении инструментов до 500 загрузка ЦП поднимается почти до 100 процентов, при загрузке 4000+ инструментов виснет всё очень сильно, но сами просчёты алгоритма занимают поначалу около трёх секунд и потом уменьшаются до секунды+- при 4000 инструментов (включается либо кэширование либо оптимизация не знаю, но заметил последующие расчёты начинают занимать меньше времени), эти расчёты нужно совершать раз в минуту, можно и реже сделать в принципе, но проблема не в них, они занимают лишь несколько секунд из 60 каждой минуты. Но.. Процессор не работает скачкообразно на время работы алгоритма и не сбавляет обороты даже после долгого времени выключения советника, то есть Метатрейдер висит(загруженный) уже без советника пока я его не перезагружу. По этим наблюдениям я сделал предварительный вывод что это особенность работы Метатрейдера, а не алгоритма советника, хотя конечно могу ошибаться. Есть у кого соображения по этому поводу? Первое что приходит на ум это постоянная обработка Метатрейдером тех символов, которые были вызваны советником в первую минуту. Но я даже выключал их в MarketWatch и всё равно это не поменяло ситуацию, постоянная нагрузка на ЦП откуда-то берётся.
когда первый раз делаете проход по 100500 инструментов, MT синхронизует их данные с сервером и потом какое-то время пытается держать их синхронизованными. Как нормальная система реального времени. То есть он продолжает поддерживать соединения, получать/сохранять данные и прочие внутренние дела. Насколько понимаю отключение символа в MarketWatch не вызывает мгновенного отключения, а просто ставится галочка - "потом при случае корректно отключиться". К тому-же бывают "скрытые в Watch символы" - когда на них есть ордер/позиция и данные нужны, то символ просто скрывается, но не удаляется.
поэтому нагрузка получается зависит не столько от частоты просмотра, сколько от кол-ва символов в работе.
возможно поможет - разнести 100500 инструментов по разным сервисам (сервис исполняется в отдельном потоке, может быть будет лучше в плане отзывчивости). Но это резко усложнит алгоритм управления
когда первый раз делаете проход по 100500 инструментов, MT синхронизует их данные с сервером и потом какое-то время пытается держать их синхронизованными. Как нормальная система реального времени. То есть он продолжает поддерживать соединения, получать/сохранять данные и прочие внутренние дела. Насколько понимаю отключение символа в MarketWatch не вызывает мгновенного отключения, а просто ставится галочка - "потом при случае корректно отключиться". К тому-же бывают "скрытые в Watch символы" - когда на них есть ордер/позиция и данные нужны, то символ просто скрывается, но не удаляется.
поэтому нагрузка получается зависит не столько от частоты просмотра, сколько от кол-ва символов в работе.
возможно поможет - разнести 100500 инструментов по разным сервисам (сервис исполняется в отдельном потоке, может быть будет лучше в плане отзывчивости). Но это резко усложнит алгоритм управления
Примерно так и думал в этом направлении. Большое спасибо за ответ, хоть теперь понятно в чём проблема. А что значит разделить инструменты по разным сервисам? В двух словах..
Примерно так и думал в этом направлении. Большое спасибо за ответ, хоть теперь понятно в чём проблема. А что значит разделить инструменты по разным сервисам? В двух словах..
Написать "Сервис" :-) Это что-то наподобии скрипта, но работает без привязки к чарту. Исполняется в отдельном потоке, но имеет свои неудобства, например как и в скриптах нет отдельных входов OnTimer OnTick и прочих. Зато в отдельном потоке и там можно гонять тяжёлые/длительные/массовые рассчёты.
Каждый экземпляр сервиса будет отрабатывать свою группу символов, и как-то (сами решите как) информировать советник о том что он там нарыл, а советник уже торгует по нарытому.
Если работаете с большим количеством символов (сотни и тысячи), то ставьте 32-64 гб памяти.
Ясно, спасибо за информацию. Но я думаю ещё и продавать советник как доделаю, не хочу покупателям компы и VPS-ы грузить :) Поэтому пошёл по пути фильтрации инструментов и отсеивания некачественных по ряду параметров чтоб уже не скармливать Метатрейдеру 100500 инструментов))
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования