Ошибки, баги, вопросы - страница 2676
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
МТ5 (build 2347) Почему такой большой overhead при добавлении по одному элементу в массив с помощью ArrayResize, если память для них была заранее зарезервирована?
Прошу рассмотреть возможность улучшения внутреннего алгоритма резервирования с помощью ArrayResize.
Например, для классов можно припустить, что они кроме вызова конструктора выполняют некую "внутреннюю регистрацию в списках".
И в рамках резервирования с помощью ArrayResize, кроме непосредственного выделения памяти, можно попробовать оптимизировать процесс:
- брать данные из соседнего созданного элемента (например указатель на таблицу виртуальных функций);
- заранее выполнять или резервировать место под "внутреннюю регистрацию" классов, которые еще не созданы;
Спасибо за сообщение.
Код ArrayResize имеет защиту от пустого вызова (когда нет изменения количества элементов), поэтому код функции не отрабатывает.
Тогда как реальное изменение количества элементов, заставляет сработать ту или часть функции ArrayResize, в зависимости от массива
Благодаря представленному Вами коду, мне удалось свести сложность одной из частей ArrayResize к нулю, это ускорит работу функции для массивов объектов
Подскажите, как уменьшить потребление памяти Терминалом? При запуске советника запрашиваю несколько миллионов тиков. Делаю на них вычисления и больше они не нужны. Использую только тиковые функции для подгрузки свежих тиков, чтобы не было пропусков.
Терминал из-за этого миллиона тиков потребляет 500 Мб памяти и освобождать не торопится. Точнее, просто не освобождает. Возможно ли как-то принудить Терминал почистить все свои кеши, чтобы минимизировать потребление? Для VPS 0.5 Гб на каждый Терминал - жирно выходит.
Подскажите, как уменьшить потребление памяти Терминалом? При запуске советника запрашиваю несколько миллионов тиков. Делаю на них вычисления и больше они не нужны. Использую только тиковые функции для подгрузки свежих тиков, чтобы не было пропусков.
Терминал из-за этого миллиона тиков потребляет 500 Мб памяти и освобождать не торопится. Точнее, просто не освобождает. Возможно ли как-то принудить Терминал почистить все свои кеши, чтобы минимизировать потребление? Для VPS 0.5 Гб на каждый Терминал - жирно выходит.
ArrayFree
Если в программе необходимо самостоятельно управлять памятью в сложных динамических условиях, то функция ArrayFree() позволит явным образом и немедленно освобождать память, занятую ненужным уже динамическим массивом.
ArrayFree
Освобождаю, конечно. Сам терминал в кеше у себе хранит тики, которые мне не нужны во время работы.
Мне лучше потом на холодную эти тики снова поднять. Нужен механизм "остывания" Терминала.
Здравствуйте, столкнулся с проблемой, что CopyTicks и CopyTicksRange в тестере не могут получить данные у других инструментов.. При добавлении на график, все работает.
Билд 2363 (и на 2361 тож самое было)
Может я ошибку допустил? Прошу помощи, спасибо!
Здравствуйте, столкнулся с проблемой, что CopyTicks и CopyTicksRange в тестере не могут получить данные у других инструментов.. При добавлении на график, все работает.
Билд 2363 (и на 2361 тож самое было)
Может я ошибку допустил? Прошу помощи, спасибо!
CopyTicks не инициирует закачку данных в тестере
Запросите сначала CopyRates нужного инструмента. Хотя бы 1 бар. Тогда произойдёт закачка и генерация тиковой последовательности.
После этого спокойно запрашивайте тики
Спасибо за сообщение.
Благодаря представленному Вами коду, мне удалось свести сложность одной из частей ArrayResize к нулю, это ускорит работу функции для массивов объектовКод ArrayResize имеет защиту от пустого вызова (когда нет изменения количества элементов), поэтому код функции не отрабатывает.
Тогда как реальное изменение количества элементов, заставляет сработать ту или часть функции ArrayResize, в зависимости от массива
Добрый день, спасибо большое.
До этого не использовал оператор new, так как по логике он должен быть медленнее, чем ArrayResize с зарезервированной памятью.
Но полученные результаты впечатлили, оказывается все наоборот - самодельный массив через оператор new быстрее.
МТ5 (build 2363):
CopyTicks не инициирует закачку данных в тестере
Запросите сначала CopyRates нужного инструмента. Хотя бы 1 бар. Тогда произойдёт закачка и генерация тиковой последовательности.
После этого спокойно запрашивайте тики
Спасибо большое, помогло. А в документации этого я не нашел.. Или плохо искал? Не плохо было бы об этом там написать :)
Лучше сделать автоматическую закачку как по CopyRates.
Почистил вчера в профиле список "старых" неактивных агентов
Спустя сутки захожу в профиль и вижу, что в списке агентов восстановлены записи, которые были удалены.
Причем, изменена дата создания и активности агентов