Erros, bugs, perguntas - página 2767

 
Artyom Trishkin:

A julgar pelo comportamento que descreveu, esta é uma EA diferente com um algoritmo completamente diferente.

Todos nós o descobrimos, talvez seja um bug terminal ou talvez tenha sido concebido pelos programadores, mas a questão é que quando se executa um teste sobre o histórico de qualquer conjunto, no final do teste recebemos um gráfico, mas todo o histórico deste período é automaticamente sobreposto ao histórico real.

Comparei os resultados, depois fui ao registo e comparei os preços de abertura de posições do testador e de um comércio real, quase todos coincidem, há uma ligeira diferença.

Mas o facto é que os comércios reais são sobrepostos a este gráfico após a conclusão dos testes.

Para evitar a sua sobreposição, fiz o seguinte

apenas clicado com o botão direito do rato no diário e desactivado o auto-refresco, agora todos os testes mostram apenas as transacções que foram testadas no testador neste gráfico, as verdadeiras transacções não foram aplicadas ao mesmo.

Pedi às pessoas do grupo para gerirem os seus robôs comerciais durante um período em que tinham algo comercializado neste símbolo, utilizando robôs, seja o que for, todos eles confirmaram este facto de que, para além das transacções no testador, o gráfico está sobreposto a trocas reais que eram comercializadas no passado.


Se tiver trocas em qualquer instrumento, execute qualquer robô durante este período e verá que estas trocas serão aplicadas ao gráfico e se a auto-negociação estiver desactivada, as verdadeiras não serão aplicadas.

Penso que vale a pena dizer aos criadores, gosto deste insecto, agora posso testar o robô durante uma semana e comparar a diferença de comércios no gráfico, idealmente deveria ser diferente por um par de carrapatos

 
Konstantin Seredkin:

Para além das profissões do testador, as profissões reais que eram comercializadas no passado são sobrepostas no gráfico.

Este comportamento é invisível para aqueles que utilizam símbolos personalizados. Mas para símbolos reais, parece bastante inconveniente.

 

No depurador, o valor deGetLastError(); não pode ser recuperado?

apenas através de uma variável ou de um _LastError pré-definido ?

Arquivos anexados:
 
awsomdino:

No depurador, o valor de GetLastError(); não pode ser recuperado?

Apenas através de uma variável ou de um _LastError pré-definido ?

Sim. É aqui que _Valor vem a calhar.

 
fxsaber:

Sim. É para isto que _Valor é bom.

Talvez os criadores acrescentem a capacidade de procurar no depurador a partir da funçãoGetLastError();

caso contrário, estas 2 linhas simples e convenientes são inúteis

   if(GetLastError()>0)
      DebugBreak();
 
awsomdino:

talvez os programadores acrescentem a possibilidade de procurar no debugger da funçãoGetLastError();

caso contrário, estas 2 linhas simples e convenientes são inúteis.

Não utilizar apenas esta função.

 

A fim de minimizar o número de entradas das correcções "de revisão" anteriores, os defeitos anteriormente corrigidos não foram transferidos:

Defeitos na função/operação de classe do modelo:
(não corrigidos por MT5(build 2474)) *** Erro de Compilação, erro na tentativa de acesso à classe interna para parâmetro de função de modelo.
(não fixado por MT5(build 2474)) ** Erro de compilação, erro no valor de retorno de uma função de modelo quando o valor de retorno é uma classe interna dentro de uma classe de modelo cujo tipo de parâmetro é especificado pelo tipo de argumento da função de modelo.
(não fixado por MT5(build 2474)) ** Erro de compilação, espaço de nomes e erro de escopo no construtor de modelos quando se chama classe base quando o mesmo nome de classe é usado em herança e classe interna.
(não fixado por MT5(build 2474)) * Erro de Compilação, erro na chamada da função modelo com tipos de argumentos explícitos quando chamada de uma função não modelo sobrecarregada.
(não corrigido
por MT5(build 2474)) Erro de compilação, bug na definição de classe interna - nenhuma referência ao namespace global ao especificar uma classe base.
(não fixado por MT5(build 2474)) * Erro de Compilação, ao chamar a declaração de atribuição através da indicação explícita da classe base. O problema ocorre para uma classe modelo em que o parâmetro modelo actua como uma classe base.
(corrigido
por MT5(build 2474)) Erro de compilação, quando se utiliza um modificador de acesso por defeito para herança numa classe de modelo em que o parâmetro do modelo é uma classe base.
(fixado por MT5(build 2474)) * (novo) Compile Error, compilar erro ao herdar da classe modelo a partir do namespace.
(fixado por MT5(build 2474)) ** (novo) Erro de Compilação, operador por defeito= não é acedido a partir do objecto ponteiro.
(não fixado
por MT5(build 2474)) *** (novo)Compile Error, compilar erro para declaração prévia do método da classe modelo .
(
não fixado por MT5(build 2474)) ** (novo) Erro deCompilação quando a classe contém um ponteiro para uma classe de embalagem que usa a classe como um campo.


Defeitos relacionados com o desajuste de prioridades de chamadas de funções sobrecarregadas em MQL vs C++:
(não corrigido em MT5(build 2474)) ** Compile Error quando a primeira de funções de modelo sobrecarregadas utiliza uma classe base de modelo totalmente especializada e a segunda utiliza uma classe base de modelo não especializada.
(não fixado por MT5(build 2474)) ** Compile Error, ocorre um erro de compilação ao gerar o código de uma função de modelo, apesar de haver uma função de modelo sobrecarregada com uma assinatura adequada para os parâmetros passados.
(não fixado por MT5(build 2474)) * Erro de Compilação, "chamada ambígua para função sobrecarregada" quando funções de modelo sobrecarregadas com diferentes números de parâmetros de modelo são chamadas.

( não fixado por MT5(build 2474)) *** Erro de Compilação, erro ao chamar funções de modelo sobrecarregadas.
( não fixado por MT5(build 2474)) ** Compile Error, conversa de tipo implícito é utilizada quando se chama uma função para um argumento com a cor do tipo de dados, apesar de haver uma função de modelo sobrecarregada de assinatura correspondente com a cor do tipo de dados.
( não fixado por MT5(build 2474)) * Erro de compilação, apesar da especialização explícita quando a função de modelo sobrecarregada é chamada, a função de modelo é chamada por defeito de qualquer forma, o que leva ao transbordamento de pilha...
( não fixado por MT5(build 2474)) * Erro de Compilação, erro de compilação quando se chama uma função através do seu ponteiro quando se utiliza um conjunto de apontadores de funções.
( fixado por MT5(build 2474)) * (novo) Erro de Compilação, problemas com prioridade de chamadas de funções sobrecarregadas no namespace.

Bugs relacionados com MetaEditor:
(não corrigidos por ME5(build 2474)) *** Debugger, um ponto de ruptura nométodo de estruturaestática faz com que o terminal MT fique pendurado.
(não fixado em ME5(build 2474)) ** Compilação, descrição do erro de compilação não cabe no limite de 256 caracteres e é cortado, tornando assim impossível compreender para que tipo de dados é gerado o erro porque a peça necessária é cortada.
(fixado em ME5(build 2474)) ** Depurador, StepInto (F11) e definir pontos de paragem não funcionam.
(fixado em ME5(build 2474)) * Debuger, após ser accionado um ponto de interrupção em vez de continuar a execução do código pressionando (F5), o mesmo ponto de interrupção é efectivamente accionado novamente sem executar qualquer código.
(não fixado em ME5(build 2474)) * Compilação, assinatura incorrecta do modelo de parâmetro de função em Descrição de Erro e Informação de Parâmetro.
(não fixado em ME5(build 2474)) * MetaEditor, a funcionalidade Substituir (Strl + H) não funciona para activar "Em selecção" juntamente com "Direcção para trás" quando a parte necessária da aplicação é seleccionada, mas não todo o código.
(não fixado por ME5(build 2474)) * (novo) MetaEditor, desencadeando um ponto de quebra induz o utilizador a acreditar que uma condição de entrada foi cumprida, quando na realidade pode não o ser de todo.


Defeitos relacionados com a execução lenta de funções, optimizador de código:
(fixado por MT5(build 2474)) **(acima) Tempo de execução, grande sobrecarga ao adicionar um elemento de cada vez num array utilizando o ArrayResize, apesar de a memória para eles ter sido reservada com antecedência, por exemplo, as estruturas são até 7 vezes mais lentas.


Sugestões:
- adicionar à pesquisa/substituição ME por Projecto actual, enquanto que durante a refactoring, percorrer cada um dos ficheiros e procurar a ocorrência não é muito bom.
link- em ME na compilação para preencher colunas vazias File, Line, Column with appropriate information about the source file, from which was made include.
link- sobre a introdução do suporte intellisense para a funcionalidade namespace com base no trabalho intellisense para métodos estáticos em classes.
link- sobre o fornecimento da possibilidade de passar literais e variáveis temporárias como argumentos constantes ref de uma função.
link- sobre o fornecimento da possibilidade de forçar a geração deficheiros de projecto no separador "Projecto", para ficheiros movidos que são abertos e estão nos separadores ME, para actualizar automaticamente o seu caminho de localização.
link- sobre a necessidade de introduzir a funcionalidade de declaração typedef em MQL.
link- sobre o fornecimento da possibilidade de forçar a geração de construtores de cópias por defeito e operadores de atribuição.

 
Sergey Dzyublik :

A fimde minimizar o número de entradas da última "revisão" de correcções, os defeitos previamente corrigidos não foram transportados:
.
..

Está isto na sua lista? Caso contrário, poderia acrescentar isto, por favor.

Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos

Sintaxe MQL errada?

Dan Marinescu, 2020.05.27 22:47

Defini uma interface universal e quero utilizá-la noutra classe. Não consigo perceber o que está errado com este código:

 #property  strict

template < typename T> interface IGenericHandler {
     bool Handle(T &item);
};

#define  DOES_NOT_WORK

class GenericHandler {
     public :
#ifdef  DOES_NOT_WORK   
         template < typename T> bool Handle(T &val, IGenericHandler<T> *handler);
#else   
         template < typename T> bool Handle(T &val, IGenericHandler<T> *handler) { return false ; }
#endif        
 };

#ifdef  DOES_NOT_WORK
template < typename T> bool GenericHandler::Handle(T &val, IGenericHandler<T> *handler) { return false ; }
#endif 

Se DOES_NOT_WORK não estiver definido, tudo funciona. Mas quando DOES_NOT_WORK é definido, o compilador diz:

'Handle' - member function already defined with different parameters

Porquê?


 
Alain Verleyen:

Está isto na sua lista? Caso contrário, poderia acrescentar isto, por favor.

Obrigado pelo aditamento, sim há uma descrição deste problema na lista:
(não corrigido por MT5(build 2474)) *** (novo)CompileError,erro de compilação para declaração prévia do método da classe modelo.

 
Sergey Dzyublik :

Obrigado pelo acréscimo, sim há uma descrição deste problema na lista:
( não corrigido por MT5(build 2474)) *** (novo) Compile Error , sobre erro de compilação para declaração prévia do método de classe de modelo .

Óptimo, obrigado.