Перерисовка индикатора

 
Всем привет ) Кто-то знает способ перерисовки индикатора? Чет я не нахожу такой. ChartRedrow() индикатор не перерисовывает. 
Технический анализ: Как мы анализируем?
Технический анализ: Как мы анализируем?
  • 2010.10.06
  • Victor
  • www.mql5.com
Данная статья в краткой форме отражает отношение автора к таким явлениям, как перерисовывающие индикаторы, индикаторы Multi-timeframe и представление котировок при помощи японских свечей. Техника программирования в статье не затрагивается, статья носит общий характер.
 
Fredik:
Всем привет ) Кто-то знает способ перерисовки индикатора? Чет я не нахожу такой. ChartRedrow() индикатор не перерисовывает. 
Не обращайте внимания на ссылку в посте, она проставилась автоматически и к вопросу отношения не имеет.
 
Пересчитать все вернув return(0);
 
Karlson:
Пересчитать все вернув return(0);
Не совсем понятно как это помогает, уточните пожалуйста.
 
в onCalculate производится расчет, onCalculate вызывается при новом тике или инициализации. Получается мне нужно вызвать это событие любое другое время.
 

Подскажите пожалуйста как вызвать onCalculate принудительно, не дожидаясь прихода нового тика? Нужно пересчитать индикатор, который посчитан от другого индикатора. Или как получить доступ к массиву price[] который получает onCalculate в случае если в параметрах вместо цены выбрано: «Данные предыдущего индикатора» ?

 
gal:

Подскажите пожалуйста как вызвать onCalculate принудительно, не дожидаясь прихода нового тика? Нужно пересчитать индикатор, который посчитан от другого индикатора. Или как получить доступ к массиву price[] который получает onCalculate в случае если в параметрах вместо цены выбрано: «Данные предыдущего индикатора» ?

Копировать прайс в свой массив и вызывать ОнКалкулейт с ним.

Тут есть статья про мультивалютные индикаторы, там есть пример. 

 
komposter:

Копировать прайс в свой массив и вызывать ОнКалкулейт с ним.

Если вы имеете ввиду эту статью https://www.mql5.com/ru/articles/83  то она к моему вопросу не имеет никакого отношения. Скопировать цены я могу без проблем с помощью команды Copy, но как скопировать «Данные предыдущего индикатора» ? Я такой команды не нашел. А данные предыдущего индикатора меняются не в результате прихода новой цены, а в результате изменения параметров индикатора после возникновения события с клавиатуры в обработчике OnChartEvent, например как здесь https://www.mql5.com/ru/articles/39  В таком случае текущий индикатор не знает, что исходные данные изменились, и необходимо принудительно вызвать перерисовку индикатора или получить доступ к массиву price[] напрямую по ссылке. Весь вопрос, каким образом?

Построение мультивалютного индикатора с применением множества промежуточных индикаторных буферов
Построение мультивалютного индикатора с применением множества промежуточных индикаторных буферов
  • 2010.05.17
  • Alexey Klenov
  • www.mql5.com
В последнее время возрос интерес к кластерному анализу рынка FOREX. MQL5 открывает новые возможности исследования закономерностей движения валютных пар. Важным преимуществом MQL5, по сравнению с MQL4, является возможность использования неограниченного количества индикаторных буферов. В данной статье описан пример построения мультивалютного индикатора.
 
gal:

Скопировать цены я могу без проблем с помощью команды Copy, но как скопировать «Данные предыдущего индикатора» ? Я такой команды не нашел.

Данные предыдущего индикатор доступны в OnCalculate в параметре price. Что мешает копировать его с помощью ArrayCopy
 
marketeer:
Данные предыдущего индикатор доступны в OnCalculate в параметре price. Что мешает копировать его с помощью ArrayCopy
Для того, чтобы скопировать внутри OnCalculate нужно сначала вызвать OnCalculate, а это возможно только при поступлении нового тика. Мне необходимо получить этот массив не один раз за время жизни индикатора, а каждый раз при нажатии на клавишу и изменении всего массива предыдущего индикатора, т.к. изменился параметр. При этом текущий индикатор не знает, что предыдущий индикатор изменился и OnCalculate не вызывается, т.к. не было прихода нового тика.
 
gal:
Для того, чтобы скопировать внутри OnCalculate нужно сначала вызвать OnCalculate, а это возможно только при поступлении нового тика. Мне необходимо получить этот массив не один раз за время жизни индикатора, а каждый раз при нажатии на клавишу и изменении всего массива предыдущего индикатора, т.к. изменился параметр. При этом текущий индикатор не знает, что предыдущий индикатор изменился и OnCalculate не вызывается, т.к. не было прихода нового тика.
Я отвечал на конкретный ваш вопрос, который в своем посте процитировал. По поводу вопроса с рефрешем - ничего не писал - это уже другой вопрос. Могу лишь предположить, что МК не предполагает, что параметры индюка могут меняться извне в обход спроектированных ими точек входа: либо диалога параметров, либо передачи параметров программно. Поскольку вы делаете некую вещь по своему усмотрению, то, вероятно, имеет смысл изменить логику работы связки двух индикаторов: главным всегда должен быть тот, который набрасывается на чарт, и именно он должен обрабатывать все команды пользователя по изменению параметров, запрашивая в том числе пересчет подчиненного индикатора.