IndicatorRelease() для тестера стратегий. Как удалить уже ненужный хэндл индикатора в тестере стратегий? - страница 2
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Тогда выход один: в режиме тестера делать реальные параметры индикатора глобальными переменными, самому отслеживать изменение их и пересчитывать индикатор используя один и тот же хэндл/экземпляр.
С работой индикаторов все в порядке. Создается все, что нужно. Но вот ненужные уже хэндлы не удаляются. Следуя примерам из хэлпа - хэндлы типа int. И вот как обнулить я и спрашиваю. Пробовал: IndicatorRelese(), Handle = 0, Handle = NULL, Handle = INVALID_HANDLE. Забивает память со временем.
Что-то мне не вериться даже. Возможно, где-то недоглядели.. Ведь хэндл хранится в переменной примитивного типа. Обнулить переменную элементарно.. Завтра, если будет время, сам попробую это сделать.
Я сделал иначе. Я создал макросом .scv файлы хранящиеся на жестком диске со всеми вариантами значений индикатора в разумном диапазоне его параметров. По мере необходимости загружает в массив значения и использует, а после стирает массив и заполняет его новыми значениями.
Что-то мне не вериться даже. Возможно, где-то недоглядели.. Ведь хэндл хранится в переменной примитивного типа. Обнулить переменную элементарно.. Завтра, если будет время, сам попробую это сделать.
Вы правда думаете, что весь массив данных, рассчитанный индикатором, хранится в переменной примитивного типа? Очевидно же, что int - это индекс, по которому советник обращается к хэндлу индикатора. Обнуление индекса не приведет к обнулению самого хэндла. Для этого и нужен IndicatorRelease(). Но в индикаторах он не работает.
Вы правда думаете, что весь массив данных, рассчитанный индикатором, хранится в переменной примитивного типа? Очевидно же, что int - это индекс, по которому советник обращается к хэндлу индикатора. Обнуление индекса не приведет к обнулению самого хэндла. Для этого и нужен IndicatorRelease(). Но в индикаторах он не работает.
Как в MT устроено я не скажу, но обычно, в любом другом языке, например, Java любой хэндл это ссылка т.е. указатель. Так вот этот указатель можно обнулить. Как здесь это работает нужно спрашивать у саппорта. Вопрос даже как проверить, стёрся он или нет. Ведь нет возможности пробежать по хэндлам. Разве что запомнить их и потом после удаления проверить, если ли такой в массиве. Но это нужно проверять. А у меня щяс голова другим вопросом озадачена.