Код EA с инициализацией только 1 хендла индикатора iMA:
Количество памяти, которое МТ5 занимает в ОЗУ = 176 608 К:
Количество памяти, которое МТ5 занимает в ОЗУ после установки ЕА (см. код выше) = 618 596 К:
А почему так много то? Хотел бы в одном ЕА использовать 10, в идеале 30 индикаторов (анализ других торговых символов), но так оперативки не хватает. Кто-нибудь знает как можно уменьшить прожорливость хендлов индикаторов?
Ну вот же идет почти такое же обсуждение: https://www.mql5.com/ru/forum/189572
- www.mql5.com
1) Статья интересная, автору респект, кое-что возьму на заметку.
2) В свойствах МТ5 в "Charts", в "Max bars in chart" было "Unlimited". Поменял на 1000, хотя после ОК и проверки данного значения МТ5 поставил 5000 (наверное это минимальное допустимое значение). В любом случае с 5000 баров и после установки тестового ЕА такой хендл съел только около 10 000 К, а не 450 000 К, как до этого. Наверное всё-таки получится сделать грааль :)
Благодарю за помощь.
1) Статья интересная, автору респект, кое-что возьму на заметку.
2) В свойствах МТ5 в "Charts", в "Max bars in chart" было "Unlimited". Поменял на 1000, хотя после ОК и проверки данного значения МТ5 поставил 5000 (наверное это минимальное допустимое значение). В любом случае с 5000 баров и после установки тестового ЕА такой хендл съел только около 10 000 К, а не 450 000 К, как до этого. Наверное всё-таки получится сделать грааль :)
Круто что помогло. С другой стороны не круто, что эта величина задаваемая вручную пользователем, влияет на объем памяти при работе экспертов и индикаторов.
Круто что помогло. С другой стороны не круто, что эта величина задаваемая вручную пользователем, влияет на объем памяти при работе экспертов и индикаторов.
Благодарю за помощь.
1) Статья интересная, автору респект, кое-что возьму на заметку.
2) В свойствах МТ5 в "Charts", в "Max bars in chart" было "Unlimited". Поменял на 1000, хотя после ОК и проверки данного значения МТ5 поставил 5000 (наверное это минимальное допустимое значение). В любом случае с 5000 баров и после установки тестового ЕА такой хендл съел только около 10 000 К, а не 450 000 К, как до этого. Наверное всё-таки получится сделать грааль :)
Можно неплохо экономить память задавая в функции количество читаемых баров.
В mql5 можно программно управлять глубиной закачки - т.е. зачитывать ровно столько баров сколько необходимо , независимо от того сколько задано баров руками в настройках. Кстати держать там unlimited , не совсем хорошо.,смысла нет.
Если не затруднит, могли бы вы дать линки на функции/статьи/темы форума, где можно об этом почитать, я там уже сам разберусь. На счёт unlimited, так это я в тихушку :) на работе программирую и не обратил внимания, что не уменьшил кол-во баров. Дома поставил минимальное кол-во.
Обращение по начальной позиции и количеству требуемых элементов int CopyHigh( string symbol_name, // имя символа ENUM_TIMEFRAMES timeframe, // период int start_pos, // откуда начнем int count, // сколько копируем double high_array[] // массив для копирования максимальных цен ); Обращение по начальной дате и количеству требуемых элементов int CopyHigh( string symbol_name, // имя символа ENUM_TIMEFRAMES timeframe, // период datetime start_time, // с какой даты int count, // сколько копируем double high_array[] // массив для копирования максимальных цен ); Обращение по начальной и конечной датам требуемого интервала времени int CopyHigh( string symbol_name, // имя символа ENUM_TIMEFRAMES timeframe, // период datetime start_time, // с какой даты datetime stop_time, // по какую дату double high_array[] // массив для копирования максимальных цен );
Имел ввиду вот эти свойства различных функций , в 4-ке нельзя было качнуть в память ограниченное количество баров, в MQL5 это возможно , сильно экономится память и очень хорошо с быстродействием.
Имел ввиду вот эти свойства различных функций , в 4-ке нельзя было качнуть в память ограниченное количество баров, в MQL5 это возможно , сильно экономится память и очень хорошо с быстродействием.
Это не работает для индикаторов. При создании хендла автоматом ресайзятся все буферы под кол-во баров в окне, и это невозможно изменить.
В четверке такого не было, память выделялась под рассчитываемую часть.
В четверке такого не было, память выделялась под рассчитываемую часть.
В четверке аналогично буфера индикаторов под всю историю чарта выделялись.
Кроме того, затраты памяти (особенно в экспертах) в четверке были чрезмерными из-за множества прозрачно создаваемых копий данных. Ее спасало только то, что данных обычно было мало.
С таким подходом нельзя было переходить к системе, которая должна оперировать почти бесконечными историческими данными. Поэтому пятерку и пришлось написать с нуля. Получилось очень эффективно.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Код EA с инициализацией только 1 хендла индикатора iMA:
Количество памяти, которое МТ5 занимает в ОЗУ = 176 608 К:
Количество памяти, которое МТ5 занимает в ОЗУ после установки ЕА (см. код выше) = 618 596 К:
А почему так много то? Хотел бы в одном ЕА использовать 10, в идеале 30 индикаторов (анализ других торговых символов), но так оперативки не хватает. Кто-нибудь знает как можно уменьшить прожорливость хендлов индикаторов?