IndicatorRelease() для тестера стратегий. Как удалить уже ненужный хэндл индикатора в тестере стратегий? - страница 2

 
Stanislav Korotky:
Тогда выход один: в режиме тестера делать реальные параметры индикатора глобальными переменными, самому отслеживать изменение их и пересчитывать индикатор используя один и тот же хэндл/экземпляр.
Я сделал иначе. Я создал макросом .scv файлы хранящиеся на жестком диске со всеми вариантами значений индикатора в разумном диапазоне его параметров. По мере необходимости загружает в массив значения и использует, а после стирает массив и заполняет его новыми значениями.
 
Justinas Shimkus:
С работой индикаторов все в порядке. Создается все, что нужно. Но вот ненужные уже хэндлы не удаляются. Следуя примерам из хэлпа - хэндлы типа int. И вот как обнулить я и спрашиваю. Пробовал: IndicatorRelese(), Handle = 0, Handle = NULL, Handle = INVALID_HANDLE. Забивает память со временем.

Что-то мне не вериться даже. Возможно, где-то недоглядели.. Ведь хэндл хранится в переменной примитивного типа. Обнулить переменную элементарно.. Завтра, если будет время, сам попробую это сделать.

 
Justinas Shimkus:
Я сделал иначе. Я создал макросом .scv файлы хранящиеся на жестком диске со всеми вариантами значений индикатора в разумном диапазоне его параметров. По мере необходимости загружает в массив значения и использует, а после стирает массив и заполняет его новыми значениями.
Если параметры заранее известны всегда не зачем хранить их в файлах. Хотя на вкус и цвет.. Я в файлах лишь допускаю хранить лишь состояние совы. Т.е. данные, которые нужно запомнить промежуточные. А всё остальное не резонно. Тем более, статичные данные. Хотя.. как по мне так вообще индикатор, в который нужно данные перезаписывать это как-то не гибко.
 
Viktar Dzemikhau:

Что-то мне не вериться даже. Возможно, где-то недоглядели.. Ведь хэндл хранится в переменной примитивного типа. Обнулить переменную элементарно.. Завтра, если будет время, сам попробую это сделать.

Вы правда думаете, что весь массив данных, рассчитанный индикатором, хранится в переменной примитивного типа? Очевидно же, что int - это индекс, по которому советник обращается к хэндлу индикатора. Обнуление индекса не приведет к обнулению самого хэндла. Для этого и нужен IndicatorRelease(). Но в индикаторах он не работает.

 
Sergey Savinkin:

Вы правда думаете, что весь массив данных, рассчитанный индикатором, хранится в переменной примитивного типа? Очевидно же, что int - это индекс, по которому советник обращается к хэндлу индикатора. Обнуление индекса не приведет к обнулению самого хэндла. Для этого и нужен IndicatorRelease(). Но в индикаторах он не работает.

Как в MT устроено я не скажу, но обычно, в любом другом языке, например, Java любой хэндл это ссылка т.е. указатель. Так вот этот указатель можно обнулить. Как здесь это работает нужно спрашивать у саппорта. Вопрос даже как проверить, стёрся он или нет. Ведь нет возможности пробежать по хэндлам. Разве что запомнить их и потом после удаления проверить, если ли такой в массиве. Но это нужно проверять. А у меня щяс голова другим вопросом озадачена.

Причина обращения: