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
A suposição inteligente é que a transferência deve ser feita imediatamente, sem executar o resto do código. Certo?
Mas na verdade o TesterStop() não pára o teste de forma alguma!
Espera-se que, se for necessário interromper a execução do código, basta escrever de volta e não haverá mais execução. TesterStop(), bem como ExpertRemove()
E a segunda falha observada é que
tester_stop = false;
não está de modo algum no lugar.
É suposto ser inteligente, se você precisar parar mais a execução do código, basta escrever de volta e não haverá mais execução. TesterStop() bem como ExpertRemove()
E o segundo erro que notamos é que
não está de modo algum no lugar.
O próximo evento é OnTick() ?
Para onde a OnTick() sai?
Por que está fora de lugar? Era esperado que se o TesterStop() fosse acionado, a execução não chegaria a esta linha.
O próximo evento é OnTick() ?
De onde a OnTick() tira a saída?
Por que isso não está em vigor? Era esperado que se o TesterStop() fosse acionado, a execução não chegaria a esta linha.
Onde sair e o que continuar é com o desenvolvedor.
A bandeira tester_stop neste código será falsa, independentemente de TesterStop() ser ou não executada
Aonde ir e o que continuar depende do desenvolvedor.
Neste código, a bandeira tester_stop_stop levará a falso independentemente de TesterStop() ser ou não executado
Eu já tenho isso))))
A questão é: o que fazer? Como interromper o teste? Para ser específico. Os desenvolvedores quase juram quando usamINIT_PARAMETERS_INCORRECT no OnInit() e isso elimina a genética.
Encontrei uma saída e não tive problemas até recentemente. E agora ... Oh, querido ))))
E ainda assim, onde posso sair da OnTick()?
Eu já entendi isso))))
A questão é: o que fazer? Como faço para parar o teste? Para ser específico. Os desenvolvedores quase juram quando usamINIT_PARAMETERS_INCORRECT no OnInit() e isso elimina a genética.
Encontrei uma saída, mas não tivemos problemas recentemente. E agora ... Oh, querido ))))
Bem, se você entender qual é o problema?
Todo código, após a execução do TesterStop, não será executado. Ou seja, deixará de funcionar imediatamente. Indo mais longe, podemos ajustar a bandeira tester_stop...
Outra pergunta: Qual é este número? Menos nove é uma tentativa de obter alguma dor adicional? É aí que a coisa fica realmente feia...
Bem, se você entender qual é o problema que resta?
Todo código, após a execução do TesterStop, não será executado. Em outras palavras, ele parará imediatamente de funcionar. A partir daí, podemos regular usando a bandeira tester_stop...
Outra pergunta: Qual é este número? Menos nove é uma tentativa de obter alguma dor adicional? É aí que a coisa fica realmente feia...
Menos nove é para determinar que a saída foi exatamente por TesterStop(). Uso-o apenas como um substituto paraINIT_PARAMETERS_INCORRECT. É por isso que não preciso de tudo mais depois disso. Mas o que acontece agora é que o código inteiro é executado e o programador recebe a divisão por erro zero. Claro, se um array tiver tamanho 1, o valor do último menos o valor do primeiro será sempre zero! E eu mesmo não tinha feito seguro contra este vírus, ou, oh, com licença, mal-entendido.
Eu tentei inserir retorno... Apenas um pouco errado )))) :
Acabei por ficar com:
Simplesmente fantástico ))))
Muito OBRIGADO!!!
Menos nove é para determinar que a saída foi exatamente por TesterStop(). Uso-o apenas como um substituto paraINIT_PARAMETERS_INCORRECT. É por isso que não preciso de tudo mais depois disso. Mas o que acontece agora é que o código inteiro é executado e o programador recebe a divisão por erro zero. Claro, se uma matriz tiver tamanho 1, o valor da segunda menos o valor da primeira será sempre zero! E eu mesmo não tinha feito seguro contra este vírus, ou, oh, com licença, mal-entendido.
Eu tentei inserir retorno... Apenas um pouco errado )))) :
Acabei por ficar com:
Simplesmente fantástico ))))
UM IMENSO OBRIGADO!!!
Obrigado, eu já entendi isso. Mas isso não resolve o problema. Pode ser resolvido tanto pela constanteMQL_TESTER_STOP, como pela mudança do valor de retorno de vazio para bool.
Uma solução inesperada foi sugerida porAlexey Viktorov: se o retorno for usado após o TesterStop(), tudo parece estar bem. Como e por que isso acontece, eu pessoalmente não consigo descobrir. No entanto...
Portanto, ou acrescente este ponto à documentação ou mude ovazio para bool.
P.S. Eu encontrei este problema na construção 2085. Antes disso, não havia nenhum problema. Isso me diz alguma coisa? )))
Sergey, não há nada de inesperado nisto. Pelo contrário, é lógico e consistente. Há casos diferentes. Às vezes você tem que terminar de processar o evento antes que o Expert Advisor esteja terminado, e às vezes, como no seu caso, você tem que terminá-lo imediatamente. Os desenvolvedores são confrontados com a pergunta, qual é a coisa certa a fazer, parar imediatamente, causando descontentamento daqueles que precisam terminar de processar o evento, ou parar após a conclusão do processamento do evento. Qualquer programador tem um operador de retorno em seu arsenal, enquanto não há nada em caso de rescisão forçada.
E por que você precisa mudar o tipo de vazio no bool, porque novamente, no arsenal do programador há variáveis estáticas que podem ser alteradas antes ou depois do TesterStop (), e em princípio, tudo será como você quiser. E você o deixou de fora do meu exemplo por alguma razão.
Sergey, não há nada de inesperado nisso. Pelo contrário, tudo é lógico e consistente. Há casos diferentes. Às vezes você tem que terminar de processar o evento antes que o Expert Advisor esteja terminado, e às vezes, como no seu caso, você tem que terminá-lo imediatamente. Os desenvolvedores são confrontados com a pergunta, qual é a coisa certa a fazer, parar imediatamente, causando descontentamento daqueles que precisam terminar de processar o evento, ou parar após a conclusão do processamento do evento. Qualquer programador tem um operador de retorno em seu arsenal, enquanto não há nada em caso de rescisão forçada.
E por que você precisa mudar o tipo de vazio no bool, porque novamente, no arsenal do programador existem variáveis estáticas que podem ser alteradas antes ou depois do TesterStop (), e em princípio, tudo será como você quiser. E você o deixou de fora do meu exemplo por alguma razão.
Alexey, muito obrigado por sua ajuda.
Entendo o problema que os desenvolvedores enfrentam e é por isso que estou sugerindo tal solução. A fim de poder reagir corretamente à situação.
Quanto às variáveis estáticas e seu exemplo, que eu "joguei fora"... Desculpe, mas não entendo bem do que estamos falando. Explique-me isso, se não se importa.
E pedir alguma indulgência e paciência. Tenho uma situação de vida muito ruim que pode me deixar muito irritável (estou ciente disso, mas não posso fazer nada a respeito) e desatento.
Eu simplesmente não estou entendendo nada. Minha cabeça está girando...
Aqui está um exemplo:
Meu código mostra que se o valor da última matriz menos o valor da primeira matriz for zero inicial, o resultado deve ser -999999999999999.88.
Mas durante a otimização eu obtenho este resultado:
9587 - 10000 não é de forma alguma igual a zero e o resultado é -99999999999999999.88. Como?!?!? Já estou a ficar pendurado...
Alexey, muito obrigado por sua ajuda.
Entendo o problema que os desenvolvedores enfrentam e é por isso que estou sugerindo tal solução. Ser capaz de reagir corretamente à situação.
Quanto às variáveis estáticas e seu exemplo, que eu "joguei fora"... Desculpe, mas não entendo bem do que estamos falando. Explique-me isso, se não se importa.
E pedir alguma indulgência e paciência. Tenho uma situação de vida muito ruim que pode me deixar muito irritável (estou ciente disso, mas não posso fazer nada a respeito) e desatento.
Eu simplesmente não estou entendendo nada. Minha cabeça está girando...
Aqui está um exemplo:
Meu código mostra que se o último valor da matriz menos o primeiro valor da matriz for zero inicial, o resultado deve ser -999999999999999.88.
Mas durante a otimização eu obtenho este resultado:
9587 - 10000 não é de forma alguma igual a zero e o resultado é -99999999999999999.88. Como?!?!? Estou a ficar pendurado...
Não sei se é bom ou ruim, mas nunca entro no código inteiro, por isso estava falando de uma variável estática. E a julgar pelo fato de que a bandeira tester_stop é usada em diferentes partes do programa, esta bandeira deve ser declarada no nível das variáveis globais.
Confirma que você "jogou fora" injustificadamente mudando o valor da bandeira a partir do meu exemplo.
Este é o uso de
if(tester_stop) return(-99999999999.99);
E aparentemente esta bandeira ou não muda em nada, ou não muda porque a mudança não é fornecida onde deveria estar.
s vezes é necessário encerrar o processamento de eventos antes que o assessor termine.
Qualquer programador tem o operador de retorno em seu arsenal, enquanto não há nada na rescisão forçada.
Neste contexto, não podemos fazer uma verificação?