![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Было бы здорово. Но линии каждый новый бар обновляют свое положение на графике. Поэтому нужно каждый бар перебирать все объекты. Вот в чем трудность. :) А их ~10000 шт.
Можно подробнее, что Вы имеете ввиду?
Я имею в виду, что во всех изделиях при создании объектов наименование необходимо формировать так, что бы позволять находить нужный объект без перебора. Должно быть такое глобальное правило. Принять это правило для себя, требовать от других. Это диктуется нам апи терминала. К примеру у меня код алгоритма + ид элемента + метка периодичности и времени "ml topmax 2014 317". Ну это не новость конечно. А новость в том, что бы соблюдать это правило ). Если у вас есть к примеру чужой индикатор не соблюдающий это простое правило и вы не можете внедриться в его код, так добавьте свой код, который переименовывает объекты. Переименовать нужно только один раз, а перебор происходит постоянно и он затратен.
Я с Вами полностью согласен, делаю также. Но тут это не поможет. Предположим, кодируем ID в имя трендлинии. Чтобы получить имя линии, все равно нужно, как минимум, получить общее кол-во трендлиний ObjectsTotal() на нужном графике и подокне. Потом перебирать каждую, дабы найти нужный ID ( StringFind() ). Так и так придется перебирать все линии на графике, значит все 6000.
Выигрыш во времени, как мне кажется, можно получить только сократив область поиска, метод помещения имен линий в массив, думаю, самый простой.
Также, как уже предлагалось, можно сократить количество линий (поиск/очистка не нужных).
Перебрать для переименования необходимо меньшее количество раз, чем перебирать для поиска. Это раз. Второе, перебор переименования можно оптимизировать, так как объекты располагаются в порядке создания и не нужно обходить все объекты. Но конечно же лучшим решением было бы правильное именование изначально.
"Потом перебирать каждую, дабы найти нужный ID" - это неверно. Так не должно быть, это неправильно. Вы до сих пор не понимаете, что перебирать при правильном именовании не нужно. Имя объекта должно быть известно заранее, без перебора.
Не факт, что идентификатор советника не встроен в имя. Это раз.
перебор переименования можно оптимизировать, так как объекты располагаются в порядке создания и не нужно обходить все объекты.
Не придумывайте идеальных условий. Их не бывает. Ваша теория посыпется если добавить на график индикатор, строящий такие же объекты в тоже подокно, как и советник. Порядка не будет. Это два.
перебирать при правильном именовании не нужно. Имя объекта должно быть известно заранее, без перебора
Известно заранее? Автору нужно 200 объектов, и как это они будут известны заранее? Получается что их нужно как-то запомнить? Если так, то это как раз то, что я и предлагаю. Запомнить в массив. Можно в файл. Это три.
Вы до сих пор не понимаете
Перебрать для переименования необходимо меньшее количество раз, чем перебирать для поиска. Это раз. Второе, перебор переименования можно оптимизировать, так как объекты располагаются в порядке создания и не нужно обходить все объекты. Но конечно же лучшим решением было бы правильное именование изначально.
"Потом перебирать каждую, дабы найти нужный ID" - это неверно. Так не должно быть, это неправильно. Вы до сих пор не понимаете, что перебирать при правильном именовании не нужно. Имя объекта должно быть известно заранее, без перебора.
Да, это, конечно, идеальный вариант.
В моем случае бы вошло как в воду без брызг. Появился новый бар -> берем (без перебора, конкретно) объект с именем "Trend Buy 1124151256"; где "1124151256" - время создания бара, что будет являться его номером.
А раз мои объекты каждый новый бар переформируются, то и время привязки к бару "Trend Buy 1124151256" будет изменено и уже при ссыЛании на 5-й бар мы получим уже другую линии, актуальную для данного бара. Идеально!
Да, это, конечно, идеальный вариант.
В моем случае бы вошло как в воду без брызг. Появился новый бар -> берем (без перебора, конкретно) объект с именем "Trend Buy 1124151256"; где "1124151256" - время создания бара, что будет являться его номером.
А раз мои объекты каждый новый бар переформируются, то и время привязки к бару "Trend Buy 1124151256" будет изменено и уже при ссыЛании на 5-й бар мы получим уже другую линии, актуальную для данного бара. Идеально!
А попробуйте-ка на графике с линиями обрабатывать такое событие: CHARTEVENT_OBJECT_CREATE
А попробуйте-ка на графике с линиями обрабатывать такое событие: CHARTEVENT_OBJECT_CREATE
Если что, у Вас все объекты собраны в файл из которого Вы и можете получать доступ к объектам.
ЗЫ: или Вы не с копировщиком, а с разметчиком работаете?
Это делается на МТ4. :)