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

 
Alexey Viktorov:

Прямо так и добавить в условие.

Или == 0, вероятнее. Или лучше использовать поиск объекта по имени, если нет такого объекта то создать. И не важно нажмётся кнопка или нет.

Я так делал,но
OBJPROP_STATE

все равно при нажатии меняется

пока решил так

   if(ObjectGet("OrderBuy: "+Symbol(),OBJPROP_PRICE1)!=0)
      {
      Sleep(1);
      name="Button 3";
      ObjectSetInteger(0,name,OBJPROP_STATE,true);
      return;
      }
 
Николай Никитюк:

Здравствуйте! 2020.10.28_05:19 GMT+3. Я переводил индикатор LeManTrend_Indicator.mq5 в четвёртую версию .mq4 . .

Вы собрали Индикатор ? Вот что то слепил, вроде всё совпадает - нужно только вот этот индикатор скачать https://www.mql5.com/ru/code/9096

  BrainTrend1Sig LeManTrend

LeManTrend
LeManTrend
  • www.mql5.com
Индикатор определяет положение тренда на основе текущей цены и максимальных и минимальных цен за три периода.
Файлы:
 
MakarFX:
Я так делал,но

все равно при нажатии меняется

пока решил так

Общая задача в чём заключается?

 
Alexey Viktorov:

Общая задача в чём заключается?

При нажатии на кнопку создается объект и кнопка получает
ObjectSetInteger(0,"Button 3",OBJPROP_STATE,true);

при наличии объекта нажимаешь на кнопку и она получает

OBJPROP_STATE,false

а надо сохранение true пока на графике есть объект

 
MakarFX:
При нажатии на кнопку создается объект и кнопка получает

при наличии объекта нажимаешь на кнопку и она получает

а надо сохранение true пока на графике есть объект

Тогда просто надо возвращать свойство взад до рисования

   //--- обработка кнопки Создать трендовую линию Buy
   if(sparam=="Button 3")
      {

   if(ObjectGet("OrderBuy: "+Symbol(),OBJPROP_PRICE1)!=0)// Это лучше заменить на if(ObjectFind(ChartID(), "OrderBuy: "+Symbol()) >= 0);
     ObjectSetInteger(0,"Button 3",OBJPROP_STATE,true);
      if(trigger_greateB==true)
         {
         Sleep(100);//А это зачем???
         trigger_greateB=false;
         ObjectSetInteger(0,"Button 3",OBJPROP_STATE,true);
         //--- Определяем координаты
         ChartXYToTimePrice(0,xn,yn+20,window,dt_1,price_1);
         ChartXYToTimePrice(0,xn+100,yn-20,window,dt_2,price_2);
         //--- Создаем трендовую линию Buy
         TrendCreate(0,("OrderBuy: "+Symbol()),0,dt_1,price_1,dt_2,price_2,ColorUP,0,1,false,true,false,false,0);
         return;
         }
      }
 
 так и делаю ...в коде видно
 
MakarFX:
 так и делаю ...в коде видно

Не всё. Я в своём примере выделил

   if(ObjectGet("OrderBuy: "+Symbol(),OBJPROP_PRICE1)!=0)// Это лучше заменить на if(ObjectFind(ChartID(), "OrderBuy: "+Symbol()) >= 0);
     ObjectSetInteger(0,"Button 3",OBJPROP_STATE,true);
Это не даёт залипнуть кнопке в нажатом состоянии если линия на графике есть.
 
Alexey Viktorov:

Не всё. Я в своём примере выделил

Это не даёт залипнуть кнопке в нажатом состоянии если линия на графике есть.

Да ни в этом проблема...Мне как раз надо чтоб она залипла, но OBJ_BUTTON сам по себе кликабельный, даже если ничего на делает

Мне надо сделать  кнопку не активной, а это, как я понял не возможно(

 
MakarFX:

Да ни в этом проблема...Мне как раз надо чтоб она залипла, но OBJ_BUTTON сам по себе кликабельный, даже если ничего на делает

Мне надо сделать  кнопку не активной, а это, как я понял не возможно(

Что в вашем понимании «сделать не активной» или «не кликабельной»? И какой в этом смысл?

Если надо чтобы кнопка имела вид нажатой, то вместо true в той строке поставьте false и удалите строку

         ObjectSetInteger(0,"Button 3",OBJPROP_STATE,true);

которая перед созданием линии…

 
Alexey Viktorov:

Что в вашем понимании «сделать не активной» или «не кликабельной»? И какой в этом смысл?

Если надо чтобы кнопка имела вид нажатой, то вместо true в той строке поставьте false и удалите строку

которая перед созданием линии…

OBJPROP_STATE,true

это и есть вид нажатой кнопки

не заморачивайтесь...уже не актуально.

Спасибо.