#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, и попробуйте скомпилировать.
2. Опять таки, эксперт и индикатор - две независимые сущности, эксперт наброшенный на чарт может приводить к жизни индикаторы, но только на виртуальном графике , к чарту, наблюдаемому пользователем, эти вызываемые из эксперта индикаторы никакого отношения не имеют.
1. Советник не вешает (какое, кстати, слово нехорошее. Это как в театре про работающий над сценой прожектор сказать "горит";) и не снимает индикатор. Индикатор уже работает. Все, что нужно, это время от времени поменять уровни и цвета. Программно. Как юзер, я не то, что представляю такую необходимость, я ее испытываю. Поэтому и функции такие нужны.
2. Я понимаю, что их сущности независимы. Я не понимаю, почему. Индикаторы, присутствующие на виртуальном графике появляются на реальном, открытом из тестера (ctrl-R -> open chart). То есть, опять же, в принципе, проблема решаемая. И что значит "никакого отношения не имеют"?. Я, ведь, как раз и говорю, что приходится запускать отдельно индикатор, что бы показать, что происходит в эксперте. Что весьма неудобно по многим причинам, некоторые из которых перечислены выше.
А если серьезно - влом объяснять, и думаю не только мне.
Так что без обид.
Мои извенения (к тем, кому "влом", они, впрочем, не относятся).
Все же первый вопрос остается актуальным. Вот, например.
Когда я подправляю параметры в эксперте, он передает их в индикатор через глобальные переменные при инициализации, проблем с этим нет. Проблема в том, что таким образом нельзя передать все настройки (см. выше, а то я уже и так повторяюсь).
Господа девелоперы, возможно ли реализовать эту функциональность? Вроде бы, не должно быть слишком сложно.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Потребовалось передать параметры инициализации из эксперта в сопутствующий индикатор. Проблема решена с использованием глобальных переменных, одна из которых является флагом изменения параметров.
Полностью настроить индикатор из эксперта все-же не удалось :(
Такие вещи, как цвета, уровни, границы задаются статически во время компиляции посредством директив #property.
В то же время эти же самые параметры можно изменить в диалоге параметров индикаторов ctrl-I -> Edit. При этом перекомпиляция не производится.
1. Какой смысл задавать некоторые параметры препроцессором, если их можно изменять динамически?
2. Зачем вообще таскать за экспертом индикатор данных, на которых этот эксперт работает? Почему нельзя использовать функции пользовательских индикаторов в эксперте напрямую для отображения его текущих параметров? Приходится просчитывать эти данные дважды и отслеживать изменения в двух исходниках параллельно.