Características da linguagem mql5, subtilezas e técnicas - página 193

 
fxsaber:

Absolutamente todas as regras são artificiais.

Concordo. A questão é o nível de arte :)

 

Por favor aconselhe - se utilizar um indicador personalizado que tem muitos (digamos, 50) parâmetros, quais são as melhores formas de gerir os parâmetros do indicador? (excepto a transferência directa de parâmetros de um indicador para pares de peritos, aqui tudo é claro)

Encontrei o uso de *.set file loading no código de outra pessoa ao ligar para o iCustom, mas não encontrei nada desse tipo e parece que não funciona no teste.

Talvez alguém saiba e existam alguns truques não documentados?

 

O último release build é 2650. Não há problema em que um guião como este não seja compilado:

struct A_INFO
{
  int a;
};

bool operator<(const A_INFO &First,const A_INFO &Second) //operator< has invalid parameters count
{
  return First.a<Second.a;
}

void OnStart()
{
}

E isto é normal:

struct A_INFO
{
  int a;
};

bool operator<(const A_INFO &First)
{
  return true;
}

void OnStart()
{
}

Está à espera que eu compare 1 valor? Ou porque é que o operador não pode ser transformado numaestrutura de não-membros?

 
E uma segunda pergunta complementar. Porque é que o ArraySort não pode ser aplicado a uma série de estruturas deste tipo? O que os impede de serem comparados utilizando o < operador, que é definido?
 
traveller00:

Espera que eu compare 1 valor?

O segundo valor (aquele à esquerda do operador) é este.

 
fxsaber:

O segundo valor (o que se encontra à esquerda do operador) é este.

Porquê isto se não fiz do operador um membro da estrutura, mas global? Ou não posso torná-lo global? C++ comporta-se de forma diferente.

 
traveller00:

Porquê isto, se fiz a declaração globalmente e não como membro de uma estrutura? Ou não o posso fazer globalmente? C++ comporta-se de forma diferente.

Não sei nada sobre tais operadores.

 
traveller00:
E a segunda pergunta que tenho sobre o seguimento. Porque é que o ArraySort não pode ser aplicado a uma série de estruturas deste tipo? O que os impede de comparar através do operador < que é definido?

O ArraySort incorporado é apenas uma função, sobrecarregada para todos os tipos padrão.

As aulas e outros OOP são uma ajuda. Se todos os tipos (estruturas) tivessem um antepassado comum(CObject em SB) e assim por diante...

 
Aleksey Mavrin:

O ArraySort incorporado é apenas uma função, sobrecarregada para todos os tipos padrão.

As aulas e outros OOP são uma ajuda. Se todos os tipos (estruturas) tivessem um antepassado comum (CObject em SB) e assim por diante...

Sim, tenho uma ideia aproximada de como se faz no interior. A pergunta não foi, de preferência, para uma resposta. Mas como sugestão para prestar atenção a outras variantes de implementação, e.g. STL, e para manusear recipientes de forma semelhante, onde podemos escrever coisas universais, incluindo classificadores.

 
traveller00:

Tenho uma ideia aproximada de como se faz no interior. A pergunta não foi feita para obter uma resposta. Mas como sugestão para prestar atenção a outras variantes de implementação, por exemplo STL, e para fazer um trabalho semelhante com recipientes, onde podemos escrever coisas universais, incluindo classificadores.

Sem dúvida, STL) Embora o ArraySort possa ser sobrecarregado ao torná-lo baseado em modelos e depois usá-lo, mas não sou especialista em modelos, estou habituado a trabalhar com hierarquias de classes simples.