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

 
Mihail Matkovskij #:

E a sério, o ChartRedraw é chamado mais de 24 vezes por segundo.

E ObjectCreate! O horror... (adicionado)

O ChartRedraw está bem. Mas o OBjestCreator pode estar carregando se a linha for criada enquanto o botão não for pressionado.

UPD
Sim, faz...

UPD
Embora não, não:

Print(ObjectCreate(0,"H Line",OBJ_HLINE,window,dt,price));
...
2021.12.03 23:15:50.987    USDCHF,M1: false
2021.12.03 23:15:50.977    USDCHF,M1: false
2021.12.03 23:15:50.977    USDCHF,M1: false
2021.12.03 23:15:50.967    USDCHF,M1: false
2021.12.03 23:15:50.957    USDCHF,M1: false
2021.12.03 23:15:50.957    USDCHF,M1: false
2021.12.03 23:15:50.927    USDCHF,M1: false
2021.12.03 23:15:50.907    USDCHF,M1: false
2021.12.03 23:15:50.887    USDCHF,M1: false
2021.12.03 23:15:50.887    USDCHF,M1: false
2021.12.03 23:15:50.467    USDCHF,M1: false
2021.12.03 23:15:50.417    USDCHF,M1: false
2021.12.03 23:15:50.417    USDCHF,M1: false
2021.12.03 23:15:50.417    USDCHF,M1: true
 
Nerd Trader #:
O ChartRedraw não é um problema. Mas o ObjestCreate pode estar carregando, se a linha for criada até que o botão seja liberado.

Sim, criá-lo na inicialização e excluí-lo no encerramento do aplicativo. E use as funçõesObjectSetInteger eObjectSetDouble para movê-lo. Como é difícil de entender...

 
Mihail Matkovskij #:

Sim, criá-lo na inicialização e excluí-lo no encerramento da aplicação. E use as funçõesObjectSetInteger eObjectSetDouble para movê-lo. Como é difícil de entender...

Como é difícil entender que só preciso criar depois de apertar o botão e apagar depois de soltá-lo.
 
Nerd Trader #:

UPD
Sim, faz...

UPD
Embora não, não:

De uma forma ou de outra, sua CPU explodirá em um programador assim. :)

 
Nerd Trader #:
Como é difícil entender que eu só preciso criar quando o botão é pressionado e apagar quando o botão é liberado.

Você pode se esconder do quadro e depois mostrar. Como esconder corretamente um objeto e mostrá-lo, ele foi escrito no fórum. Ou siga CHARTEVENT_OBJECT_CLICK - solução perfeita!

 
Mihail Matkovskij #:

De uma forma ou de outra, sua CPU explodirá em um programador assim. :)

Estou de olho no termômetro.

Mihail Matkovskij #:

Você pode se esconder do quadro e depois mostrar. Como esconder corretamente um objeto e mostrar, ele foi escrito sobre ele no fórum.

Nah... Vou descobrir da maneira correta.

 
Nerd Trader #:

Eu fico de olho no termômetro.

Nah... Vou inventar esta agora mesmo.

Eu acrescentei à mensagem anterior.

 
if(id==CHARTEVENT_OBJECT_CLICK){
    if(sparam=="button_bs")
      (ObjectCreate(0,"H Line",OBJ_HLINE,0,0,0));
  }

  if(ObjectGetInteger(0,"button_bs",OBJPROP_STATE)){
    int      x     =(int)lparam;
    int      y     =(int)dparam;
    datetime dt    =0;
    double   price =0;
    int      window=0;

    if(ChartXYToTimePrice(0,x,y,window,dt,price)){
      if(id == CHARTEVENT_MOUSE_MOVE){
        if(ObjectMove(0,"H Line",window,dt,price))
          ChartRedraw(0);
      }
    }
  }else ObjectDelete(0,"H Line");

Tudo é brilhantemente simples.

 
Nerd Trader #:

Tudo o que é brilhante é simples.

Bem, em algum lugar ao longo da linha... :)

 
Mihail Matkovskij #:

Completou o posto anterior.

não pode ver
Razão: