Конкретная и актуальная проблема с внешними параметрами индикатора

 
метаедитор 4.182

Потребовалось передать параметры инициализации из эксперта в сопутствующий индикатор. Проблема решена с использованием глобальных переменных, одна из которых является флагом изменения параметров.

Полностью настроить индикатор из эксперта все-же не удалось :(

Такие вещи, как цвета, уровни, границы задаются статически во время компиляции посредством директив #property.

В то же время эти же самые параметры можно изменить в диалоге параметров индикаторов ctrl-I -> Edit. При этом перекомпиляция не производится.

1. Какой смысл задавать некоторые параметры препроцессором, если их можно изменять динамически?
2. Зачем вообще таскать за экспертом индикатор данных, на которых этот эксперт работает? Почему нельзя использовать функции пользовательских индикаторов в эксперте напрямую для отображения его текущих параметров? Приходится просчитывать эти данные дважды и отслеживать изменения в двух исходниках параллельно.
 
Не понял вопроса. Пример плиз.
 
1.
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_level1 30
#property indicator_level2 60
#property indicator_color1 Red
#property indicator_color2 Yellow



Параметры выше зависят от чарта, на котором индикатор работает и от параметров эксперта на этом чарте. Но задать параметры программно возможности нет, хотя вручную динамически их менять можно из диалога настроек индикатора.
Все, что нужно, это пара - тройка функций типа

bool IndicatorSetBoundaries(int min, int max);
bool IndicatorSetLevel(int num, double val, int color);
bool IndicatorSetColor(int num, int color);



2.
Чтобы показать текущие значения функций, на которых работает эксперт, приходится запускать индикатор с продублированным кодом этих самых функций и механизмом передачи параметров через глобальные переменные (с проблемами выше).
Проще было бы, если можно было бы использовать Indicator* и SetIndex* функции в самом эксперте. В качестве примера можно использовать любой поставляемый индикатор. Скопируйте его из indicators в experts, и попробуйте скомпилировать.

 
1. Нельзя средствами советника вешать или снимать кастомный или стандартный индикатор на чарт/с чарта. Потому и функции такие не нужны (как юзер, я не могу представить такой необходимости)
2. Опять таки, эксперт и индикатор - две независимые сущности, эксперт наброшенный на чарт может приводить к жизни индикаторы, но только на виртуальном графике , к чарту, наблюдаемому пользователем, эти вызываемые из эксперта индикаторы никакого отношения не имеют.
 
Имеет место непонимание.
1. Советник не вешает (какое, кстати, слово нехорошее. Это как в театре про работающий над сценой прожектор сказать "горит";) и не снимает индикатор. Индикатор уже работает. Все, что нужно, это время от времени поменять уровни и цвета. Программно. Как юзер, я не то, что представляю такую необходимость, я ее испытываю. Поэтому и функции такие нужны.
2. Я понимаю, что их сущности независимы. Я не понимаю, почему. Индикаторы, присутствующие на виртуальном графике появляются на реальном, открытом из тестера (ctrl-R -> open chart). То есть, опять же, в принципе, проблема решаемая. И что значит "никакого отношения не имеют"?. Я, ведь, как раз и говорю, что приходится запускать отдельно индикатор, что бы показать, что происходит в эксперте. Что весьма неудобно по многим причинам, некоторые из которых перечислены выше.
 
"Жаль , что Вас не было с нами последние полгода" :)
А если серьезно - влом объяснять, и думаю не только мне.
Так что без обид.
 
Ну да, виноват, нашел-таки много интересного по второму пункту. Второй вопрос был, как бы, вдогонку, поэтому в форуме и не посмотрел.
Мои извенения (к тем, кому "влом", они, впрочем, не относятся).

Все же первый вопрос остается актуальным. Вот, например.

Когда я подправляю параметры в эксперте, он передает их в индикатор через глобальные переменные при инициализации, проблем с этим нет. Проблема в том, что таким образом нельзя передать все настройки (см. выше, а то я уже и так повторяюсь).

Господа девелоперы, возможно ли реализовать эту функциональность? Вроде бы, не должно быть слишком сложно.