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

 

Добрый день.

Мой советник с периодичностью в сутки выбирает новые параметры индикатора, перезаписывает в тот же хэндл. Как в тестере стратегий заставить его забыть предыдущий хэндл? А то, количество используемой оперативной памяти растет до предела.

Уже спасибо.

 
Justinas Shimkus:

Добрый день.

Мой советник с периодичностью в сутки выбирает новые параметры индикатора, перезаписывает в тот же хэндл. Как в тестере стратегий заставить его забыть предыдущий хэндл? А то, количество используемой оперативной памяти растет до предела.

Уже спасибо.

Зачем это вообще нужно? Если хэндл получен, значит он нужен. Если не нужен, не создавай..

 
Viktar Dzemikhau:

Зачем это вообще нужно? Если хэндл получен, значит он нужен. Если не нужен, не создавай..

У меня парметры индикатора на следующий день зависят от поведения рынка в предыдущий. Т.е. каждый день эти парметры разные.
 
Я столкнулся с той же проблемой, но решение так и не нашел. IndicatorRelease() не работает. Пришлось переносить код индикатора в советник.
 
Sergey Savinkin:
Я столкнулся с той же проблемой, но решение так и не нашел. IndicatorRelease() не работает. Пришлось переносить код индикатора в советник.
Похоже, мне тоже придется.
 
Пишите в сервис-деск.
 
Justinas Shimkus:
У меня парметры индикатора на следующий день зависят от поведения рынка в предыдущий. Т.е. каждый день эти парметры разные.

Если бы я увидел задачу, я бы думаю подсказал бы что-то. А вообще, здесь всё достаточно элементарно.  Если меняется время, создаётся хэндл индюка. Это можно сделать легко. Т.е. каждый новый день, создаётся хэндл.

В индикатор можно передавать input-переменных в виде структуры. Соответственно, когда создаёшь при наступлении нового дня хэндл, создаёшь его с параметрами, которые нужны.. Сложность то в чём?

Я думал о подобной задаче тоже. Но у меня была задумка написать класс для работы с определённым типом индикатора. Он довольно-таки сложный. Писал дня з. Так вот. Мне нужно было сделать так, что бы тот класс мог работать с некоторыми подожими типами индюков с разными параметрами и именами соот-но. Логика примерно такая же. Сложного ничего нет.

Работать то всё будет чётко, но есть одно НО. Хэндлы будут собираться. И за неделю их будет уже 5 (рабочих дней же 5). Хотя, это тоже не проблема. По идее, хэндл это переменная типа long. Его всегда можно обнулить. Опять-таки всё просто))

 
Justinas Shimkus:
Похоже, мне тоже придется.

Просто идея - что будет если вызвать ChartSetSymbolPeriod с теми же символом/периодом в тестере после смены параметров индикатора?

 
Viktar Dzemikhau:

Если бы я увидел задачу, я бы думаю подсказал бы что-то. А вообще, здесь всё достаточно элементарно.  Если меняется время, создаётся хэндл индюка. Это можно сделать легко. Т.е. каждый новый день, создаётся хэндл.

В индикатор можно передавать input-переменных в виде структуры. Соответственно, когда создаёшь при наступлении нового дня хэндл, создаёшь его с параметрами, которые нужны.. Сложность то в чём?

Я думал о подобной задаче тоже. Но у меня была задумка написать класс для работы с определённым типом индикатора. Он довольно-таки сложный. Писал дня з. Так вот. Мне нужно было сделать так, что бы тот класс мог работать с некоторыми подожими типами индюков с разными параметрами и именами соот-но. Логика примерно такая же. Сложного ничего нет.

Работать то всё будет чётко, но есть одно НО. Хэндлы будут собираться. И за неделю их будет уже 5 (рабочих дней же 5). Хотя, это тоже не проблема. По идее, хэндл это переменная типа long. Его всегда можно обнулить. Опять-таки всё просто))

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

Просто идея - что будет если вызвать ChartSetSymbolPeriod с теми же символом/периодом в тестере после смены параметров индикатора?

Увы, все также до предела растет потребление памяти. К тому же, кажется, упало быстродействие.
 

Justinas Shimkus:

Увы, все также до предела растет потребление памяти. К тому же, кажется, упало быстродействие.

Тогда выход один: в режиме тестера делать реальные параметры индикатора глобальными переменными, самому отслеживать изменение их и пересчитывать индикатор используя один и тот же хэндл/экземпляр.
 

А в сервис-деск писали? В общем-то в справке черным по белому написано:

При работе в тестере стратегий функция IndicatorRelease() не выполняется.

Но зачем так сделано? Было бы интересно услышать аргументацию MQ.

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