
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
Isso não faz diferença, eu acho. Eu também poderia escrever IF( StringHighStatus == "True" || SwingHighShift > SwingBarcount ) EndCycle = TRUE;
A questão é porque o IF detecta a condição de saída e então o WHILE reage à variável bool enquanto que se eu colocar a mesma condição dentro do WHILE ela não termina?
Isso não faz diferença, acho eu. Eu também poderia escrever IF( StringHighStatus == "True" || SwingHighShift > SwingBarcount ) EndCycle = TRUE;
A questão é porque o IF detecta a condição de saída e então o WHILE reage à variável bool enquanto que se eu colocar a mesma condição dentro do WHILE ela não termina?
Parece-me que isto funciona
como
deVries, talvez eu esteja errado, mas eu acho que uma seqüência de IF transforma o booleano em VERDADEIRO como um OR lógico.
Se a primeira condição corresponder, então EndCycle se transforma em VERDADEIRO, se a segunda não corresponder, então ela permanece VERDADEIRA.
Viceversa se a primeira não for cumprida, mas a segunda for, então ela se torna VERDADEIRA.
Neste momento, o WHILE reconhece a condição de saída.
Portanto, dois IFs em seqüência se comportam como um OR lógico e o mesmo faz um IF...ELSE IF em seqüência.
E deve ser um OR, não pode ser um AND, caso contrário o WHILE pode ficar preso (a condição na corda pode ser falsa indefinidamente).
Por que o QUEM administra uma única variável booleana cujo valor é definido dentro do ciclo enquanto não pode determinar o resultado da mesma operação lógica OU dentro da definição de sua condição?
Esta EA já foi usada por muitas pessoas no passado, antes de construir 600 e também antes de 500, e este é o último lançamento. Ninguém reclamou.
Então minha pergunta é: há alguém que tenha problemas com o operador WHILE depois de construir 600?
deVries, talvez eu esteja errado, mas eu acho que uma seqüência de IF transforma o booleano em VERDADEIRO como um OR lógico.
Se a primeira condição corresponder, então EndCycle se transforma em VERDADEIRO, se a segunda não corresponder, então ela permanece VERDADEIRA.
Viceversa se a primeira não for cumprida, mas a segunda for, então ela se torna VERDADEIRA.
Neste momento, o WHILE reconhece a condição de saída.
Portanto, dois IFs em seqüência se comportam como um OR lógico e o mesmo faz um IF...ELSE IF em seqüência.
E deve ser um OR, não pode ser um AND, caso contrário o WHILE pode ficar preso (a condição na corda pode ser falsa indefinidamente).
Por que o QUEM administra uma única variável booleana cujo valor é definido dentro do ciclo enquanto não pode determinar o resultado da mesma operação lógica OU dentro da definição de sua condição?
Esta EA já foi usada por muitas pessoas no passado, antes de construir 600 e também antes de 500, e este é o último lançamento. Ninguém reclamou.
Então minha pergunta é: há alguém que tenha problemas com o operador WHILE depois de construir 600?
Eu acho que você está se referindo a isto
Seu código, se exatamente como você postou, não teria feito como você esperava com qualquer construção, então você deve ter mudado algo
Você já tentou uma operação lógica muito básica apenas para confirmar que está funcionando como deveria ou não, em vez de perguntar?
Meu posto começou com um exemplo de um WHILE que me pareceu retornar um comportamento muito similar ao da parte da EA que estamos discutindo agora, então eu primeiro tentei então perguntar.
Minha interpretação dessa depuração muito simples acabou sendo errada, então a discussão passou para a própria EA.
Obrigado GumRai por sua paciência.
Talvez eu esteja errado e de cabeça dura, mas não consigo entender a lógica...
Se o primeiro IF vira, como você sugere, o fio para "verdadeiro" a dizer SwinghHighShift=10, então a contagem não aumenta nesse ciclo; depois disso, o controle volta para o QUANTO: o ciclo deve terminar neste ponto porque o QUANTO contém um OU lógico e uma de suas condições é satisfeita.
Por outro lado, se a variável permanecer falsa, o contador deve atingir seu valor máximo e novamente você tem a condição de saída.
Acho que sua consideração seria verdadeira com um operador AND.
Seguindo sua interpretação, eu poderia pular o OU dentro do OU; eu poderia apenas colocar a primeira condição IF na corda: se se tornar "verdadeira", então a quebra terminará o OU, caso contrário o contador continuará até seu máximo.
O código se voltará para:
Mas isto ainda é uma alternativa e, infelizmente, não explica (para mim) porque o QUEM não cuida do OR.
Se o primeiro IF vira, como você sugere, o fio para "verdadeiro" em SwinghHighShift=10, então a contagem não aumenta nesse ciclo; depois disso, o controle volta ao WHILE: o ciclo deve terminar neste ponto porque o WHILE contém um OU lógico e uma de suas condições é satisfeita.