Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1291

 
Alexey Viktorov:

Simples de acrescentar à condição.

Ou == 0, mais provavelmente. Ou melhor, para usar a busca por objeto pelo nome, se não houver tal objeto, então crie um. E não importa se o botão é clicado ou não.

Eu fiz, mas
OBJPROP_STATE

Ele ainda muda quando o botão é clicado.

Até agora, eu resolvi desta maneira

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

Olá. 2020.10.28_05:19:00 GMT+3. Traduzi o indicador LeManTrend_Indicator.mq5 para a quarta versão .mq4 .

Você já construiu o indicador ? Eu o construí, parece ser o mesmo - só preciso baixar este indicadorhttps://www.mql5.com/ru/code/9096

BrainTrend1Sig LeManTrend

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

ainda muda quando pressionado

Até agora, resolvi isso desta maneira.

Qual é o problema geral?

 
Alexey Viktorov:

Qual é a tarefa geral?

Quando você clica no botão, o objeto é criado e o botão recebe
ObjectSetInteger(0,"Button 3",OBJPROP_STATE,true);

Se houver um objeto, você pressiona o botão e ele recebe

OBJPROP_STATE,false

e você precisa mantê-lo verdadeiro enquanto houver um objeto no gráfico

 
MakarFX:
Quando o botão é clicado, o objeto é criado e o botão recebe

se houver um objeto, você pressiona o botão e ele recebe

e mantê-lo verdadeiro enquanto houver um objeto no gráfico.

Depois é só devolver o imóvel antes de desenhar

   //--- обработка кнопки Создать трендовую линию 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;
         }
      }
 
Eu faço ... você pode ver no código
 
MakarFX:
e eu faço... você pode ver no código

Nem tudo. Destaquei em meu exemplo

   if(ObjectGet("OrderBuy: "+Symbol(),OBJPROP_PRICE1)!=0)// Это лучше заменить на if(ObjectFind(ChartID(), "OrderBuy: "+Symbol()) >= 0);
     ObjectSetInteger(0,"Button 3",OBJPROP_STATE,true);
Isto evita que o botão fique preso quando pressionado, se houver uma linha na tabela.
 
Alexey Viktorov:

Nem tudo. Destaquei em meu exemplo

Isto evita que o botão fique colado quando pressionado, se houver uma linha na tabela.

O problema não é nem um nem outro... Eu só preciso que ele se cole, mas o próprio OBJ_BUTTON é clicável, mesmo que ele não faça nada.

Preciso tornar o botão inativo, e isso, como eu entendo, não é possível(

 
MakarFX:

Esse não é o problema... eu só preciso que ele se cole, mas OBJ_BUTTON em si é clicável, mesmo que ele não faça nada.

Preciso tornar o botão inativo, e isto, como eu entendo, não é possível(

O que você quer dizer com "inativo" ou "não clicável"? E para que serve isso?

Se você quiser que o botão tenha a aparência de ser clicado, então em vez de verdadeiro nessa linha, coloque falso e apague a linha

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

que antes de criar a linha...

 
Alexey Viktorov:

O que você quer dizer com "não ativo" ou "não clicável"? E qual é o objetivo disso?

Se você quiser que o botão tenha a aparência de ser clicado, então em vez de verdadeiro nessa linha, coloque falso e apague a linha

que é antes de a linha ser criada.

OBJPROP_STATE,true

este é o visual do botão pressionado...

não se preocupe...não é mais relevante.

Obrigado.

Razão: