[RESOLVIDO] CHART_BRING_TO_TOP - Como executar rapidamente - Como alterar outro gráfico rapidamente

 

Olá, eu li a documentação sobre CHART_BRING_TO_TOP, e lá diz o seguinte:


A função é assíncrona, ou seja, ela não espera que o comando seja enfileirado com sucesso para que o gráfico especificado seja executado, em vez disso, ela retorna o controle imediatamente. A propriedade só será alterada após o processamento do comando na fila do gráfico. Para executar comandos imediatamente na fila de agendamento, você precisa chamar a função ChartRedraw


No entanto, para o meu caso, essa função é executada aleatoriamente, às vezes em 0,5 segundos, outras vezes em 3,4 segundos.


Estou procurando uma maneira de fazer isso mais rápido.

Documentação sobre MQL5: Operações de Gráficos / ChartRedraw
Documentação sobre MQL5: Operações de Gráficos / ChartRedraw
  • www.mql5.com
ChartRedraw - Operações de Gráficos - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
 
Ha-yun:

Hello, I read the documentation about CHART_BRING_TO_TOP, and there it says the following:


The function is asynchronous, that is, it does not wait for the command to be successfully queued for the specified chart to execute, instead it returns control immediately. The property will only change after processing the command in the chart queue.

To immediately execute commands in the schedule queue, you need to call the ChartRedraw function


However, for my case this function runs randomly, sometimes in 0.5 seconds, other times 3.4 seconds.


I'm looking for a way to do this faster.

Boa noite.

Você está postando no fórum em português.

Se quer uma resposta em português, faça a postagem em português mesmo.

Se quer uma resposta em inglês, mude para a versão em inglês do site e poste novamente.

Sucesso e bons trades!
 
Ricardo Branco #:
Boa noite.

Você está postando no fórum em português.

Se quer uma resposta em português, faça a postagem em português mesmo.

Se quer uma resposta em inglês, mude para a versão em inglês do site e poste novamente.

Sucesso e bons trades!
Transformei em Português, obrigada pelo aviso
 
Ha-yun #:
Transformei em Português, obrigada pelo aviso
Ok.

Vamos lá... 

Não tem outra maneira do chartredraw ser chamado (pelo que eu saiba) mas talvez seja interessante ver 1) quantas vezes você usa esse comando, 2) não chamar o comando se já houve uma modificação no preço (pois neste caso já houve uma atualização do gráfico) e 3) verificar se você precisa mesmo atualizar.

Você está chamando ele no onTimer?

Veja o que você pode colocar a mais para ajudarmos, sem entregar nenhuma parte sensível do seu setup ou produto.
 
Ricardo Branco #:
Ok.

Vamos lá... 

Não tem outra maneira do chartredraw ser chamado (pelo que eu saiba) mas talvez seja interessante ver 1) quantas vezes você usa esse comando, 2) não chamar o comando se já houve uma modificação no preço (pois neste caso já houve uma atualização do gráfico) e 3) verificar se você precisa mesmo atualizar.

Você está chamando ele no onTimer?

Veja o que você pode colocar a mais para ajudarmos, sem entregar nenhuma parte sensível do seu setup ou produto.

Corrigi o erro, a solução foi simples.


ChartRedraw() possui um parâmetro de chart_id, que para meu caso, você precisa informar o gráfico para qual você está indo, e não o gráfico atual.


Então depois de usar

ChartSetInteger(chart_ID,CHART_BRING_TO_TOP,0,true)


Você pode chamar o ChartRedraw() junto com o chart_ID para qual você está querendo ser direcionado.


Meu erro era não enviar este parâmetro, logo o gráfico atual era considerado, e isso não fazia mover imediatamente.

 
Ha-yun #:

Corrigi o erro, a solução foi simples.


ChartRedraw() possui um parâmetro de chart_id, que para meu caso, você precisa informar o gráfico para qual você está indo, e não o gráfico atual.


Então depois de usar


Você pode chamar o ChartRedraw() junto com o chart_ID para qual você está querendo ser direcionado.


Meu erro era não enviar este parâmetro, logo o gráfico atual era considerado, e isso não fazia mover imediatamente.

Entendi.

Que bom que deu certo!

Sucesso!
Razão: