Indicatore Domanda - pagina 6

 

for(i=0; val1==val3; i++)

Questo codice lascia la possibilità di un ciclo infinito IMO.

 
Devo pensarci ancora un po', la mia vista è di nuovo offuscata leggendo.

Ci sentiamo domani
 
ubzen:

for(i=0; val1==val3; i++)

Questo codice lascia la possibilità di un ciclo infinito IMO.

In realtà, sembra che dovrebbe ciclare fino a quando val1 non è val3

Se val3 = 0 e val1 = 0 dovrebbe ciclare fino a quando non ottiene un valore

ii val3 = iFractal(momentaneamente) poi val1 dovrebbe ciclare fino a val1=0 (e questo è il mio problema proprio qui)

è davvero una sorta di loop infinito o punto di blocco, anche se ottengo una dichiarazione di stampa per restituire il valore di iFractal per val1 non sono davvero sicuro di dove questo sia
Dovrò sperimentare ancora un po' con ciò che altri hanno postato per testare questo, ma penso che tu abbia ragione

Forse non è esattamente come inteso, ma questo è il concetto che voglio ottenere per incrementare semplicemente il precedente valore frattale

Continuerò a lavorarci
 
diostar:

Onestamente, è la prima volta che vedo questo, per la condizione di terminazione del ciclo. È difficile...

Sembra funzionare parzialmente, il che mi sta ingannando perché la mia istruzione di stampa restituisce un valore, ma penso che il problema sia che non appena val3 è effettivamente >0 allora val1 incrementerà di nuovo ad un valore che è 0 e non realmente il precedente valore frattale

Quindi sembrerebbe che in teoria funzionerà solo una volta fino a quando val3 == 0 e poi e solo allora i++ incrimenterà all'indietro fino a quando val1 non è più == val3 che è quello che voglio fare, tuttavia se val3 == un valore allora val1 incimenterà di nuovo ad un valore di 0 dove non è più == a val3 e poi il ciclo finirà.
Questo non è esattamente quello che volevo dopo tutto, quindi torno di nuovo al tavolo da disegno LOL

Grazie a tutti

 
RaptorUK:

Quando ottieni un iFractal il valore è > 0, sì?

Quindi, per esempio, se vuoi sapere dove sono stati gli ultimi iFrattali SUPERIORE e INFERIORE fai semplicemente qualcosa del genere.

Penso di vedere, ora se riesco a capire come produrre il valore di queste posizioni precedenti

Penso di poterlo risolvere, spero. he he

Grazie
 

La candela 0 non può essere un frattale quindi val3 sarà sempre 0, quindi perché non usare . . . .

for(i=0; val1==0; i++)

. . . e sbarazzarsi di val3.

Preferisco un while in questo caso però, sembrava adattarsi meglio a quello che stavi cercando di fare . . .

 
RaptorUK:

Quando ottieni un iFractal il valore è > 0, sì?

Quindi, per esempio, se vuoi sapere dove sono stati gli ultimi iFrattali SUPERIORE e INFERIORE fai semplicemente qualcosa del genere.

Questo sembra dirmi dove si trova l'ultimo iFractal, ma non entrambi i precedenti iFractal

Per esempio:

2011.10.07 09:05:36 sup_res EURUSD,M5: Last UPPER Fractal at 6 Last LOWER Fractal at 0

Quindi mostrerà l'attuale frattale UPPER high e stamperà la posizione che è buona
Posso anche cambiare val1=i in val1=iFractal(NULL, 0, MODE_UPPER,i) e questo mi darà il valore per l'ultimo iFractal
Quindi sto facendo dei progressi nella comprensione di questo ma ho ancora bisogno di ricodificare per tornare all'iFractal precedente

Una volta che si forma un iFractal allora questa dichiarazione while continuerà a stampare l'iFractal attualmente formato e più recente il che è figo
Quindi diciamo che un nuovo iFractal si forma, voglio fare riferimento a questo attuale frattale dall'istruzione while che è davvero il precedente 1 e non l'attuale
Quindi diciamo che iFractal LOWER_MODE si forma ora e voglio fare riferimento al precedente iFractal UPPER_MODE e confrontare questi valori.

Ma dai vostri consigli penso che potrei essere in grado di risolvere questo problema, sono tutte grandi idee che mi stanno aiutando molto.
Man mano che acquisisco maggiore familiarità con il funzionamento del codice, sto davvero iniziando a godermi l'uso di ciò che conosco per le mie idee di trading.

Grazie
 
Agent86:
Questo sembra dirmi dove si trova l'ultimo iFractal, ma non entrambi i precedenti iFractal

C'è un errore nel mio codice . . .

while( val1==0 && val2==0)

should be . . .

while( val1==0 || val2==0)
 
RaptorUK:

La candela 0 non può essere un frattale quindi val3 sarà sempre 0, quindi perché non usare . . . .

. . . e sbarazzarsi di val3.

Preferisco un while in questo caso però, sembrava adattarsi meglio a quello che stavi cercando di fare . . .

OK ho cambiato val3 shift a 3, ma non mi piace molto neanche questo farò alcune modifiche, grazie
 
if(val1 > 0 && faster > slower)
      {
       Print (val1, " val1");
       for(i=0; val1 || val2==0; i++)
         {
         if(iFractals(NULL, 0, MODE_LOWER, i) > 0 && val2 == 0)
         val2 = iFractals(NULL, 0, MODE_LOWER, i);
         Print (" Last LOWER Fractal at ", val2);
        
         }

Quando si aggiunge un for(statement) all'interno di un if(statement) si possono aggiungere ulteriori if(statement) e fare riferimento ai valori nel ciclo?

E queste dichiarazioni if aggiuntive devono avvenire all'interno del ciclo o si può essere al di fuori del ciclo e fare ancora riferimento ai valori del ciclo come val2?

Per favore consigliate cosa è considerato normale per i loop all'interno di altri blocchi di codice? E come estrarre i valori dei cicli?

Grazie