Bibliotecas: Easy Canvas - página 16

 

Saudações, Nikolay.

Ao usar a biblioteca, encontrei um problema: se vários programas com o iCanvas forem usados em um terminal, depois de recarregar o terminal, as imagens começarão a mudar espontaneamente de uma para outra. No início, procurei os motivos em meu código, mas não encontrei nada. Então, um de meus clientes notou acidentalmente que os nomes de objetos do iCanvas coincidem em gráficos diferentes.

Analisei como o nome do objeto do iCanvas é gerado e descobri o seguinte:

Name+=IntegerToString(GetTickCount());

Essa maneira de carregar o terminal leva aos mesmos nomes de objeto em gráficos diferentes, se estivermos falando de Expert Advisors, porque todos os Expert Advisors no terminal recebem o mesmo valor GetTickCount() ao serem carregados. Os indicadores não têm esse problema.

Para resolver o problema, sugiro este método de geração de um nome de objeto exclusivo:

   Name += IntegerToString(ChartID()) + IntegerToString(GetTickCount());

Aqui a exclusividade é garantida pelas seguintes considerações:

  1. Os indicadores obtêm valores diferentes de GetTickCount() mesmo que todos eles sejam iniciados no mesmo gráfico. Portanto, esse método funciona para eles.
  2. Os Expert Advisors obtêm o mesmo valor de GetTickCount(), mas, como um Expert Advisor só pode estar em um gráfico, seu objeto obtém exclusividade devido ao identificador do gráfico.
 
Ihor Herasko usar a biblioteca, encontrei um problema: se vários programas com o iCanvas forem usados em um terminal, depois de recarregar o terminal, as imagens começarão a mudar espontaneamente de uma para outra. No início, procurei os motivos em meu código, mas não encontrei nada. Então, um dos meus clientes notou por acaso que os nomes dos objetos do iCanvas coincidem em gráficos diferentes.

Analisei como o nome do objeto é gerado para o iCanvas e descobri o seguinte:

Essa maneira de carregar o terminal leva aos mesmos nomes de objeto em gráficos diferentes, se estivermos falando de Expert Advisors, porque todos os Expert Advisors no terminal recebem o mesmo valor GetTickCount() ao serem carregados. Os indicadores não têm esse problema.

Para resolver o problema, proponho este método de geração de um nome de objeto exclusivo:

Aqui, a exclusividade é garantida pelas seguintes considerações:

  1. Os indicadores obtêm valores diferentes de GetTickCount() mesmo que todos sejam executados no mesmo gráfico. Portanto, esse método funciona para eles.
  2. Os Expert Advisors obtêm o mesmo valor de GetTickCount(), mas, como um Expert Advisor só pode estar em um gráfico, seu objeto obtém exclusividade devido ao ID do gráfico.

Concordo.
Obrigado, Igor!
Fiz o upload da versão corrigida.

Estranho, achei que era assim que o nome era formado. :))

 
Última versão 1.49
Arquivos anexados:
iCanvas.mqh  58 kb
 
versão atualizada para 1.49
encurtou o nome do recurso, pois ele era muito longo.
 

 Nikolai Semko #:
 обновил версию до 1.49
 укоротил имя ресурса, т.к. нарвался на слишком длинное имя

Boa tarde!
No arquivo iCanvas.mqh (no link para a versão MT5) há "#property version "1.09"...
Onde posso fazer o download da versão atual mais recente?
E sobre a versão para MT4, também uma pergunta - no arquivo baixado, a versão "#property version "1.47"
- é a mais recente paraMT4? E, se não for, onde possofazer o download daversão atual mais recente?

Obrigado.

 
Maksims Ignatovs #:

Boa tarde!
No arquivo iCanvas.mqh (no link para a versão MT5) há "#property version "1.09"...
Onde posso fazer o download da versão atual mais recente?
E sobre a versão para MT4, também uma pergunta - no arquivo baixado, a versão "#property version "1.47"
- é a mais recente paraMT4? E, se não for, onde possofazer o download daversão atual mais recente?

Obrigado.

Saudações!
Você deve estar baixando um arquivo zip. Nunca faça o download. É um bug no MQ. Quando atualizo a versão, o arquivo zip não é substituído e não tenho acesso a ele.
Clique no próprio arquivo iCanvas.mqh ou copie-o do visualizador.



 
Nikolai Semko #:

Saudações!
Você deve estar baixando um arquivo zip. Nunca faça download dele. Esse é um bug no MQ. Quando atualizo a versão, o arquivo zip não é sobrescrito e não tenho acesso a ele.
Clique no próprio arquivo iCanvas.mqh ou copie-o do visualizador.



Obrigado!
 


Obrigado por compartilhá-lo.
Estou pensando em criar uma ferramenta desse tipo há algum tempo e agora posso usar seu código como base para o meu.

Bom trabalho!
 
Guilherme Mendonca #:


Obrigado por compartilhá-lo.
Estou pensando em criar uma ferramenta desse tipo há algum tempo e agora posso usar seu código como base para o meu.

Bom trabalho!
Muito obrigado!
 
Versão mais recente 1.53
Arquivos anexados:
iCanvas.mqh  71 kb