Características da linguagem mql5, subtilezas e técnicas - página 84
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Você pode fornecer o código de referência para demonstrar isso?
Resultado(Lançamento)
E isto é o que se obtém quando se corre em modo de perfil.
Infelizmente, não se pode confiar no profiler neste caso.
Resultado ( Lançamento )
HH E isto é o que eu recebo, se o correr em modo de perfil.
Não só é impossível confiar no profiler neste caso, como o Bench1 corre 10 vezes mais rápido do que no Release-version!
Obrigado por isso.
Resultado ( Lançamento )
Testado com o Expert Advisor por estratégia.
2018.04.16 14:24:28.049 Core 1 OnTester result 39725470 (µs bench1)
2018.04.16 14:26:14.629 Core 1 OnTester result 39270950 (µs bench2)
2018.04.16 14:27:13.566 Core 1 OnTester result 20467067 (µs bench3)
Mais 2 vezes mais rápido (mas não mais de 10 vezes mais rápido, o que certamente se deve à otimização do compilador).
Testado com um conselheiro de estratégia.
2018.04.16 14:24:28.049 Core 1 OnTester result 39725470 (µs bench1)
2018.04.16 14:26:14.629 Core 1 OnTester result 39270950 (µs bench2)
2018.04.16 14:27:13.566 Core 1 OnTester result 20467067 (µs bench3)
É 2 vezes mais rápido ainda (mas não mais de 10 vezes mais rápido, o que obviamente se deve à otimização do compilador).
Você mede o tempo ainda para gerar ticks, não apenas o cálculo do OnTick.
Aqui está apenas a medição OnTick
Bancada1
Bancada3
Por um factor de três. Você não pode obter 10 vezes mais rápido devido a múltiplas chamadas para a função BenchX. O próprio StringToDouble2 é de facto 10 vezes mais rápido.
Você mede o tempo ainda para gerar carrapatos, não apenas para calcular o OnTick.
...Tens razão.
Estou realmente surpreso que seja 10x mais rápido, mas a sua função só pode ser usada quando você sabe que a string contém um valor duplo válido.
2018.04.16 17: 14: 16.183 170952_180416 (EURUSD, H1) StringToDouble2 (abcdef) = 5456784.0
Obrigado, mas este script também salva incorretamente.
No meu monitor, a limitação do lado direito é marcada com uma linha vertical, e a imagem da tela está muito além dessa linha.
Vou citar a resposta do servicedesk:
Neste caso, a ajuda ChartScreenShot deve ser tomada literalmente
align_mode=ALIGN_RIGHT
[em] Modo de uma saída de tela estreita. O valor da enumeração ENUM_ALIGN_MODE. ALIGN_RIGHT indica alinhamento para a borda direita (saída do fim). ALIGN_LEFT especifica o alinhamento à esquerda.
Isso significa que quando você especifica o alinhamento ALIGN_RIGHT o gráfico será rolado à força para a borda direita, o que é equivalente a executar o comando
Este comportamento foi estabelecido há muitos anos (historicamente) quando ainda não existia a função ChartNavigate(). Definir align_mode=ALIGN_RIGHT garantiu que exatamente a borda direita do gráfico seria removida.
Quando a função ChartNavigate() foi adicionada, o comportamento da função ChartScreenShot não foi alterado.
Portanto, se você quiser obter o efeito desejado (o gráfico não será rolado para a borda direita), use o valor ALIGN_LEFT para o parâmetro align_mode.
a sua função só pode ser usada quando você sabe que a string contém um valor duplo válido.
2018.04.16 17: 14: 16.183 170952_180416 (EURUSD, H1) StringToDouble2 (abcdef) = 5456784.0
Corrigido, agora funciona como o original
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Características da linguagem mql5, subtilezas e truques
fxsaber, 2018.04.16 13:23
Se você remover a constante destacada, o tempo de execução da função irá dobrar. Isto mostra que o compilador nem sempre cria o código ideal e precisa deste tipo de dicas.
Se removermos a constante marcada, o tempo de execução da função irá duplicar. Ele indica que o compilador nem sempre cria um código ideal e precisa deste tipo de dicas.
Interessante, obrigado.
Por favor, não edite o seu código depois de já ter recebido uma resposta, não recebi a notificação de que o actualizou.
Se removermos a constante marcada, o tempo de execução da função irá duplicar. Ele indica que o compilador nem sempre cria um código ideal e precisa deste tipo de dicas.
Muito interessante...
Alguma ideia sobre o porquê de isto acontecer?
Qual é o mecanismo?
Para determinar a largura de uma imagem tirada com MQL5 que incluiria todas as barras por um determinado período, é oferecida a solução abaixo.
Uma peculiaridade acabou por ser o facto de a largura da imagem da tela ter de ser corrigida em diferentes aproximações do gráfico.
Os "coeficientes" reais revelaram-se diferentes (para mim especificamente) para a variante com e sem a escala.