Получить имя объекта на текущем баре соседего графика. - страница 2

 
WePlexus:
Было бы здорово. Но линии каждый новый бар обновляют свое положение на графике. Поэтому нужно каждый бар перебирать все объекты. Вот в чем трудность. :) А их ~10000 шт. 
А Вы как их перебираете? Кусок кода покажите.
 
Tapochun:
Можно подробнее, что Вы имеете ввиду?
Я имею в виду, что во всех изделиях при создании объектов наименование необходимо формировать так, что бы позволять находить нужный объект без перебора. Должно быть такое глобальное правило. Принять это правило для себя, требовать от других. Это диктуется нам апи терминала. К примеру у меня код алгоритма + ид элемента + метка периодичности и времени "ml topmax 2014 317". Ну это не новость конечно. А новость в том, что бы соблюдать это правило ). Если у вас есть к примеру чужой индикатор не соблюдающий это простое правило и вы не можете внедриться в его код, так добавьте свой код, который переименовывает объекты. Переименовать нужно только один раз, а перебор происходит постоянно и он затратен.
 
gip:
Я имею в виду, что во всех изделиях при создании объектов наименование необходимо формировать так, что бы позволять находить нужный объект без перебора. Должно быть такое глобальное правило. Принять это правило для себя, требовать от других. Это диктуется нам апи терминала. К примеру у меня код алгоритма + ид элемента + метка периодичности и времени "ml topmax 2014 317". Ну это не новость конечно. А новость в том, что бы соблюдать это правило ). Если у вас есть к примеру чужой индикатор не соблюдающий это простое правило и вы не можете внедриться в его код, так добавьте свой код, который переименовывает объекты. Переименовать нужно только один раз, а перебор происходит постоянно и он затратен.

Я с Вами полностью согласен, делаю также. Но тут это не поможет. Предположим, кодируем ID в имя трендлинии. Чтобы получить имя линии, все равно нужно, как минимум, получить общее кол-во трендлиний ObjectsTotal() на нужном графике и подокне. Потом перебирать каждую, дабы найти нужный ID ( StringFind() ). Так и так придется перебирать все линии на графике, значит все 6000. 

Выигрыш во времени, как мне кажется, можно получить только сократив область поиска, метод помещения имен линий в массив, думаю, самый простой.

Также, как уже предлагалось, можно сократить количество линий (поиск/очистка не нужных). 

 
Tapochun:

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

"Потом перебирать каждую, дабы найти нужный ID" - это неверно. Так не должно быть, это неправильно. Вы до сих пор не понимаете, что перебирать при правильном именовании не нужно. Имя объекта должно быть известно заранее, без перебора.

 
gip:
Перебрать для переименования необходимо меньшее количество раз

Не факт, что идентификатор советника не встроен в имя. Это раз.

перебор переименования можно оптимизировать, так как объекты располагаются в порядке создания и не нужно обходить все объекты. 

Не придумывайте идеальных условий. Их не бывает. Ваша теория посыпется если добавить на график индикатор, строящий такие же объекты в тоже подокно, как и советник. Порядка не будет. Это два.

перебирать при правильном именовании не нужно. Имя объекта должно быть известно заранее, без перебора

Известно заранее? Автору нужно 200 объектов, и как это они будут известны заранее? Получается что их нужно как-то запомнить? Если так, то это как раз то, что я и предлагаю. Запомнить в массив. Можно в файл. Это три.

Вы до сих пор не понимаете

Уважаемый, не переходите на личности и не считайте себя умнее других. Вы никак не можете знать что я понимаю, а что - нет.
 
gip:

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

"Потом перебирать каждую, дабы найти нужный ID" - это неверно. Так не должно быть, это неправильно. Вы до сих пор не понимаете, что перебирать при правильном именовании не нужно. Имя объекта должно быть известно заранее, без перебора.

Да, это, конечно, идеальный вариант.

В моем случае бы вошло как в воду без брызг. Появился новый бар -> берем (без перебора, конкретно) объект с именем "Trend Buy 1124151256"; где "1124151256" - время создания бара, что будет являться его номером.

А раз мои объекты каждый новый бар переформируются, то и время привязки к бару "Trend Buy 1124151256" будет изменено и уже при ссыЛании на 5-й бар мы получим уже другую линии, актуальную для данного бара. Идеально!

 
WePlexus:

Да, это, конечно, идеальный вариант.

В моем случае бы вошло как в воду без брызг. Появился новый бар -> берем (без перебора, конкретно) объект с именем "Trend Buy 1124151256"; где "1124151256" - время создания бара, что будет являться его номером.

А раз мои объекты каждый новый бар переформируются, то и время привязки к бару "Trend Buy 1124151256" будет изменено и уже при ссыЛании на 5-й бар мы получим уже другую линии, актуальную для данного бара. Идеально!

А попробуйте-ка на графике с линиями обрабатывать такое событие: CHARTEVENT_OBJECT_CREATE

 
barabashkakvn:

А попробуйте-ка на графике с линиями обрабатывать такое событие: CHARTEVENT_OBJECT_CREATE

Это делается на МТ4. :)
 

Если что, у Вас все объекты собраны в файл из которого Вы и можете получать доступ к объектам.

ЗЫ: или Вы не с копировщиком, а с разметчиком работаете?

 
WePlexus:
Это делается на МТ4. :)
Было бы неплохо, если бы Вы указали сразу в названии темы о том, что вопрос по mql4.
Причина обращения: