
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
quando è questo mentre si avvia e
quando questo mentre si ferma?
StringHighStatus="True";
Ho pensato la stessa cosa finché non l'ho testato, abbastanza sorprendentemente la parte if(double == double) funziona, mi fa pensare che il confronto dei doppi sia gestito diversamente nelle nuove versioni.
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 98
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 95
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 91
EURUSD,M15: Condizioni frattali soddisfatte nella barra 81
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 77
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 68
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 61
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 48
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 39
EURUSD,M15: Condizioni frattali soddisfatte nella barra 24
EURUSD,M15: Condizioni frattali soddisfatte nella barra 19
EURUSD,M15: Condizioni frattali soddisfatte nella barra 12
EURUSD,M15: Condizioni frattali soddisfatte nella barra 4
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.
Viceversa 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.
Non c'è niente di sbagliato nel WHILE o nell'OR logico, hai due condizioni nel tuo WHILE, ENTRAMBI devono essere rotti prima che il WHILE possa uscire.
Ecco perché si blocca
C'è solo una piccola possibilità che il ciclo while possa mai uscire e cioè quando la condizione IF non è soddisfatta per tutte le 100 barre (SwingBarCount), quindi la seconda condizione WHILE è rotta prima della prima. Quindi successivamente i frattali soddisfano la condizione IF e il codice per rompere la 1a condizione WHILE (modificare StringHighStatus) viene eseguito.
Avete bisogno di togliere SwingHighShift++; da ELSE e metterlo da solo nel ciclo while dopo l'operatore IF in modo che, indipendentemente da ciò che accade con le condizioni IF, esso continui ad aumentare in modo che il ciclo possa passare alla prossima barra, o usare break dopo il blocco di codice del disegno dell'oggetto per uscire dal while una volta che l'oggetto è stato disegnato.
Dovete anche dare al vostro oggetto un modo per creare diversi nomi per se stesso, altrimenti sarà disegnato solo una volta. (a meno che non vogliate che venga disegnato solo una volta).
Ho pensato la stessa cosa finché non l'ho testato, abbastanza sorprendentemente la parte if(double == double) funziona, mi fa pensare che il confronto dei doppi sia gestito diversamente nelle nuove build.
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 98
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 95
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 91
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 81
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 77
EURUSD,M15: Condizioni frattali soddisfatte sulla barra 68
EURUSD,M15: Fractals conditions met on bar 61
EURUSD,M15: Fractals conditions met on bar 48
EURUSD,M15: Fractals conditions met on bar 39
EURUSD,M15: Fractals conditions met on bar 24
EURUSD,M15: Fractals conditions met on bar 19
EURUSD,M15: Fractals conditions met on bar 12
EURUSD,M15: Fractals conditions met on bar 4
Il motivo per cui funziona è che il codice sta effettivamente confrontando lo stesso valore
Il buffer frattale avrà un valore vuoto o prenderà il suo valore dal massimo della barra in questione.
Il codice è effettivamente
Non vedo perché non possa essere sostituito da
Non vedo perché non possa essere sostituito da
Rileggendo i tuoi post in questo thread ho capito dove nasce la tua confusione ora. State pensando la logica di WHILE e OR al contrario. L'OR non serve a fermare il WHILE. Si tratta di tenerlo in corso quando una delle due condizioni è valida... È così, avete due luci accese. La tua istruzione è: Mentre la luce 1 O la luce 2 è accesa, continua a fare qualcosa. Ovviamente entrambe le luci devono essere spente prima che tu smetta, non solo una delle due.
Questo è quanto!
Vergogna... :-)
Inoltre non è la prima volta che uso WHILE ma ho iniziato a pensare al contrario e non sono mai uscito dal MIO ciclo :-/
E così il suggerimento di deVries di sostituire || con && risulta giusto.
Un sacco di altre cose di cui occuparsi sono venute fuori da questo topic, cioè come funziona l'IF( == ).
Grazie a tutti per la vostra pazienza e il tempo che avete speso per farmi capire.
Avrei dovuto farlo così, con una pausa, per interrompere il ciclo while, è corretto?