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

 
Nikolai Semko:

É muito interessante...
Tens alguma ideia do porquê de acontecer desta maneira?

Qual é o mecanismo?

É difícil dizer exactamente. Quando você sabe com antecedência que uma variável não vai mudar, você pode encontrar uma maneira mais elegante de armazená-la, resolver loops e outras otimizações do compilador.

Portanto, eu recomendaria que você usasse const tanto quanto possível não só para auto-verificação mas também para o compilador.

 
fxsaber:

É difícil dizer com certeza. Quando você sabe de antemão que a variável não vai mudar, você pode encontrar uma maneira mais elegante de armazená-la, descobrindo ciclos e outras otimizações de compilação.

Portanto, eu recomendaria não só para auto-monitoramento, mas também para o compilador usar constância tanto quanto possível.

Você verificou as outras funções do StringXXX? Talvez sejam todos lentos: -D
 
Alain Verleyen:
Você já verificou as outras funções do StringXXX? Talvez sejam todos lentos: -D

Eu não o fiz. Eu precisava dele para isso.

Скрипты: ThirdPartyTicks
Скрипты: ThirdPartyTicks
  • 2018.04.11
  • www.mql5.com
ThirdPartyTicks: Автор: fxsaber...
 

fxsaber:

void OnStart()
{  
  const string Str = "123.456";
  
  BENCH(Print(Bench1(1 e7, Str)));
  BENCH(Print(Bench2(1 e7, Str)));
  BENCH(Print(Bench3(1 e7, Str)));
}

Resultado(Release).

1234559999.924436
Time[Print(Bench1(1 e7,Str))] = 1656182
1234559999.924436
Time[Print(Bench2(1 e7,Str))] = 1639179
1234559999.924436
Time[Print(Bench3(1 e7,Str))] = 147382

Como é, estes testes não são muito objetivos devido à habilidade do compilador em otimizar tal código. Você tem uma e a mesma string sendo analisada várias vezes, enquanto você precisa analisar uma string diferente a cada iteração

 
Alexey Navoykov:

Como é, estes testes não são muito objetivos devido à capacidade do compilador de otimizar tal código. Você tem uma e a mesma string sendo analisada várias vezes, enquanto você precisa analisar diferentes strings a cada iteração.

Eu considerei esta circunstância, mas não dei um código mais pesado. Tem o mesmo resultado.

 

Eu vou duplicar aqui, perdeu-se.

Fórum sobre Trading, Sistemas Automatizados de Trading e Testes de Estratégia

FAQ de Iniciantes MQL5 MT5 MetaTrader 5

Vitaly Muzichenko, 2018.04.18 14:54

Você pode me dizer, após o teste em modo de múltiplas moedas no testador vemos apenas o resultado ..., no entanto, não vemos nada além do resultado geral.

Em algum lugar eu encontrei em um artigo ou em kodobase um código que mostra os resultados para cada símbolo separadamente. Quem sabe o quê sobre isso?

 
Vitaly Muzichenko:

Vou duplicá-lo aqui, deve ter-se perdido lá.

https://www.mql5.com/ru/articles/4562

Работаем с результатами оптимизации через графический интерфейс
Работаем с результатами оптимизации через графический интерфейс
  • 2018.04.05
  • Anatoli Kazharski
  • www.mql5.com
Продолжаем развивать тему обработки и анализа результатов оптимизации. В предыдущей статье было показано, как визуализировать результаты оптимизации через графический интерфейс MQL5-приложения. На этот раз усложним задачу: выберем  100 лучших результатов оптимизации и отобразим их в таблице графического интерфейса.  Кроме этого, продолжим...
 

Encontrei isto, mas é um pouco diferente.

Obrigado!

 

Fórum sobre negociação, sistemas de negociação automatizados e testes de estratégia de negociação

Lançada a versão beta do MetaTrader 5 build 1795 em MetaQuotes-Demo

fxsaber, 2018.04.24 09:37

Testador
TESTER_EURUSD : real ticks begin from 2018.04.02 00:00:00
TESTER_EURUSD : 2018.04.03 00:00 - 2018.04.24 00:00  last prices absent for 15 whole days, bars built by bid prices
final balance 10000000.00 USD
OnTester result 203343
TESTER_EURUSD,M1: 1407448 ticks, 21591 bars generated. Environment synchronized in 0:00:00.172. Test passed in 0:00:00.905 (including ticks preprocessing 0:00:00.203).


O que o último preço tem a ver com o símbolo com estas configurações?

Você precisa zerar SYMBOL_TICKS_BOOKDEPTH, caso contrário (na captura de tela = 9) o testador vai esperar o último preço (mesmo que não haja nenhum) como acima no post.

Por isso, depois de "Copiar de:" mantenha-se atento a este parâmetro.
 
Vi-o no SB, não sabia que era uma possibilidade
template <typename T>
struct TMP
{
  T Tmp;
};

TMP<int>Var; // Между типом и названием переменной нет пробела