Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Как пользоваться редактором сообщений MQL5.community? Узнай из статьи!
Evgeniy Zhdan
4959
Evgeniy Zhdan 2014.02.12 15:22 

Здравствуйте, уважаемые программисты!

Имею интересный вопрос: Почему стрелка (в советнике) устанавливается только один раз при наличии условий с дальнейшем?

Например, при

if (High[1]>High[2]
{
     ObjectCreate("StartCandle",OBJ_ARROW,0,Time[1],High[1]+0.002);
     ObjectSet("StartCandle",OBJPROP_ARROWCODE,242);  
     ObjectSet ("StartCandle",OBJPROP_COLOR,Yellow);  
    }

желтая стрелка установится только один раз, и при дальнейшем выполнении условий - не ставится. Как сделать, чтобы ставилась?

Vitalie Postolache
11632
Vitalie Postolache 2014.02.12 16:51  
Потому что нельзя создавать несколько обьектов с тем же именем. Или перемещайте уже созданный, или создавайте новый.
Evgeniy Zhdan
4959
Evgeniy Zhdan 2014.02.13 03:42  
evillive:
Потому что нельзя создавать несколько обьектов с тем же именем. Или перемещайте уже созданный, или создавайте новый.

А как сделать, чтобы автоматически присваивалось новое имя новой стрелке?
Artyom Trishkin
Модератор
71637
Artyom Trishkin 2014.02.13 04:06  
remon:

А как сделать, чтобы автоматически присваивалось новое имя новой стрелке?
Например, к имени объекта добавить время сознания объекта
Evgeniy Zhdan
4959
Evgeniy Zhdan 2014.02.13 04:28  
artmedia70:
Например, к имени объекта добавить время сознания объекта


Спасибо, попробуем!
Vitalie Postolache
11632
Vitalie Postolache 2014.02.13 09:40  
И пойдёт он плодить обьекты, пока памяти хватит :)
Evgeniy Zhdan
4959
Evgeniy Zhdan 2014.02.13 11:04  
evillive:
И пойдёт он плодить обьекты, пока памяти хватит :)

Тогда какой выход?
Vitalie Postolache
11632
Vitalie Postolache 2014.02.13 11:43  
Перемещать уже созданный обьект на новое место. А если надо большее одной стрелки, то стирать старые, оставляя только самые свежие.
Evgeniy Zhdan
4959
Evgeniy Zhdan 2014.02.13 12:07  
evillive:
Перемещать уже созданный обьект на новое место. А если надо большее одной стрелки, то стирать старые, оставляя только самые свежие.
Подскажите, как это реализовать в коде? Полдня уже бьюсь не могу додуматься. Будьте добры
Vitalie Postolache
11632
Vitalie Postolache 2014.02.13 12:12  

Если появляется новое условие для которого стоит нарисовать стрелку, то:

ObjectMove("name", 0, newtime,newprice);

Evgeniy Zhdan
4959
Evgeniy Zhdan 2014.02.13 12:18  
evillive:

Если появляется новое условие для которого стоит нарисовать стрелку, то:

ObjectMove("name", 0, newtime,newprice);


Сделал намного проще. Просто меняю имя при каждом новом условии

     ObjectCreate("StartCandleSell"+Ask,OBJ_ARROW,0,Time[1],High[1]+0.002);
     ObjectSet("StartCandleSell"+Ask,OBJPROP_ARROWCODE,242);  
     ObjectSet ("StartCandleSell"+Ask,OBJPROP_COLOR,Yellow);  
/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий