(Parêntesis de agradecimento, se estiver sem tempo, pule para o parágrafo seguinte)
Oi amigos! Primeiramente gostaria de agradecer a toda a ajuda que recebi aqui no fórum, acabei de concluir meu primeiro EA. Falta agora testar mais um pouco, consertar possíveis bugs, mas já posso começar a utilizar. Foram milhares de linha de código e muito do que utilizei nele aprendi por aqui com as contribuições dos colegas.
Notei que os cálculos ficam bagunçados no meu EA se eu troco de timeframe. Existiria a possibilidade de chamar OnDeinit e posteriormente OnInit quando o usuário trocar de Timeframe? Assim daria um "refresh" em todos os cálculos e seria a mesma coisa que retirar o EA, trocar o timeframe e colocá-lo novamente.
Obrigado pela atenção, um abraço!
Não. Entrará em loop infinito.
O MQL5 apesar de ser derivado do C++ é uma versão bem castrada, com vários buracos.
Você terá que estruturar muito bem seu OnInit() para que você minimize esses efeitos... A pergunta é: por quê seu EA precisa trocar de TF? Isso é bem perigoso, porque a maneira assíncrona como o MQL5 trabalha muitas vezes atrapalha tudo, principalmente porque faltam vários "hooks" na linguagem, aí fica na esperança e adivinhação e código macarrônico só para resolver essas deficiências...
;)
(Parêntesis de agradecimento, se estiver sem tempo, pule para o parágrafo seguinte)
Oi amigos! Primeiramente gostaria de agradecer a toda a ajuda que recebi aqui no fórum, acabei de concluir meu primeiro EA. Falta agora testar mais um pouco, consertar possíveis bugs, mas já posso começar a utilizar. Foram milhares de linha de código e muito do que utilizei nele aprendi por aqui com as contribuições dos colegas.
Notei que os cálculos ficam bagunçados no meu EA se eu troco de timeframe. Existiria a possibilidade de chamar OnDeinit e posteriormente OnInit quando o usuário trocar de Timeframe? Assim daria um "refresh" em todos os cálculos e seria a mesma coisa que retirar o EA, trocar o timeframe e colocá-lo novamente.
Obrigado pela atenção, um abraço!
Olá Israel,
isso já acontece qdo. o TF é alterado, leia a documentação. Porém tem um porém, você deve programar o ajuste inicial de todas as variáveis dentro do OnInit, pois a mudança de TF e de parâmetros não reiniciam as variáveis para o valor de compilação, as variáveis permanecem com seus valores antes do DeInit ( semelhante a uma variável static ). Ou seja o "refresh" tem que estar programado.
Não. Entrará em loop infinito.
O MQL5 apesar de ser derivado do C++ é uma versão bem castrada, com vários buracos.
Você terá que estruturar muito bem seu OnInit() para que você minimize esses efeitos... A pergunta é: por quê seu EA precisa trocar de TF? Isso é bem perigoso, porque a maneira assíncrona como o MQL5 trabalha muitas vezes atrapalha tudo, principalmente porque faltam vários "hooks" na linguagem, aí fica na esperança e adivinhação e código macarrônico só para resolver essas deficiências...
;)
Pois é, estou cutucando o limite da linguagem, acredito... Percebi isso também com algumas funções. Mas vida que segue, estou satisfeito com meu EA, embora não dê para fazer absolutamente tudo.
Olá Israel,
isso já acontece qdo. o TF é alterado, leia a documentação. Porém tem um porém, você deve programar o ajuste inicial de todas as variáveis dentro do OnInit, pois a mudança de TF e de parâmetros não reiniciam as variáveis para o valor de compilação, as variáveis permanecem com seus valores antes do DeInit ( semelhante a uma variável static ). Ou seja o "refresh" tem que estar programado.
Imaginei que essa seria a única solução. No entanto alguns códigos realmente não podem ser calculados no OnInit (meu EA é realmente diferente na questão do tempo e muito dependente de OnTimer). Enfim, acho que vou ter de avisar o usuário para não trocar de TF com o robô ligado.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
(Parêntesis de agradecimento, se estiver sem tempo, pule para o parágrafo seguinte)
Oi amigos! Primeiramente gostaria de agradecer a toda a ajuda que recebi aqui no fórum, acabei de concluir meu primeiro EA. Falta agora testar mais um pouco, consertar possíveis bugs, mas já posso começar a utilizar. Foram milhares de linha de código e muito do que utilizei nele aprendi por aqui com as contribuições dos colegas.
Notei que os cálculos ficam bagunçados no meu EA se eu troco de timeframe. Existiria a possibilidade de chamar OnDeinit e posteriormente OnInit quando o usuário trocar de Timeframe? Assim daria um "refresh" em todos os cálculos e seria a mesma coisa que retirar o EA, trocar o timeframe e colocá-lo novamente.
Obrigado pela atenção, um abraço!