array statico ? - pagina 6

 

Troppo codice in quella semplice descrizione in inglese . . .

I frattali sono memorizzati nei buffer degli indicatori, hai capito come? Se non lo fai scrivi del codice per aiutarti a capire...

Puoi leggere i buffer degli indicatori e trovare i numeri di barra dei frattali, dal numero di barra puoi ottenere i valori delle candele. . .

 
RaptorUK:

Troppo codice in quella semplice descrizione in inglese . . .

I frattali sono memorizzati nei buffer degli indicatori, hai capito come? Se non lo fai scrivi del codice per aiutarti a capire...

Puoi leggere i buffer degli indicatori e trovare i numeri di barra dei frattali, dal numero di barra puoi ottenere i valori delle candele. . .

Non capisco completamente come vengono memorizzati i buffer degli indicatori.


E questo è esattamente quello che volevo fare, trovare il numero della barra, dai frattali e ottenere i valori della candela

Continuerò a farlo, ma probabilmente sarei più chiaro se sapessi come gli indicatori memorizzano i valori nel buffer.

Grazie

 

Ci sono 3 buffer, v1, v2 e v3 e ci sono altri tre doppi, val1, val2 e val3, usati per il calcolo. v3 e val3 non sembrano essere usati.

val1 e val2 tengono il valore prodotto da iFractals, questo valore è calcolato per ogni barra una per una, il ciclo while passa attraverso le barre iniziando da Bars e diminuendo fino a zero . . .

Quindi per ogni barra il valore dei frattali è calcolato e memorizzato in v1 per MODE_UPPER e v2 per MODE_LOWER, lavoriamo per v1 . . .

Per ogni barra a turno . . . se val1 è maggiore di 0 il valore del buffer per il buffer v1 per il numero della barra è impostato al massimo di quella barra, quindi immagina che il ciclo sia a metà strada attraverso le barre da Bars a 0, immaginiamo che sia sulla barra numero 4934, il frattale è calcolato per la barra numero 4934, se il valore è maggiore di 0 allora v1[4934] è impostato su Alto[4934], in altre parole il 4935° elemento del buffer v1 è impostato sul massimo della barra numero 4934 . . . non dimenticare che gli array iniziano da 0

Infine c'è una piccola complicazione che dovete capire . . . lanciate l'indicatore e vedrete una linea di punti da ogni frattale alto e basso . . fino al prossimo . . immaginate che siamo ora sulla barra numero 4933 e il valore di val1 non è maggiore di 0, quello che succede ora è che il valore del buffer per questa barra non è impostato a questa barra Alta ma è impostato allo stesso valore della voce precedente per il buffer . . precedente in questo caso significa i+1 perché nel ciclo while i sta contando in basso.

Quando il ciclo finisce e tutte le barre hanno i loro frattali calcolati, tutte le voci del buffer conterranno dei valori . . questo non ti è di grande aiuto. . devi cambiare un po' il codice.

Leggi quello che ho scritto qui. . se non capite cosa sta succedendo allora non avete il diritto di giocare con questo codice. . una volta che hai capito allora puoi andare avanti... qualsiasi domanda per favore chiedi.

 
RaptorUK:

Ci sono 3 buffer, v1, v2 e v3 e ci sono altri tre doppi, val1, val2 e val3, usati per il calcolo. v3 e val3 non sembrano essere usati.

val1 e val2 tengono il valore prodotto da iFractals, questo valore è calcolato per ogni barra una per una, il ciclo while passa attraverso le barre iniziando con Bars e diminuendo fino a zero . . .

Quindi per ogni barra il valore dei frattali è calcolato e memorizzato in v1 per MODE_UPPER e v2 per MODE_LOWER, lavoriamo per v1 . . .

Per ogni barra a turno . . . se val1 è maggiore di 0 il valore del buffer per il buffer v1 per il numero della barra è impostato al massimo di quella barra, quindi immaginiamo che il ciclo sia a metà strada attraverso le barre da Bars a 0, immaginiamo che sia sulla barra numero 4934, il frattale è calcolato per la barra numero 4923, se il valore è maggiore di 0 allora v1[4394] è impostato su Alto[4394], in altre parole il 4395° elemento del buffer v1 è impostato sul massimo della barra numero 4394 . . . non dimenticare che gli array iniziano da 0

Infine c'è una piccola complicazione che dovete capire . . . lanciate l'indicatore e vedrete una linea di punti da ogni frattale alto e basso . . fino al prossimo . . immaginate che siamo ora sulla barra numero 4933 e il valore di val1 non è maggiore di 0, quello che succede ora è che il valore del buffer per questa barra non è impostato su questo massimo ma è impostato allo stesso valore della voce precedente del buffer . . precedente in questo caso significa i+1 perché nel ciclo while i sta contando alla rovescia.

Quando il ciclo finisce e tutte le barre hanno i loro frattali calcolati, tutte le voci del buffer conterranno dei valori . . questo non ti è di grande aiuto. . devi cambiare un po' il codice.

Leggi quello che ho scritto qui. . se non capite cosa sta succedendo allora non avete il diritto di giocare con questo codice. . una volta che hai capito allora si può andare avanti . ... qualsiasi domanda si prega di chiedere.

Ho capito come funziona l'indicatore esattamente come l'hai descritto. Pensavo di aver capito anche come il buffer memorizzava i valori, ed è per questo che mi stavo confondendo perché quando ho ricodificato le cose per stampare non ho ottenuto i risultati che mi aspettavo di vedere.

Tuttavia, un grande ostacolo importante è stato ora superato con la comprensione di come il buffer è diverso e NON ha effettivamente dichiarato il numero di elementi che è il motivo per cui non ho potuto stampare dal buffer

Ok andando avanti.
Suppongo che ci sia qualche errore di battitura nei tuoi riferimenti alla barra numero 4934, il frattale è calcolato per la barra numero 4923 e dovrebbe leggere 4933.
E anche per un valore maggiore di 0 allora v1[4394] è impostato su High[4394] == Suppongo che si intenda seguire il precedente riferimento a 4923/33, ma ho capito che è il numero dell'elemento è superiore al numero della barra.

Per favore correggetemi se mi sbaglio sui refusi.

Comunque, supponendo che questi siano errori di battitura e che io capisca cosa significa.

Ho considerato che avrei creato v3 e l'avrei dichiarato e inizializzato in un modo simile per poterlo stampare o ottenere il valore da esso.
Inizialmente avevo considerato che potrei essere in grado di stampare i-1 per estrarre il valore memorizzato di High[i] nel momento in cui fosse maggiore di 0 e per quella barra.
O anche v1[i] = v1[1-1] e stampare v1[i] in questo momento, ma non ho elaborato quella parte e inoltre non ho potuto superare la parte di stampa poiché il numero di elementi non era dichiarato.

Questo è il motivo per cui volevo creare uno schema v3 diverso ma in realtà lo stesso solo per creare un array con numero di elementi dichiarato che potrei estrarre il valore dei frattali per quelle barre.

Questo è dove sto avendo problemi con il design, quindi ci lavorerò ancora un po'

Grazie

 
Agent86:

Ho capito che l'indicatore funziona esattamente come l'hai descritto. Credevo di aver capito anche come il buffer memorizzava i valori, ed è per questo che mi stavo confondendo perché quando ho ricodificato le cose per stampare non ho ottenuto i risultati che mi aspettavo di vedere.

Tuttavia, un grande ostacolo è stato superato con la comprensione di come il buffer è diverso e NON ha effettivamente dichiarato il numero di elementi che è il motivo per cui non potevo stampare dal buffer

Ok andando avanti.
Suppongo che ci sia qualche errore di battitura nei tuoi riferimenti alla barra numero 4934, il frattale è calcolato per la barra numero 4923 e dovrebbe leggere 4933.
E anche per un valore maggiore di 0 allora v1[4394] è impostato su High[4394] == Suppongo che si intenda seguire il precedente riferimento a 4923/33 ma capisco che è il numero dell'elemento è superiore al numero della barra.

Per favore correggetemi se mi sbaglio sui refusi.

Scusa per gli errori di battitura. . . Ho corretto il mio testo con i valori corretti . . . Non sono bravo di prima mattina ;-)

Vedi la piccola modifica che devi fare al codice prima che ti sia utile?

 
    for(i=Bars; i >= 0; i--)
     {
     val3=iFractals(NULL, 0, MODE_UPPER,i);
     if(val3>0)
      {
      double v3[1000];
      v3[i]=High[i];
      Print ("v3[", i, "]= ", v3[i], " if");
      }
     else          
         {
         v3[i]=v3[i+1];
         Print ("v3[", i, "]= ", v3[i], " else");
         }
     }
Ok facendo qualche progresso qui, penso che la cosa principale era che non potevo superare la dichiarazione del buffer che produceva sempre 0 per le mie dichiarazioni di stampa.

Penso che potrei essere in grado di gestire da qui
Sto ottenendo i valori che cerco ora, almeno da quello che posso dire finora potrei essere sulla strada giusta.

2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[5]= 1.3361 if
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[6]= 1.3343 else
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[7]= 1.3343 else
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[8]= 1.3343 else
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[9]= 1.3343 else
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[10]= 1.3343 if
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[11]= 1.3399 else


Grazie ancora
 
Ho il sospetto che tu non voglia o non abbia bisogno del resto
 
RaptorUK:
Ho il sospetto che tu non voglia o non abbia bisogno di altro

Sì, hai ragione