Новая версия платформы MetaTrader 5 build 1860: Функции для работы с барами в MQL5 и улучшения в тестере стратегий - страница 9

 
Stanislav Dray:

а по существу можете что-то добавить? 

по существу - все хендлы запускаются в онините, дальше в онтике (или онтаймере) проверяем расчет всех периодов (индикаторов).
И если всё запустилось, только тогда идем дальше (рисуем дашбоард).

У меня есть такой мт5 дашбоард в продуктах.

пс. IndicatorRelease делать только в деините (или когда индикатор больше не нужен).

 
Andy:
Ренат, а скиньте мне пожалуйста в личку, что настроить - я им передам.

Ответ был точный.

К тому же, у брокеров есть свой сервисдеск.

 
Taras Slobodyanik:

по существу - все хендлы запускаются в онините, дальше в онтике (или онтаймере) проверяем расчет всех периодов (индикаторов).
И если всё запустилось, только тогда идем дальше (рисуем дашбоард).

У меня есть такой мт5 дашбоард в продуктах.

пс. IndicatorRelease делать только в деините (или когда индикатор больше не нужен).

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

В моём понимании дашборд-это обработка всех символов хотя-бы форекс группы (~60 штук). Попробуйте добавить 60 символов в свой индикатор и посмотрите как будут обновлятся данные.

А насчёт хендлов в онинете я уже писал,вы невнимательны. У меня памяти даже близко нехватает. А нужно создать ~  60*9=540 хендлов (при 20 терминал валится с ошибкой на нехватку памяти) и при этом ещё и отслеживать сигнальные патерны и чарт-ивенты.

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

З.Ы. Пожалуйста отпишитесь об эксперементах с 50-60 символами.

 
Stanislav Dray:

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

В моём понимании дашборд-это обработка всех символов хотя-бы форекс группы (~60 штук). Попробуйте добавить 60 символов в свой индикатор и посмотрите как будут обновлятся данные.

А насчёт хендлов в онинете я уже писал,вы невнимательны. У меня памяти даже близко нехватает. А нужно создать ~  60*9=540 хендлов (при 20 терминал валится с ошибкой на нехватку памяти) и при этом ещё и отслеживать сигнальные патерны и чарт-ивенты.

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

З.Ы. Пожалуйста отпишитесь об эксперементах с 50-60 символами.

Нет проблем)

60 символов
загрузка ЦП 16-5%

  • периоды M15-D1 - память 207 МБ
  • периоды М5-W1 - 565 МБ
  • периоды М1-W1 - 1139 МБ

при добавлении периода MN1 индикатор продолжает работать, но начинается загрузка всех минуток для MN1, загрузка процессора 80-60%

1


пс. хотя позже, занятая память освободилась с 1 ГБ до 400 МБ.

ппс. да, обновление всех ячеек раз в полсекунды. Таймер 500 мс.

 
Taras Slobodyanik:

Нет проблем)


Хмм.Ок, только странно что такая разница между индикатором и экспертом. Если не трудно запустите мой эксперт,который я выложил страничку назад,посмотреть какое будет время исполнения.

P.S. Спасибо

 
Stanislav Dray:

Хмм.Ок, только странно что такая разница между индикатором и экспертом. 

мой индикатор работает по таймеру, так что нет отличий от эксперта.

Если не трудно запустите мой эксперт,который я выложил страничку назад,посмотреть какое будет время исполнения.

У вас неправильная логика программы - не вижу смысла проверять

 
Taras Slobodyanik:

мой индикатор работает по таймеру, так что нет отличий от эксперта.

У вас неправильная логика программы - не вижу смысла проверять

Где вы там увидели неправильную логику? Вы думаете загружать в память все ресурсы,хендлы и т.д. это правильная логика? Вы то свой чудо-индикатор на 32-битной машине пробовали? Я практически уверен что он успешно повесит терминал и весь ПК.

На 32-йке терминал я так понял получает доступ к половине памяти, а на 32-йке это максимум 2047 мб.,почему-то файлы подкачки неучитываются.

Вот тест на 32-йке

Windows 7 Service Pack 1 (build 7601), IE 11, AMD Athlon 7750 Dual-Core Processor, Memory: 1951 / 3583 Mb, Disk: 14 / 365 Gb

MEMORY_TOTAL:2047 MEMORY_AVAILABLE:1664 MEMORY_USED:383

MEMORY_TOTAL:2047 MEMORY_AVAILABLE:68 MEMORY_USED:1981

программа прекратила создавать хедлы на 15-ом символе,успев создать 15*9=135 хендлов и успешно повесила терминал и ПК минут на 10.

а вот второй тест с созданием хендлов в онинит на 64-битной машине

Terminal Windows 10 (build 16299) x64, IE 11, UAC, Intel Core i7-7500U  @ 2.70GHz, Memory: 5475 / 8089 Mb, Disk: 16 / 116 Gb, GMT+2

47 pairs Load finished:  MEMORY_TOTAL:16178 MEMORY_AVAILABLE:13410 MEMORY_USED:2768

 потратив около 2-х минут на создание хендлов и первый проход по ним панелька запустилась и успешно работает на 47 парах

Вывод:

использовать в 32-ой системе способ предварительного создания хендлов(в mql5) для дашбордов нельзя,по крайней мере жёстко ограничен их допустимым кол-вом, а создавать на лету нет смысла, так как первый доступ к данным очень долгий.

 
Stanislav Dray:

Вывод:

вывод тот же)

(с) Вы не любите кошек? Да вы просто не умеете их готовить! 

пс. мои запуски, все были на 32-ух битке ХР SP3 с 3 ГБ ОЗУ (билд 1736)
ппс. на 7-ке, билд МТ5 1861, мой чудо-индикатор, также работает без проблем, памяти жрёт чуть меньше.
 
какой
Taras Slobodyanik:

вывод тот же)

(с) Вы не любите кошек? Да вы просто не умеете их готовить! 

пс. мои запуски, все были на 32-ух битке ХР SP3 с 3 ГБ ОЗУ (билд 1736)
ппс. на 7-ке, билд МТ5 1861, мой чудо-индикатор, также работает без проблем, памяти жрёт чуть меньше.

какой-то лютый звиздец...у меня уже нервы сдают. Сегодня опять запустил,индикатор без проблем стартанул и загрузил все хендлы

61 pairs Load finished:  MEMORY_TOTAL:2047 MEMORY_AVAILABLE:164 MEMORY_USED:1881

но когда начал копировать данные,снова получаю привет

Какое-то старнное поведение, вчера явно оперативки нехватало даже на загрузку 15 символов, а сегодня все хендлы без проблем загрузились, но опять чегото нехватает.

Так чего спрашивается? на диске более 40 гб свободной памяти.Так какой памяти нехватает и почему такое поведение? Может кто из начальства прокоментирует?


ошибка


 
Лютый звиздец - это работать на Windows XP и требовать повышенной ресурсоемкости.

Советы:
 - использовать только 64 битные версии
 - использовать как можно больше памяти, лучше от 16 гб при массовом использовании индикаторов и глубокой истории
 - ограничивать глубину истории на графике, например 10000 баров
 - использовать MQL5 только в 64 битах, так как это в разы быстрее работает чем в 32 битах

К сентябрю мы полностью заморозим 32 битные версии МТ5 и перестанем их обновлять. На текущем уровне решаемых задач, 32 битные версии программ категорически неприемлемы и тормозят развитие платформы из-за обеспечения совместимости.