Implementações alternativas de funções/abordagens padrão - página 2

 
Renat Fatkhullin:

Até 2016, a maioria dos compiladores C++ chegou aos mesmos níveis de otimização.

A MSVC faz uma pergunta sobre as melhorias a cada atualização, e a Intel C++ como um compilador se fundiu - ainda não se recuperou de seu "erro interno" em grandes projetos.

Outra de nossas melhorias no compilador na construção do 1400 é que ele é mais rápido na compilação de projetos complexos.

Se não fosse por este diálogo, provavelmente não teríamos sabido disso. Mais informações sobre o grande trabalho que você está fazendo seriam apreciadas.
 
fxsaber:

Sobre o assunto. Você tem que criar alternativas para as funções padrão, porque elas às vezes lhe dão o resultado errado. Aqui está um exemplo de alternativa SymbolInfoTick

Você pode chamar a SymbolInfoTick em cada evento NewTick no campo de teste e resumir o volume do campo de teste para saber a rotatividade do estoque. Mas não, você não pode! Tenho que fazer o MySymbolInfoDouble muito mais lógico.

Bem-vindo à programação, onde você é o criador!

Nós lhe oferecemos a ferramenta mais completa, onde você pode fazer o que quiser.

 
Renat Fatkhullin:

Você pode otimizar tudo ao seu redor.

É um processo interminável. Mas 99% das vezes não é economicamente viável.

Não estamos falando aqui de otimização, mas de trazer a antiga função para as novas realidades. Claro, você não poderia ter escrito NormalizeDouble de forma alguma. E as pessoas teriam feito sua própria variante. Mas você o criou para economizar tempo. Agora não tem sido suficiente. E seria bom consertar a velha bicicleta para satisfazer as mesmas ferramentas de estoque.
 
fxsaber:
Não se trata de otimização, mas de trazer a antiga função para a nova realidade. É evidente que você não poderia ter escrito NormalizeDouble de forma alguma. E as pessoas teriam feito sua própria variante. Mas você o criou para economizar tempo. Agora não tem sido suficiente. E seria bom consertar a velha bicicleta para satisfazer as mesmas ferramentas de estoque.
Obrigado, vamos verificar e ver se podemos mudar a biblioteca.
 

A propósito, não há muito tempo @iliyas sugeriu inserir muitas funções do sistema em tempo de compilação como código fonte MQL5, para que eles pudessem participar da definição e otimização máxima.

No início não apreciei a idéia, mas agora vejo que seria brilhante. O mesmo MSVC o faz.

 
Renat Fatkhullin:
Obrigado, vamos verificar e ver se podemos mudar a biblioteca.

Você entendeu mal. Não bibliotecas, mas NormalizeDuplo. Para acrescentar uma sobrecarga.

double NormalizeDouble( double Value, double TickSize );

Para normalizar preços e lotes quando TickSize = 25, VolumeStep = 0,5

Por exemplo, a normalização ficaria assim

NormalizeDouble(Price, 0.00001) // Нормализация до пятого знака
NormalizeDouble(Price, 10.0) // Нормализация цены для RTS-9.16
NormalizeDouble(Price, 25.0) // Нормализация цены для MIX-9.16
 
Renat Fatkhullin:

A propósito, não há muito tempo @iliyas sugeriu inserir muitas funções do sistema em tempo de compilação como códigos-fonte MQL5, para que eles pudessem participar da definição e maximizar a otimização.

Eu não apreciei a idéia de imediato, mas agora vejo que seria ótimo. O mesmo MSVC o faz.

Acontece que a #import ex5 é o mal da otimização.

Por favor, preste atenção às características do pré-processador

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

Como faço para passar a enumeração seqüencialmente?

Alexey Navoykov, 2016.09.01 23:20

Já implementei o princípio acima na MQL5, porque as macros têm um número fixo de argumentos e o número de argumentos é limitado a 8. Portanto, eu tenho apenas 3 valores para enumerar.

Quanto à aparência teórica, é provavelmente mais rápido criar uma função interna para analisar a enumeração. Os desenvolvedores já prometeram criar algo.


Acontece que podem ser criadas construções muito astuciosas e fáceis de usar.

 
fxsaber:

Você entendeu mal. Não bibliotecas, mas NormalizeDuplo. Para acrescentar uma sobrecarga.

Para normalizar preços e lotes quando TickSize = 25, VolumeStep = 0,5

Por exemplo, a normalização ficaria assim

Não se pode sobrecarregar desta maneira. As mesmas assinaturas de função.

Mas a idéia é clara - a função da normalização levando em conta a granulação do carrapato.

 
Renat Fatkhullin:

Não se pode sobrecarregar desta maneira. As mesmas assinaturas de função.

Não parece haver aí nenhum problema. Em uma variação, o segundo parâmetro é int (foi), no outro é duplo (aparecerá).

Mas a idéia é clara - a função de normalização levando em conta a granulação do carrapato.

Exatamente!
 

fxsaber

Há um erro em seu código

Razão: