Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 36

 
Slava :

Автор чрезвычайно активно рисует линии разными цветами.

Линий очень много, цветов очень много, не хватает оперативной памяти, чтобы создать GDI CPen. Система 32-битная?

32-битный и 64-битный, то же самое. Не всегда бывает, трудно воспроизвести.

Форум по торговле, автоматизированные торговые системы и тестирование торговых стратегий

Кто-нибудь знает, что означает «ошибка создания пера [87]»?

Ex Ovo Omnia , 2018.11.20 16:44

Спасибо Вам за информацию.

  • В этом конкретном случае у меня есть группа из 17 полей редактирования и 6 прямоугольников (никаких других объектов или индикаторов на диаграмме)
  • Цвета используют унифицированный стиль (повторяющиеся шаблоны с одинаковыми цветами), и на самом деле эта индикаторная панель была самой простой.
  • В диспетчере задач терминал отображает с использованием 38 МБ (8 ГБ ОЗУ).
  • Я попробовал 32-битную систему и ту же ошибку.

Я не ожидаю, что 23 пользовательских объекта могут вызвать проблему с ресурсами, даже если бы они объединили все цвета попугая. Более того, это происходит не всегда - утром он не сообщил об ошибке, а теперь продолжает показывать их независимо от того, перезапускаю ли я терминал.

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


 
Прокомментируйте пожалуйста пост https://www.mql5.com/ru/forum/285631/page35#comment_9431199
 
Alain Verleyen:

32-битный и 64-битный, то же самое. Не всегда бывает, трудно воспроизвести.


Нужен пример для воспроизведения
 
fxsaber:

В пустой кастомный символ 22 млн тиков записываются полторы минуты. Не могу даже представить, что можно столько времени делать.

Видимо, какие-то бажные циклы внутри на O(n^2) или что-то вроде. Есть рекомендации, как ускорить?

Можно подробности? Как добавляются тики? Сразу массивом размером в 22 млн. элементов или пачками?

 
Denis Kirichenko:

Можно подробности? Как добавляются тики? Сразу массивом размером в 22 млн. элементов или пачками?

За один заход

CustomTicksReplace(this.Name, 0, LONG_MAX, Ticks);
 
fxsaber:

За один заход

Я побоялся так делать. Сделал пачками, по 1 млн. Но кажется, особого выигрыша это не даёт. Точный ответ только можно получить при сравнительном тесте... чуть позже сделаю...

А почему CustomTicksReplace(), а не CustomTicksAdd() ?

 
Denis Kirichenko:

Я побоялся так делать. Сделал пачками, по 1 млн. Но кажется, особого выигрыша это не даёт. Точный ответ только можно получить при сравнительном тесте... чуть позже сделаю...

А почему CustomTicksReplace(), а не CustomTicksAdd() ?

Потому что вторая - это проброс тиков с генерацией соответствующих NewTick-событий.

 
fxsaber:

Потому что вторая - это проброс тиков с генерацией соответствующих NewTick-событий.

Понял. Но мне это непринципиально. Я просто с помощью скрипта создаю базу тиков для пользовательского инструмента, которая будет основой для базы котировок. А потом на основе этой базы запускаю другой робот.

 
Denis Kirichenko:

Понял. Но мне это непринципиально. Я просто с помощью скрипта создаю базу тиков для пользовательского инструмента, которая будет основой для базы котировок. А потом на основе этой базы запускаю другой робот.

Кастомные пока использую только для Тестера.

 
fxsaber:

Кастомные пока использую только для Тестера.

Аналогично. Просто создание символа и торговля по нему в Тестере у меня разнесены на отдельные процедуры.