Особенности языка mql5, тонкости и приёмы работы - страница 132
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
оберните в класс рассчет индикатора - буфера привяжите к полям класса
Увы...
Ничего не получилось. Даже если буфер находится внутри класса и хэндл, все равно в озу остаються все созданные внутренние промежуточные буферы вычисления даже после удаления экземпляра класса.
Память вычищается только сменой ТФ.
Явно не хватает команды очистки памяти по хэндлу. Например MemErase( int handle);
Увы...
Ничего не получилось. Даже если буфер находится внутри класса и хэндл, все равно в озу остаються все созданные внутренние промежуточные буферы вычисления даже после удаления экземпляра класса.
Память вычищается только сменой ТФ.
Явно не хватает команды очистки памяти по хэндлу. Например MemErase( int handle);
1. комбинации указатель на обьект и экземпляр обекта (я про * ) - проверяли?
2. деструктор писали и удаляли в нем размер массива? (ArrayFree() и ArrayResize(arr,0,0) )
Увы...
Ничего не получилось. Даже если буфер находится внутри класса и хэндл, все равно в озу остаються все созданные внутренние промежуточные буферы вычисления даже после удаления экземпляра класса.
Память вычищается только сменой ТФ.
Явно не хватает команды очистки памяти по хэндлу. Например MemErase( int handle);
А IndicatorRelease не применяли?
Но всё-же я думаю это пустая затея. Вот скажите зачем это может понадобиться? Мультики рисовать? А для торговли? Усреднять Moving Average пока не вытянется в прямую линию?
Увы...
Ничего не получилось. Даже если буфер находится внутри класса и хэндл, все равно в озу остаються все созданные внутренние промежуточные буферы вычисления даже после удаления экземпляра класса.
Память вычищается только сменой ТФ.
Явно не хватает команды очистки памяти по хэндлу. Например MemErase( int handle);
Терминал хранит кэши какое-то время, даже если программа их не использует.
Можно засечь, через сколько времени освобождается память.
А IndicatorRelease не применяли?
Но всё-же я думаю это пустая затея. Вот скажите зачем это может понадобиться? Мультики рисовать? А для торговли? Усреднять Moving Average пока не вытянется в прямую линию?
Да, спасибо, Алексей. Забыл я про эту функцию. Видел ее раньше, но никогда ее не использовал.
Попробовал. Что-то происходит не так. Удалять то она удаляет, но после ее удаления все стопориться.
Просто добавил одну строку кода в функцию DrawSetup() перед расчетом индикатора со следующими параметрами.
Индикатор попросту перестает работать и понять причину не могу пока.
Но всё-же я думаю это пустая затея. Вот скажите зачем это может понадобиться? Мультики рисовать? А для торговли? Усреднять Moving Average пока не вытянется в прямую линию?
Абсолютно с Вами согласен. Это просто бесполезная игрушка.
Терминал хранит кэши какое-то время, даже если программа их не использует.
Можно засечь, через сколько времени освобождается память.
Ждал 6 минут - так и не почистилось ничего.
1. комбинации указатель на обьект и экземпляр обекта (я про * ) - проверяли?
2. деструктор писали и удаляли в нем размер массива? (ArrayFree() и ArrayResize(arr,0,0) )
1. Да, делал через указатель, new и delete.
2. Так нет массива никакого. Т.е. есть внутренние массивы, но их имён то нет. Только номер хэндла.
Причем на каждой итерации цикла for значение переменной handle увеличивается на единицу. Т.е. внутренние буферы размножаются и все предыдущие участвуют в расчете следующего.
По логике нужно делать IndicatorRelease(handle); перед следующим полностью новым расчетом индикатора, но я уже писал выше, что это убивает индикатор. Почему - не ясно.
Да, спасибо, Алексей. Забыл я про эту функцию. Видел ее раньше, но никогда ее не использовал.
Попробовал. Что-то происходит не так. Удалять то она удаляет, но после ее удаления все стопориться.
Просто добавил одну строку кода в функцию DrawSetup() перед расчетом индикатора со следующими параметрами.
Индикатор попросту перестает работать и понять причину не могу пока.
Абсолютно с Вами согласен. Это просто бесполезная игрушка.
Я немного не так думал. Мне кажется надо сделать пару хендлов, по типу перебора графиков
И получив новый хендл использованный можно выбросить как и использованный ...
Я немного не так думал. Мне кажется надо сделать пару хендлов, по типу перебора графиков
И получив новый хендл использованный можно выбросить как и использованный ...
не прокатит
не прокатит