Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вроде все работает.
Вот такая конструкция (аналогичная):
всё равно работает через раз, а когда не срабатывает в лог никаких ошибок не пишет (fGetLastError()).
Зато очень интересно ведёт себя вот такая конструкция:
Я добавил, в с лучае не выполнения начального условия - удаление объекта (DelObj ("rule")). Так вот объкт вообще исчез с графика!!! Что-бы это могло значить???
Объекты на графике рисуются с помощью функции:
И вывод конкретного объекта прописан:
Перевариваю полученные результаты - пока нет соображений по данному наблюдению...
По вырезкам из кода тяжело судить.
Вы сделайте отдельный маленький советник, который смоделирует вашу ситуацию.
вызываю так:
drawline("line0",Close[0],Time[0],Time[0],LightGreen,OBJ_HLINE); - это линия с меткой цены
drawline(name,Ask,Time[tim],Time[tim+linewith],Red); это отрезок трендовой линии
в отличии от Вашего кода я не ищу обьект с именем, я пытаюсь установить необходимый параметр обьекта, если произошла ошибка, пытаюсь создать обьект, если и там ошибка, тогда вывожу в журнал - пока работает как часы, проблем не наблюдал ни разу
По вырезкам из кода тяжело судить.
Вы сделайте отдельный маленький советник, который смоделирует вашу ситуацию.
Какая разница: большой или маленький - я прослеживаю судьбу одного единственного объекта!
Немножко пошаманив получил вообще впечатляющие результаты, сначала код:
Пояснение: создал функцию по подобию Вашей (DelObj()) - FindObject() с перебором всех объектов чарта. Пробовал уменьшать количестов условий (убирал сравнение координаты Y).
В лог без вызова (смещения объекта) получаем следующее:
2010.09.29 09:23:54 e-PSI@BasketBull GBPCHF,H4: FindObject = Да; Координата X = 120; КООРДИНАТА Y = 140
2010.09.29 09:23:48 e-PSI@BasketBull GBPCHF,H4: FindObject = Да; Координата X = 120; КООРДИНАТА Y = 140
2010.09.29 09:23:44 e-PSI@BasketBull GBPCHF,H4: FindObject = Да; Координата X = 120; КООРДИНАТА Y = 140
При вызове условия (смещение объекта) - ничего не происходит, ошибок не пишет...
Ситуация - "крыша поехала". Или я что-то гне догоняю?! :(
вызываю так:
drawline("line0",Close[0],Time[0],Time[0],LightGreen,OBJ_HLINE); - это линия с меткой цены
drawline(name,Ask,Time[tim],Time[tim+linewith],Red); это отрезок трендовой линии
в отличии от Вашего кода я не ищу обьект с именем, я пытаюсь установить необходимый параметр обьекта, если произошла ошибка, пытаюсь создать обьект, если и там ошибка, тогда вывожу в журнал - пока работает как часы, проблем не наблюдал ни разу
Какая разница: большой или маленький - я прослеживаю судьбу одного единственного объекта!
Согласен, не важно большой или маленький, просто основным было создать отдельный советник без лишнего кода, который смоделирует вашу ситуацию.
Чтобы его можно было запустить и посмотреть. Обычно у меня при попытке смоделировать ошибочную ситуацию все решается.
Кто-то из нас двоих чего-то не догоняет!!! Вы мой вопрос на первой страничке прочитали? С рисованием объекта проблем нет. Мне необходимо путём изменения координат объекта запустить пользовательскую функцию или (по ситуации) изменить значение переменной!!! Я понятно изъясняюсь?
если у Вас нет проблем с рисованием, то у Вас не должно быть проблем с использованием ф-ции ObjectGet()
если через ObjectGet Вы не можете получить результат, у Вас либо отсутствует обьект с таким именем, либо у обьекта отсутствую запрашиваемые Вами параметры
всё! пример я привел на Ваш пример ф-ции
//+------------------------------------------------------------------+
//| ВЫВОД ОБЪЕКТА С ЗАДАННЫМИ ПАРАМЕТРАМИ |
//+------------------------------------------------------------------+
void Object_field (s
там тож Вы не проверяете создался обьект или нет и в журнал ошибку не выводите
успехов
создавая аналогию логики можно перефразировать... "если эта машина приехала и она зелёного цвета"... зачем нагружать условие проверкой цвета, если МАШИНА НЕ ПРИЕХАЛА? "Разделяй и властвуй"... сначала проверка на "приехала ли машина", а затем "на её принадлежность к зелени"... разделите условия. основное условие - "если объект найден". ВЛОЖЕННЫЕ внутрь - "если имеют определённые координаты".
Ваши замечания скорее лежат в плоскости философии рациональности кода, но не влияют на решение возникшей задачи. Я демонстрирую, что все заданные условия выполняются (см.лог):
1) - объект существует;
2) - координаты соответствуют заданным при создании объекта и дублируются при проверке на смещение.
Но лучшее, чего мне удалось добиться: это срабатывание на второй попытке, после того как после первой попытки (безрезультатной), я через "Список объектов" удаляю этот ранее выделенный, перемещённый и затем возвращённый на прежнее место объект.
Остются два вопроса:
1) Почему не срабатывает с первого раза?
2) И как с этим бороться?
если у Вас нет проблем с рисованием, то у Вас не должно быть проблем с использованием ф-ции ObjectGet()
если через ObjectGet Вы не можете получить результат, у Вас либо отсутствует обьект с таким именем, либо у обьекта отсутствую запрашиваемые Вами параметры
всё! пример я привел на Ваш пример ф-ции
//+------------------------------------------------------------------+
//| ВЫВОД ОБЪЕКТА С ЗАДАННЫМИ ПАРАМЕТРАМИ |
//+------------------------------------------------------------------+
void Object_field (s
там тож Вы не проверяете создался обьект или нет и в журнал ошибку не выводите
успехов
Я очень подробно объяснил с примерами кода и записями в лог: объект существует, но при этом существует и вышеописанная проблема.
По поводу проверки факта создания объекта внутри создающей его функции. Код:
Если какой-то объект не создастся - последнюю ошибку я увижу. Но их, как ни старнно нет!!!