Интересно.
long id=ChartOpen("EURUSD",_Period); if(id==0) Print("Не удалось открыть график ""EURUSD"". Код ошибки ",GetLastError()); //--- Print("Открыт график с идентификатором= "+(string)id); ResetLastError(); if(!ChartIndicatorAdd(id,0,iCustom("EURUSD",_Period,"::Custom_Moving_Average_1.ex5"))) Print("Не удалось добавить индикатор ""Custom Moving Average 1"" на график. Код ошибки ",GetLastError()); //--- Print("Всего индикаторов в новом окне="+(string)ChartIndicatorsTotal(id,0));
и результат
Идентификатор графика на котром запущен эксперт: 130726249372047000 Идентификатор графика на котором запущен индикатор: 130726249372047000 Открыт график с идентификатором= 130726296275617000 Всего индикаторов в новом окне=1
Наверно, т.к индикатор-ресурс имеет название SampleEA::Custom Moving Average 1.ex5, он "помнит" место своего рождения.
Интересно.
и результат
Наверно, т.к индикатор-ресурс имеет название SampleEA::Custom Moving Average 1.ex5, он "помнит" место своего рождения.
Вот в том-то и вопрос. Правильно-ли это? Ведь использование ресурсов - далее цитата:
...Включение индикаторов в качестве ресурсов позволяет упростить распространение программ....
Таким образом включая индикатор в ресурс я рассчитываю, что этот индикатор будет работать как обычный индикатор. И если такой индикатор прикрепить на график, то индикатор должен выдавать идентификатор графика на который его прикрепили, а не "родительский".
Вот в том-то и вопрос. Правильно-ли это? ...
Считаю нет. Бага.
Т.к. индикатор помещается на график, т.е. участвует в подсчете количества индикаторов, но в то же время "принадлежит другому графику" - отдает идентификатор не своего графика.
Можно было посчитать это не ошибкой при условии существования другого метода добавления индикатора на другой график.
Считаю нет. Бага.
Т.к. индикатор помещается на график, т.е. участвует в подсчете количества индикаторов, но в то же время "принадлежит другому графику" - отдает идентификатор не своего графика.
Можно было посчитать это не ошибкой при условии существования другого метода добавления индикатора на другой график.
Ещё заметил, что индикатор из ресурса хотя и неправильно определяет идентификатор графика, но в тоже время этот индикатор правильно определяет название символа на котором находится.
//+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void OnInit() { Print("Идентификатор графика на котором запущен индикатор: ",(string)ChartID(),", символ графика - ",Symbol()); //--- indicator buffers mapping SetIndexBuffer(0,ExtLineBuffer,INDICATOR_DATA);
Идентификатор графика на котором запущен индикатор: 130727027167967729, символ графика - EURUSD
Идентификатор графика на котром запущен эксперт: 130727027167967729
Ситуация прояснилась. Ответ от сервисдеска:
... Индикатор наследует идентификатор графика на котором создан через iCustom. Даже если на десять чартов его добавить фактически копия исполняемого кода остается одна.
Ситуация прояснилась. Ответ от сервисдеска:
Значит эту особенность подключения индикатора в виде ресурса нужно иметь ввидуТ.е. если индикатор рисует какие-то трендовые линии, к примеру, то ему нужно передать идентификатор окна его будущего обитания.
Следовательно, нужно открывать чарт, и только потом создавать индикатор, либо через EventChartCustom сообщать индикатору идентификатор.
Так получается?
Т.е. если индикатор рисует какие-то трендовые линии, к примеру, то ему нужно передать идентификатор окна его будущего обитания.
Следовательно, нужно открывать чарт, и только потом создавать индикатор, либо через EventChartCustom сообщать индикатору идентификатор.
Так получается?
Да. Получается, что если создавать индикатор через iCustom, нужно ему в параметрах передавать идентификатор графика на котором он будет работать. И в самом индикаторе, впоследствии, использовать этот переданный идентификатор для правильного рисования.
Да. Получается, что если создавать индикатор через iCustom, нужно ему в параметрах передавать идентификатор графика на котором он будет работать. И в самом индикаторе, впоследствии, использовать этот переданный идентификатор для правильного рисования.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вопрос: "Правильно ли индикатор подключённый в качестве ресурса и добавленный на другой график, определяет идентификатор текущего графика?".
Последовательность действий:
- В эксперте подключаем пользовательский индикатор в качестве ресурса.
- Принтуем идентификатор текущего графика.
- Получаем хэндл пользовательского индикатора-ресурса для инструмента "EURUSD".
- Открываем новый график для инструмента "EURUSD".
- Добавляем на этот новый график индикатор созданный в п.3.
- Индикатор на новом графике принтует идентификатор текущего графика.
В п.2 и в п.6 получается два одинаковых идентификатора графиков. Верно ли это?Прикрепляю файл советника и файл индикатора. Индикатор - это стандартный Custom Moving Average, только в него добавлена одна строчка:
Индикатор нужно положить в ...\MQL5\Indicators\Examples\