Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 846
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
Eu tenho GetLastError depois das funções e se ocorrer um erro, ele não irá para este bloco (como escrito) e os comandos não serão executados? Entendo a corrente, por exemplo, OrderSend() -> GetLastError -> error block Sleep(3000) RefreshRates() -> sair do bloco e se as condições permanecerem OrderSend() é solicitado novamente. Ou meu raciocínio e meus conceitos estão errados. Entendo que você queira escrever o valor de retorno 1 ou 0 no bloco, mas minhas funções são simples não relacionadas a valores booleanos como SignalBuy, se eu entendi corretamente, os valores de retorno devem ser devolvidos lá.
Eu tenho GetLastError depois das funções e se ocorrer um erro, ele não irá para este bloco (como escrito) e os comandos não serão executados? Entendo a corrente, por exemplo, OrderSend() -> GetLastError -> error block Sleep(3000) RefreshRates() -> sair do bloco e se as condições permanecerem OrderSend() é solicitado novamente. Ou meu raciocínio e meus conceitos estão errados. Entendo que você queira escrever o valor de retorno 1 ou 0 no bloco, mas minhas funções são simples não relacionadas a valores booleanos como SignalBuy, se eu entendi corretamente, os valores de retorno devem ser devolvidos lá.
Preciso de alguns conselhos. De acordo com as condições, a posição deve ser fechada e após 121 segundos uma nova posição deve ser aberta. Como posso fazer isso com o Sleep(121000)?
Bom dia!
Preciso de alguns conselhos. De acordo com as condições, a posição deve ser fechada e após 121 segundos uma nova posição deve ser aberta. Como posso fazer isso com o Sleep(121000)?
OnTimer() para o resgate
Eu acabei de reinstalar o Windows 7 e queria instalar o Mt4, o problema é que os arquivos não são baixados, o que devo fazer?
Obrigado! Eu nunca usei OnTimer(). Esta parte do código está vazia OnTick(). Então a função OpenPosition() será tratada por OnTimer()? Se você puder, por favor, corrija o código como inserir o OnTimer() lá corretamente...
O temporizador é iniciado no OnInit()
Para iniciar a contagem regressiva, você precisa encontrar o tempo de fechamento da última posição no timer e contar 121 sukunds a partir deste tempo. Para passar a bandeira permitindo abrir uma nova posição, use uma variável global cujo escopo abranja todo o programa. Você pode fazê-lo conter inicialmente um valor superior a 121, por exemplo 122 (você pode alterar o tempo de espera nas configurações).
Em OnTick(), verifique esta variável. Se for maior que 121 e não houver posição, você abre uma posição e, após verificar se foi aberta com sucesso, zera a variável para zero.
Assim que a posição é fechada, o temporizador vê o tempo de fechamento (faz isto continuamente uma vez por segundo) e se a partir do tempo atual até o tempo de fechamento da posição passou menos de 121 segundos, o temporizador começa a contar - a cada segundo o valor variável é adicionado por 1.
Aproximadamente assim. Onde pode haver um bug - se a posição ainda não tiver sido fechada, seu tempo de fechamento é igual a zero. Isto pode causar um problema ao iniciar a contagem regressiva. Você poderia redefinir a variável para -1, por exemplo.
Sim, não se esqueça de destruir o temporizador no OnDeinit():
O temporizador é iniciado no OnInit()
Para iniciar a contagem regressiva, você precisa encontrar o tempo no temporizador quando a última posição foi fechada e contar 121 segundos a partir desse tempo. Para passar a bandeira permitindo a abertura de uma nova posição, use uma variável global que seja escalável por todo o programa. Você pode fazê-lo conter inicialmente um valor superior a 121, por exemplo, 122 (você pode alterar o tempo de espera nas configurações).
Em OnTick() você verifica esta variável. Se for maior que 121 e não houver posição - abrir uma posição - e, após verificar se foi aberta com sucesso, zerar a variável para zero.
Assim que a posição é fechada, o temporizador vê o tempo de fechamento (faz isto continuamente uma vez por segundo) e se a partir do tempo atual até o tempo de fechamento da posição passou menos de 121 segundos, o temporizador começa a contar - a cada segundo o valor variável é adicionado por 1.
Aproximadamente assim. Onde pode haver um bug - se a posição ainda não tiver sido fechada, seu tempo de fechamento é igual a zero. Isto pode causar um problema ao iniciar a contagem regressiva. Você poderia redefinir a variável para -1, por exemplo.
Sim, não se esqueça de destruir o temporizador no OnDeinit():
Entendi, obrigado. Eu esperava fazê-lo em uma linha, mas provavelmente terei que trabalhar um pouco mais.
Estou vendo, obrigado. Eu esperava fazer isso em uma linha, mas acho que vai ser preciso mais trabalho.