Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1793

 
Nerd Trader #:
Да действительно аж 8 штук, но на графике не видно, то что цена 0 не важно, линия все равно цепляется к курсору (следует за ним)

Не используй ObjectDelete, т.к. линия каждый раз убегает в "0"

лучше
      ObjectSetString(0,"line 1",OBJPROP_NAME,line_name);
      ObjectSetInteger(0,line_name,OBJPROP_COLOR,clrRed);
 
MakarFX #:

Не используй ObjectDelete, т.к. линия каждый раз убегает в "0"

лучше
Вариант с переименованием у меня есть и да он работает. В случает с ObjectDelete() почему тогда зеленая и красные линии создаются в одном экземпляре и не мерцают? И желтая линия (Stop Loss) если уже есть почему бесконечно плодится когда по условию ниже Bid?
 

0, значит false. Всё что не 0, это true. Но кто-нибудь задумывался о читабельности такого кода, где смешаны все виды условий?

if(!ObjectFind("Buy Stop"))

Здесь не булево значение. Но его легко можно превратить в булево:

bool objectExist(const long _chartID, const string _name) { return(ObjectFind(_chartID, _name) >= 0); } // чётко определим условие существования объекта!
if (!objectExist(0, "Buy stop"))
  Print("Error! Object not found.")

Так что главное иметь правильный подход к написанию кода. И тогда подобные проблемы у вас никогда не будут возникать.

 
Nerd Trader #:
Вариант с переименованием у меня есть и да он работает. В случает с ObjectDelete() почему тогда зеленая и красные линии создаются в одном экземпляре и не мерцают? И желтая линия если уже есть почему бесконечно плодится?

Эти линии у тебя по контролем

if(id==CHARTEVENT_OBJECT_CLICK){

А линии которые мерцают реагируют на любое OnChartEvent, т.к.

if(ObjectGetInteger(0,"Button Stop Order",OBJPROP_STATE))
 
Mihail Matkovskij #:

0, значит false. Всё что не 0, это true. Но кто-нибудь задумывался о читабельности такого кода, где смешаны все виды условий?

Здесь не булево значение. Но его легко можно превратить в булево:

Так что главное иметь правильный подход к написанию кода. И тогда подобные проблемы у вас никогда не будут возникать.

return(ObjectFind(_chartID, _name) >= 0)

И если объект есть в главном окне "0", то вернёт false?

 
MakarFX #:

А линии которые мерцают реагируют на любое OnChartEvent, т.к.

Сказал же ему: кнопка нажата - создаём линию, кнопка отжата - удаляем (так и с другими видами объектов, к которым можно привязаться). Но он сказал: это ерунда, сделаю всё "по нормальному". :)

 
Nerd Trader #:

И если объект есть в главном окне "0", то вернёт false?

Вот что может победить твоё нежелание читать документацию?!

https://www.mql5.com/ru/docs/objects/objectfind

https://docs.mql4.com/ru/objects/objectfind

Возвращаемое значение

В случае удачи функция возвращает номер подокна (0 означает главное окно графика), в котором находится найденный объект. Если объект не найден, то функция возвращает отрицательное число. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Документация по MQL5: Графические объекты / ObjectFind
Документация по MQL5: Графические объекты / ObjectFind
  • www.mql5.com
ObjectFind - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
MakarFX #:

Эти линии у тебя по контролем

А линии которые мерцают реагируют на любое OnChartEvent, т.к.

так и зеленая линия, вообще все линии также реагируют на перемещение курсора. Только что понял, что все три линии создаются в зоне спреда потому что для  желтой "Sell Stop" условие if(price > Ask) для зеленой "Buy Stop" (price < Bid) и для серой "not allowed" (price > Bid && price < Ask )
 
Nerd Trader #:

И если объект есть в главном окне "0", то вернёт false?

bool FindObject(string name)
  {
   if(ObjectFind(0,name)) return(false);
   return(true);
  }
 
Mihail Matkovskij #:

Сказал же ему: кнопка нажата - создаём линию, кнопка отжата - удаляем (так и с другими видами объектов, к которым можно привязаться). Но он сказал: это ерунда, сделаю всё по нормальному. :)

ты про смену цветов через свойство? у меня такой вариант есть, мне нужно понять почему этот не робит.

Mihail Matkovskij #:

Вот что может победить твоё нежелание читать документацию?!

https://www.mql5.com/ru/docs/objects/objectfind

https://docs.mql4.com/ru/objects/objectfind

Ну и что не так, когда объект в главном окне "0" твоя функция вернёт false? Объясни момент с >= 0... или равно ноль
Причина обращения: