Erros, bugs, perguntas - página 2879
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Voltei a trabalhá-lo um pouco
(é melhor não usar uma macro dessa forma ;)
Voltei a trabalhá-lo um pouco
(por isso é melhor não usar macro ;)
Ao testar, confundo o código tanto quanto possível para evitar que o optimizador deita fora os loops vazios
tem
// for(int i = 0; i < 5; i++) sum += u.param[i];
A optimização da execução do MQL pode terminar o primeiro laço antes, uma vez que os valores calculados não são utilizados, pelo que algo deve ser feito após o SpeedTest() com os resultados - este laço
verifiquei-o com o laço comentado, não o deitei fora, mas no outro teste posso cair
macro é uma questão de gosto, já o testei muitas vezes e funciona, não vejo o interesse de escrever a mesma coisa à mão
UPD: encontrei onde li como funcionam agora os compiladores modernos, bastante informativos
https://habr.com/ru/post/431688/
https://habr.com/ru/post/47878/
o código dá o valor iRSI das pegas e tps sempre apenas 10, mas os preços e o gráfico também mudam.
iRSI(_Símbolo,PERÍODO_H1,14,PREÇO_CLOSE)
construir 2652
o código dá o valor iRSI das pegas e tp é sempre apenas 10, mas os preços e gráficos também mudam.
iRSI(_Símbolo,PERÍODO_H1,14,PREÇO_CLOSE)
construir 2652
Tem o cabo indicador, é 10
A seguir, precisa de obter os valores na barra certa
Leia a ajuda, ou procure respostas no fórum - elas são muitas
Tem o cabo indicador, é 10
A seguir, precisa de obter os valores na barra certa
Leia a ajuda, ou procure respostas no fórum - há muitas delas
Já está. Vou estudar os amortecedores. É estranho, tive a sensação de que tudo funciona como está, talvez o tenha confundido com mql4.
O estranho é que eu pesquisei no Google e não consegui encontrá-lo em mql5 para obter os dados do indicador.
Aha, de acordo com o seu exemplo, como eu entendi o valor do indicador RSI está no final numa variável da seguinte forma
verificado:
2020.10.15 21:48:01.401 SpeedTst (EURUSD,H1) tst 1 : : : loops=10000000000 ms=10864370
2020.10.15 21:48:12.264 SpeedTst (EURUSD,H1) tst 2 : : : loops=10000000000 ms=10862287
a diferença não é significativa, é altamente provável que se mudarmos os testes na ordem oposta, os resultados sejam o oposto
não crítico
dificilmente é correcto incluir rand() no teste, uma vez que esta função consome muito mais recursos do que outros comandos.
Penso que este seria um teste mais correcto:
Resultado:
Felizmente, afinal de contas, meti-me no cavalo errado. Os sindicatos são um pouco mais rápidos. São mais convenientes para trabalhar com eles e o código é mais legível.
dificilmente é correcto incluir rand() no teste, uma vez que esta função é uma ordem de magnitude mais intensiva em termos de recursos do que os outros comandos.
não é nada crítico
rand() o tempo de execução é constante, muito provavelmente é uma função C++ comum, google "rand c++ source code".
deve inicializá-lo, mas se o inicializar com constantes pode encontrar optimização
em geral, não compreendo a antipatia do rand()
uma opção é inicializar com algo como isto:
seria rápido.
correu o seu guião, imho não está correcto.
O tempo principal é carregar o código na cache e depois no processador
e acrescentar a discrição do temporizador do sistema
obtemos... quase um número aleatório.
precisa de o testar durante muito tempo, cerca de 100500 vezes, imho
É pouco provável que seja correcto incluir rand() no teste, uma vez que esta função consome uma ordem de magnitude de mais recursos do que os outros comandos.
Penso que este seria um teste mais correcto:
Resultado:
Felizmente, continuo a apostar no cavalo errado. Os sindicatos são um pouco mais rápidos. São mais convenientes para trabalhar com eles, e o código é mais legível.
Uma vez por uma vez, e à distância da primeira vitória, (como se o primeiro método tivesse removido a linha de conversão do curto para algo)
não é nada crítico
rand() o tempo de execução é constante, muito provavelmente é uma função C++ comum, google "rand c++ source code".
deve inicializá-lo, mas se o inicializar com constantes pode encontrar optimização
em geral, não compreendo a antipatia do rand()
como uma variante para inicializar com algo como isto:
será rápidoA questão era que se devia medir exactamente o que se precisava de medir, sem qualquer coisa estranha.
O objectivo era medir exactamente o que é necessário, sem extras
não
Se houver repetição de fragmentos de código, receberá testes de optimização!
Que diferença faz quanto tempo rand() é executado?
deixar ser executado 2/3 do tempo do teste, o principal é que o tempo rand() deve ser constante
O seu código MQL irá utilizar as funções do sistema MQL, certo? - qual é o objectivo de testar um código perfeito?