Ошибки, баги, вопросы - страница 2558

 
Aleksey Vyazmikin:

Даю информацию по окружению:

- Индикаторов 16, отрисовка не сложная, без канваса, тулбаров, и прочих изысков - палочки/полосочки - скрин прикладываю.

- На чарте нет программ, открываю окно после оптимизатора, это как пример - тормозят и рабочие чарты, но меньше (там меньше индикаторов).

- Нет, эвенты не обрабатываются.

- Выбран режим отображения баров Unlimited, т.е. подкачка вроде как исключена.

- Графических объектов нет, точней я удалил все стрелки и черточки. Остался лейбл один - он из индикатора. Сегодня выходной и это не должно как то мешать - котировок нет.

Выше выложил скрин, в котором видно, что графическая карта не задействована - как то узнать можно, что она задействуется или это нормально, что нагрузка возле нуля, а ядро загружено?


Вот она известная проблема на лицо, работа индикаторов в одном потоке!
Один поток не справляется с нагрузкой!
Нужна многопоточность, сколько раз уже об этом писали.

 

Всё оказалось проще, я сохранил шаблон после оптимизации, открыл новый чарт и загрузил шаблон - не тормозит, а значит тормозит именно тогда, когда чарт вызывается из оптимизатора!

Не обратил внимание, что по умолчанию открылся H1, а тормоза на M1. Встроенные индикаторы по прежнему хорошо работают, а какие то мои тормозят при отрисовке.

Нашел я у себя индикатор, который даже в 1 экземпляре может нагрузить процессор (достаточно колесо мыши покрутить на чарте вперед-назад ) - если требуется для детального разбирательства - могу выслать в личку.
 
Комментарии, не относящиеся к этой теме, были перенесены в "Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам".
 
Renat Fatkhullin:

1) нужно вот здесь урезать осетра с INT_MAX (2 млрд):

это мы поправим со своей стороны тоже

2) всей памятью надо управлять самым жестким образом, тут нет GC

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

4) используйте ООП, он хотя бы даст возможность правильно описывать и контролировать ресурсы

Понятно, спасибо.
Действительно, без INT_MAX не удалось воспроизвести краш. В жизни бы не подумал. Впредь буду аккуратней с использованием крайних значений. Часто их использовал.
Иногда хочется в коде хочется быть дураком, чтобы воспроизвести и проверить защиту от дураков.

 
Комментарии, не относящиеся к этой теме, были перенесены в "Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам".
 

разница в производительности MQ5 против MQL4 фантастическая, но хотелось бы закончить мультиплатформенный код, поэтому возник вопрос:

1. какой профилировщик (MQ5 или MQL4) лучше использовать для оценки оптимизации после  внесения изменения в исходник? 

2. имеет ли смысл все Print() оборачивать в проверку флага if( MQLInfoInteger(MQL_OPTIMIZATION)) или вызовы Print() будут автоматически исключены без потери производительности?

 

Оптимизатор

2019.09.14 20:24:18.638 Core 2  genetic pass (2, 504) tested with error "no memory in OnTick function (cannot get 5376 Kb, used 1943 Mb)" in 0:00:21.536
2019.09.14 20:24:33.884 Core 1  genetic pass (2, 432) tested with error "no memory in OnTick function (cannot get 5088 Kb, used 2130 Mb)" in 0:00:26.018
2019.09.14 20:24:40.079 Core 2  genetic pass (2, 504) tested with error "no memory in OnTick function (cannot get 5376 Kb, used 1943 Mb)" in 0:00:21.439
2019.09.14 20:25:00.011 Core 1  genetic pass (2, 432) tested with error "no memory in OnTick function (cannot get 5088 Kb, used 2130 Mb)" in 0:00:26.125
2019.09.14 20:25:00.024 Core 1  genetic pass (2, 432) tested with error "no memory" in 0:00:00.000
2019.09.14 20:25:00.037 Core 1  genetic pass (2, 432) tested with error "no memory" in 0:00:00.000
2019.09.14 20:25:01.671 Core 2  genetic pass (2, 504) tested with error "no memory in OnTick function (cannot get 5376 Kb, used 1943 Mb)" in 0:00:21.589
2019.09.14 20:25:01.680 Core 1  genetic pass (2, 504) tested with error "no memory" in 0:00:00.000
2019.09.14 20:25:01.693 Core 1  genetic pass (2, 504) tested with error "no memory" in 0:00:00.000
2019.09.14 20:25:10.181 Core 3  genetic pass (2, 432) tested with error "no memory in OnTick function (cannot get 5088 Kb, used 1659 Mb)" in 0:00:10.142
2019.09.14 20:25:10.190 Core 1  genetic pass (2, 432) tested with error "no memory" in 0:00:00.000
2019.09.14 20:25:10.203 Core 1  genetic pass (2, 432) tested with error "no memory" in 0:00:00.000
2019.09.14 20:25:10.215 Core 1  genetic pass (2, 432) tested with error "no memory" in 0:00:00.000
2019.09.14 20:25:10.228 Core 1  genetic pass (2, 432) tested with error "no memory" in 0:00:00.000
2019.09.14 20:25:20.343 Core 3  genetic pass (2, 432) tested with error "no memory in OnTick function (cannot get 5088 Kb, used 1659 Mb)" in 0:00:10.114

Сначала все ядра пахали около часа без ошибок. В советнике никаких массивов нет. Затем полезли такие ошибки.

На машине запущен только один Терминал. 16Гб, 7 ядер задействовано.


ЗЫ Проход отличается от остальных большим количеством трейдов


Сколько съедает история торгов тогда?


ЗЗЫ Проскакивает иногда "no disk space", хотя десятки гигабайтов свободны.

 
Вопрос на засыпку: как в кодобазу положить исходик вместе с графическими ресурсами в формате bmp (которые идут, например, в OBJ_BITMAP_LABEL)? В стандартной библиотеке в папке res только bmp-файлы (т.е. я не в курсе, чтобы ресурсы могли быть png/jpg). Если приложить в зипе, код ведь не скомпилируется при проверке?
 
Stanislav Korotky:
Вопрос на засыпку: как в кодобазу положить исходик вместе с графическими ресурсами в формате bmp (которые идут, например, в OBJ_BITMAP_LABEL)? В стандартной библиотеке в папке res только bmp-файлы (т.е. я не в курсе, чтобы ресурсы могли быть png/jpg). Если приложить в зипе, код ведь не скомпилируется при проверке?
Библиотека для простого и быстрого создания программ для MetaTrader (Часть XX): Создание и хранение ресурсов программы
Библиотека для простого и быстрого создания программ для MetaTrader (Часть XX): Создание и хранение ресурсов программы
  • www.mql5.com
Часто при создании программы, нам требуется использовать звуки и изображения. В языке MQL есть несколько возможностей использования таких данных, и все они связаны с необходимостью загружать файлы из файловой песочницы терминала. Если в конечном результате предполагается скомпилированный файл, то достаточно подключить файл как ресурс и...
 
Artyom Trishkin:

Это каким-то образом должно ответить на вопрос про кодобазу?

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