Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Questo non fa alcuna differenza, credo. Potrei anche scrivere IF( StringHighStatus == "True" || SwingHighShift > SwingBarcount ) EndCycle = TRUE;
Il punto è perché l'IF rileva la condizione di uscita e poi il WHILE reagisce alla variabile bool mentre se metto la stessa condizione dentro il WHILE non finisce?
Questo non fa alcuna differenza, credo. Potrei anche scrivere IF( StringHighStatus == "True" || SwingHighShift > SwingBarcount ) EndCycle = TRUE;
Il punto è perché l'IF rileva la condizione di uscita e poi il WHILE reagisce alla variabile bool mentre se metto la stessa condizione dentro il WHILE non finisce?
Mi sembra che questo funzioni
come
deVries, forse mi sbaglio ma penso che una sequenza di IF trasformi il booleano in VERO come fa un OR logico.
Se la prima condizione corrisponde allora EndCycle diventa TRUE, se la seconda non lo fa allora rimane TRUE.
Viceversa, se la prima non è soddisfatta ma la seconda sì, allora diventa VERO.
A questo punto il WHILE riconosce la condizione di uscita.
Quindi due IF in sequenza si comportano come un OR logico e lo stesso fa una sequenza IF...ELSE IF.
E deve essere un OR, non può essere un AND altrimenti il WHILE può bloccarsi (la condizione sulla stringa può essere falsa all'infinito).
Perché il WHILE gestisce una singola variabile booleana il cui valore è impostato all'interno del ciclo mentre non può determinare il risultato della stessa operazione logica OR all'interno della sua definizione di condizione?
Questo EA è stato usato da molte persone in passato, prima della build 600 e anche prima della 500, e questa è l'ultima release. Nessuno si è lamentato.
Quindi la mia domanda è: c'è qualcuno che ha problemi con l'operatore WHILE dopo la build 600?
deVries, forse mi sbaglio ma penso che una sequenza di IF trasformi il booleano in VERO come fa un OR logico.
Se la prima condizione corrisponde allora EndCycle diventa TRUE, se la seconda non lo fa allora rimane TRUE.
Viceversa, se la prima non è soddisfatta ma la seconda sì, allora diventa VERO.
A questo punto il WHILE riconosce la condizione di uscita.
Quindi due IF in sequenza si comportano come un OR logico e lo stesso fa una sequenza IF...ELSE IF.
E deve essere un OR, non può essere un AND altrimenti il WHILE può bloccarsi (la condizione sulla stringa può essere falsa all'infinito).
Perché il WHILE gestisce una singola variabile booleana il cui valore è impostato all'interno del ciclo mentre non può determinare il risultato della stessa operazione logica OR all'interno della sua definizione di condizione?
Questo EA è stato usato da molte persone in passato, prima della build 600 e anche prima della 500, e questa è l'ultima release. Nessuno si è lamentato.
Quindi la mia domanda è: c'è qualcuno che ha problemi con l'operatore WHILE dopo la build 600?
Penso che tu ti stia riferendo a questo
Il tuo codice, se esattamente come hai postato non avrebbe fatto come ti aspetti con qualsiasi build, quindi devi aver cambiato qualcosa
Hai mai provato un'operazione logica molto elementare con un while solo per confermare che sta funzionando come dovrebbe o no, invece di chiedere?
Il mio post è iniziato con un esempio di un WHILE che mi sembrava restituire un comportamento insolito molto simile a quello del pezzo di EA di cui stiamo discutendo ora, così ho prima provato poi chiesto.
La mia interpretazione di quel debug molto semplice si è rivelata sbagliata, quindi la discussione si è spostata sull'EA stesso.
Grazie GumRai per la tua pazienza.
Forse mi sbaglio e ho la testa dura ma non riesco a capire la logica...
Se il primo IF trasforma, come suggerisci tu, la stringa in "true" a diciamo SwinghHighShift=10 allora il contatore non aumenta in quel ciclo; dopo di che il controllo torna al WHILE: il ciclo dovrebbe finire a questo punto perché il WHILE contiene un OR logico e una delle sue condizioni è soddisfatta.
Al contrario, se la variabile rimane falsa, il contatore dovrebbe raggiungere il suo valore massimo e di nuovo si ha la condizione di uscita.
Penso che la tua considerazione sarebbe vera con un operatore AND.
Seguendo la tua interpretazione potrei saltare l'OR all'interno del WHILE; potrei semplicemente mettere la prima condizione IF sulla stringa: se diventa "vero" allora il break terminerà il WHILE, altrimenti il contatore andrebbe avanti fino al suo massimo.
Il codice si trasformerà in:
Ma questo è ancora un workaround e, purtroppo, non spiega (a me) perché il WHILE non si occupa dell'OR.
Se il primo IF trasforma, come suggerisci tu, la stringa in "true" a diciamo SwinghHighShift=10 allora il conteggio non aumenta in quel ciclo; dopo di che il controllo torna al WHILE: il ciclo dovrebbe finire a questo punto perché il WHILE contiene un OR logico e una delle sue condizioni è soddisfatta.