Насколько мне известно, на выгрузку библиотек пользователь влияния не имеет, все в руках терминала. Можно попробывать через dll, но не пробывал.
P.S. говори перекладывании кода в dll и последующей загрузки этой dll из другой dll.
Добрый день. У меня возник вопрос, может он глупый конечно, но задам.
Допустим, есть n-библиотек, по мере необходимости они импортируются #import "name_file.ex4" в советника на МТ4 в процессе его работы.
#import "name_file.ex4" подразумевает, что библиотека грузится динамически, при обращении к ней.
Замечено, что библиотеки "висят в памяти работающего советника", до тех пор, пока он не откреплен от окна.
Вопрос, как выгружать библиотеки из "памяти советника", когда они не нужны, в процессе работы советника?
Т.е. советник в процессе своей работы и при возникшей у него необходимости загрузил библиотеку, сделал свое дело, выгрузил библиотеку, т.к. она ему больше не нужна на текущий момент времени, если потребовалось, загрузил новую и т.п.
С уважением, Дмитрий.
попробуйте через вызов, например, WinAPI, запускать из советника батник, который будет перекомпиливать советника (в результете чего будет срабатывать его деинит/инит)
если Ваша библиотека импортируется у действительно только "по-необходимости", то после рекомпила она реально может и не сразу подгрузится в советник
попробуйте через вызов, например, WinAPI, запускать из советника батник, который будет перекомпиливать советника (в результете чего будет срабатывать его деинит/инит)
если Ваша библиотека импортируется у действительно только "по-необходимости", то после рекомпила она реально может и не сразу подгрузится в советник
Согласен, что если перезагрузить ("перекомпеливать") советник, сработает deinit, и ВСЕ загруженные библиотеки "сбросятся из памяти" и конечно такое возможно, что библиотеки использовавшиеся минуту назад, могут и не "загрузиться в память", а только через время, при условии, что надобность в той или иной библиотеке произойдет. Но, к сожалению, это не есть гуд для данной задачи - передергивать советник компиляцией, т.к. в этот момент могут быть использованы другие библиотеки, процесс не прерывный.
Согласен, что если перезагрузить ("перекомпеливать") советник, сработает deinit, и ВСЕ загруженные библиотеки "сбросятся из памяти" и конечно такое возможно, что библиотеки использовавшиеся минуту назад, могут и не "загрузиться в память", а только через время, при условии, что надобность в той или иной библиотеке произойдет. Но, к сожалению, это не есть гуд для данной задачи - передергивать советник компиляцией, т.к. в этот момент могут быть использованы другие библиотеки, процесс не прерывный.
С этим механизмом соглашусь, так с пользовательскими библиотеками MQL и работает. Постараюсь, иначе поставить свой вопрос на примере:
Предположим, есть модуль caller.ex4, он вызывает (#import "name_file.ex4") по-мере необходимости функции из библиотек: lib1.ex4, lib2.ex4, ..., lib(n).ex4. Допустим, модуль вызвал сначала lib1.ex4, потом ему потребовалась еще lib8.ex4, он тоже ее вызвал, потом потребовалось еще и он вызвал lib3.ex4 и т.д. По ходу работы модуля надобность в библиотеке lib1.ex4 пропала и он (модуль) должен ее "удалить из памяти".
Этот пример, можно переложить на читателя стоящего перед полкой с книгами в библиотеке. У читателя есть список всех книг, которые стоят на полке, а также он знает, "как стоят книги" на полке. И он по своему списку, по какому то алгоритму берет с полки одну книгу, потом еще одну книгу, потом еще две и тут же поставил (вернул) одну книгу на полку, т.к. то ли в руках уже не помещалось, то ли надобность уже отпала, а в конце своей эпопеи, все книги вернул на полку.
Вопрос, как "удалять не нужные библиотеки из памяти" при этом модуль продолжает работать и пользоваться другими библиотеками?
да бросьте Вы)) то что нужно подгрузится при обращении
Предложенный Вами метод точно рабочий, но жесткий, хотелось бы решить эту задачу иначе. )

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день. У меня возник вопрос, может он глупый конечно, но задам.
Допустим, есть n-библиотек, по мере необходимости они импортируются #import "name_file.ex4" в советника на МТ4 в процессе его работы.
#import "name_file.ex4" подразумевает, что библиотека грузится динамически, при обращении к ней.
Замечено, что библиотеки "висят в памяти работающего советника", до тех пор, пока он не откреплен от окна.
Вопрос, как выгружать библиотеки из "памяти советника", когда они не нужны, в процессе работы советника?
Т.е. советник в процессе своей работы и при возникшей у него необходимости загрузил библиотеку, сделал свое дело, выгрузил библиотеку, т.к. она ему больше не нужна на текущий момент времени, если потребовалось, загрузил новую и т.п.
С уважением, Дмитрий.