há algum bug no mt5 ObjectDelete? - página 2

 

Isto poderia ser mais semântico do que um bug.

O objetivo do ObjectDelete é "remover o objeto com o nome especificado".

Ao final da execução da função, ainda há um objeto chamado "Objeto não-existente" no gráfico? Não... Então, este sucesso é um sucesso?

Olhando de outra forma, o ObjectDelete removeu um objeto chamado "Objeto Não Existente"? Não... então este fracasso é um fracasso?

Você mede o sucesso pelo resultado ou pela ação tomada?

Talvez um falso seria esperado se o objeto nomeado permanecesse no gráfico após a execução da função. Caso contrário, foi um sucesso.

 
Farzin Sadeghi:
sim, vou escrevê-lo. Eu estava esperando sua confirmação. obrigado.

Tentei apenas informar no Service Desk e ele não está aceitando minha mensagem, dizendo "Erro ao salvar dados".

Tentei também de um local diferente, PC e navegador (usando meu VPS) e o mesmo aconteceu.

Você foi capaz de relatar em sua ponta?

 
honest_knave:

Isto poderia ser mais semântico do que um bug.

O objetivo do ObjectDelete é "remover o objeto com o nome especificado".

No final da execução da função, ainda há um objeto chamado "Objeto não-existente" no gráfico? Não... Então, este sucesso é um sucesso?

Olhando de outra forma, o ObjectDelete removeu um objeto chamado "Objeto Não Existente"? Não... então este fracasso é um fracasso?

Você mede o sucesso pelo resultado ou pela ação tomada?

Talvez um falso seria esperado se o objeto nomeado permanecesse no gráfico após a execução da função. Caso contrário, foi um sucesso.

Se for esse o caso, então a diferença de funcionalidade entre MQL4 e MQL5 não é relatada ou explicada na documentação!
 
Fernando Carreiro:
Se este for o caso, então a diferença de funcionalidade entre MQL4 e MQL5 não é relatada ou explicada na documentação!

De acordo. Só estou curioso para saber qual "eles" dirão que está correto :-)

Pessoalmente, acho que é melhor voltar a ser verdade. Caso contrário, é preciso acrescentar um código extra para verificar a existência do objeto, caso contrário, serão cometidos 4202 erros.

 
honest_knave:

De acordo. Só estou curioso para saber qual "eles" dirão que está correto :-)

Pessoalmente, acho que é melhor voltar a ser verdade. Caso contrário, é preciso acrescentar um código extra para verificar a existência do objeto, caso contrário, serão cometidos 4202 erros.

Na minha opinião, em ambos os casos é preciso verificar a existência do objeto antes de excluí-lo, independentemente da versão "correta".

EDIT: Entretanto, espero que eles "consertem" para que funcione da mesma forma que a MQL4. Caso contrário, haverá ainda outra diferença na funcionalidade na qual precisaremos colocar a compilação condicional em código feito para compilar em ambas as versões.

 
Fernando Carreiro:
Na minha opinião, em ambos os casos é necessário verificar a existência do objeto antes de excluí-lo, independentemente da versão "correta".

Interessante! Por que você precisaria verificar se ela existe, se você quer que ela desapareça?

O tempo necessário para verificar se um objeto inexistente existe é largamente comparável à tentativa de apagar um objeto inexistente no MT4 (e uma inspeção rápida no MT5 mostra que ele é substancialmente mais lento), então não consigo ver nenhum benefício tangível de desempenho ao executar a verificação. Mas ele adicionará mais linhas ao seu código.

 
Fernando Carreiro:

EDIT: Entretanto, espero que eles "consertem" para que funcione da mesma forma que a MQL4. Caso contrário, haverá ainda outra diferença na funcionalidade na qual precisaremos colocar a compilação condicional em código feito para compilar em ambas as versões.

Talvez seja tudo parte do plano deles para nos forçar a MT5 através da frustração!
 
honest_knave:

Interessante! Por que você precisaria verificar se ela existe, se você quer que ela desapareça?

O tempo necessário para verificar se um objeto inexistente existe é largamente comparável à tentativa de apagar um objeto inexistente no MT4 (e uma inspeção rápida no MT5 mostra que ele é substancialmente mais lento), então não consigo ver nenhum benefício tangível de desempenho ao executar a verificação. Mas ele adicionará mais linhas ao seu código.

Quando você quiser detectar se o usuário o apagou acidentalmente e precisa ser recriado. Eu quis dizer isto como uma "limpeza" geral e não por uma única vez apenas a funcionalidade de exclusão.

Mas sim, eu concordo, para uma funcionalidade"OnDeinit()", não há necessidade de testá-la primeiro.

 
Fernando Carreiro:

Quando se deseja detectar se o usuário o apagou acidentalmente e precisa ser recriado. Eu quis dizer isto como "limpeza doméstica" geral e não por uma única vez apenas a funcionalidade de apagar.

Mas sim, eu concordo, para uma funcionalidade"OnDeinit()", não há necessidade de testá-la primeiro.

Ah, estou vendo.

Como uma nota lateral:

#property strict

void OnStart()
  {
   string name = "MysteryObject";
   ulong begin;

   begin = GetMicrosecondCount();
   for(int i=0; i<1000; i++) int result = ObjectFind(0,name);
   printf("ObjectFind took %i μs", GetMicrosecondCount()-begin);

   begin = GetMicrosecondCount();
   for(int i=0; i<1000; i++) bool result = ObjectDelete(0,name);
   printf("ObjectDelete took %i μs", GetMicrosecondCount()-begin);
  }

Executando-o no MT4 não há muito nele.

Executando-o no MT5 É mais de 50 vezes mais lento.

Alguém tem alguma idéia do porquê?

 
honest_knave: Ah, estou vendo.

Como uma nota lateral:

Executando-o no MT4 não há muito nele.

Executando-o no MT5 É mais de 50 vezes mais lento.

Alguém tem alguma idéia do porquê?

Que construção você usou? Como parece haver um possível bug na última construção com a função"ObjectDelete()", pode haver também problemas com o "ObjectFind()"!
Razão: