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

 
Eu tentei desta maneira:
if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1")
      ObjectSetInteger(0,"button1",OBJPROP_STATE,false);

Mas quando você clica, o botão apenas visualmente não parece clicar, o que faz sentido.

 
Nerd Trader #:
Eu tentei desta maneira:

Mas quando você clica, o botão apenas visualmente não parece clicar, o que faz sentido.

if(sparam=="button1")
      Sleep(100);
      ObjectSetInteger(0,"button1",OBJPROP_STATE,false);
 
MakarFX #:
Isso serve, obrigado.
 
MakarFX #:

O programa inteiro está atrasado. Não é bom... Para uma variante simples, é claro, está bem. Mas para normal - você precisa pesquisar os valores dos botões pressionados no timer de milissegundos e se após pressionar o botão o tempo de atraso necessário tiver passado - defina uma bandeira.

 
Nerd Trader #:
Isso serve, obrigado.

Em um mercado fechado, fique surpreso como funciona um botão como este

 
MakarFX #:

Tente isto.

Melhor ainda, prescreva,

se não houver ordens de venda em aberto, apague a linha de venda.

similar para a bai

Obrigado pela dica, mas isso não ajudou

 
Artyom Trishkin #:

O programa inteiro está atrasado. Não é bom... Para uma variante simples, é claro, está bem. Mas para normal - você precisa pesquisar os valores dos botões pressionados no timer de milissegundos e se após pressionar o botão o tempo de atraso necessário tiver passado - defina uma bandeira.

Sim, não é bom. Está tudo bem?

     if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1"){
       ulong ms=GetMicrosecondCount();
       for(;;){
         if(GetMicrosecondCount()-ms>100000){
           ObjectSetInteger(0,"button1",OBJPROP_STATE,false);
           break;
         }
       }
     }
Não é equivalente a Dormir(100)? Afinal de contas, o programa ficará pendurado em loop até que a pausa seja executada.
 
Por favor, sugira um indicador para cruzar dois slides com um alerta?
 
Livre ...
 
Nerd Trader #:

Sim, isso não é bom. Está bem assim?

Não é equivalente a Dormir(100)? Afinal de contas, o programa ficará pendurado em loop até que a pausa seja executada.
E se "ms" for feito global
ulong ms=0;
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
      if(id==CHARTEVENT_OBJECT_CLICK && sparam=="button1")
         {ms=GetMicrosecondCount();}
  }
//+------------------------------------------------------------------+
void OnTimer()
  {
   if(GetMicrosecondCount()-ms>100000)
     {
      ObjectSetInteger(0,"button1",OBJPROP_STATE,false);
      ms=0;
     }
  }
//+------------------------------------------------------------------+