Il "problema" potrebbe essere che gli indicatori usano un limite, cioè la funzione IndicatorCounted() per non ridisegnare le barre.
Cambiare il timeframe lo resetta, WindowRedraw() potrebbe non farlo. La sua funzione è quella di ridisegnare gli oggetti, non gli indici degli indicatori.
void WindowRedraw(
)
Ridisegna forzatamente il grafico corrente. Normalmente viene utilizzato dopo che le proprietà degli oggetti sono state modificate.
So che di solito vado avanti e ricalcolo 1000 barre o giù di lì sulla maggior parte delle cose che scrivo, e questo è e questo viene dato il via con un Refresh con il tasto destro del mouse.
Se non si limita fortemente il ciclo per l'indicatore, si ottiene un aggiornamento dell'indicatore su ogni tick.
solo dopo quasi due mesi ho ricevuto la tua ultima risposta. Non so proprio come ho fatto a saltarla. Sto ancora avendo problemi con il "ridisegno del mio indicatore". ora cercherò di risolvere il problema con le informazioni che mi hai dato. grazie mille,,,
solo dopo quasi due mesi ho ricevuto la tua ultima risposta. Non so proprio come ho fatto a saltarla. Sto ancora avendo problemi con il "ridisegno del mio indicatore". ora cercherò di risolvere il problema con le informazioni che mi hai dato. grazie mille,,,
Ho letto questo thread e penso che ci sia un problema nel tuo codice => la funzione WindowRefresh() non ti aiuterà.
Credo che sto cercando di resettare l'indicatore per costringerlo a ridisegnare tutto dall'inizio!? il mio problema è che sto usando una funzione che cambia i dati passati in funzione dei nuovi dati, e il risultato è che il mio grafico diventa una massa nel tempo. Ho bisogno di ridisegnare tutto il mio indicatore periodicamente. ultimamente, sto cambiando il time frame, in modo che quando torno al time frame che ero, ottengo il mio grafico windows pulito (ridisegnato) . ecco lo schema del mio codice:
intstart(){intlimit;
intcounted_bars=IndicatorCounted();
//---- check for possible errorsif(counted_bars<0)return(-1);
//---- last counted bar will be recountedif(counted_bars>0)counted_bars--;
limit=Bars-counted_bars;
if(limit>GV)limit = GV;
//---- main loopfor(inti=limit; i>=1; i--){{calculatesthevariableandfeedthebuffers}return(0);}
intstart(){intlimit;
intcounted_bars=IndicatorCounted();
//---- check for possible errorsif(counted_bars<0)return(-1);
//---- last counted bar will be recountedif(counted_bars>0)counted_bars--;
limit=Bars-counted_bars;
doublestartTime=GetTickCount();
if(limit>GV)limit = GV;
//---- main loopfor(inti=limit; i>=1; i--){{calculatesthevariableandfeedthebuffers}doublefinishTime=GetTickCount();
Print("Calculation time is ",(finishTime-startTime)/1000.0," seconds");
return(0);}
Il "problema" potrebbe essere che gli indicatori usano un limite, cioè la funzione IndicatorCounted()
per non ridisegnare le barre.
Cambiare il timeframe lo resetta, WindowRedraw() potrebbe non farlo. La sua funzione è quella di ridisegnare gli oggetti, non gli indici degli indicatori.
So che di solito vado avanti e ricalcolo 1000 barre o giù di lì sulla maggior parte delle cose che scrivo, e questo è
e questo viene dato il via con un Refresh con il tasto destro del mouse.
Se non si limita fortemente il ciclo per l'indicatore, si ottiene un aggiornamento dell'indicatore su ogni tick.
Grazie mille,
Sei "difficile da leggere"?
solo dopo quasi due mesi ho ricevuto la tua ultima risposta. Non so proprio come ho fatto a saltarla. Sto ancora avendo problemi con il "ridisegno del mio indicatore". ora cercherò di risolvere il problema con le informazioni che mi hai dato. grazie mille,,,
Mostra il tuo codice...
Ciao phy,
solo dopo quasi due mesi ho ricevuto la tua ultima risposta. Non so proprio come ho fatto a saltarla. Sto ancora avendo problemi con il "ridisegno del mio indicatore". ora cercherò di risolvere il problema con le informazioni che mi hai dato. grazie mille,,,
Credo che sto cercando di resettare l'indicatore per costringerlo a ridisegnare tutto dall'inizio!? il mio problema è che sto usando una funzione che cambia i dati passati in funzione dei nuovi dati, e il risultato è che il mio grafico diventa una massa nel tempo. Ho bisogno di ridisegnare tutto il mio indicatore periodicamente. ultimamente, sto cambiando il time frame, in modo che quando torno al time frame che ero, ottengo il mio grafico windows pulito (ridisegnato) . ecco lo schema del mio codice:
grazie mille,,,
Cos'è GV?
Quello che ho fatto di recente è qualcosa come questo
for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){
Ridisegna la parte visibile dell'indicatore ad ogni tick, ma non le barre che non sono visibili.
Cos'è GV?
Quello che ho fatto di recente è qualcosa come questo
for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){
Ridisegna la parte visibile dell'indicatore ad ogni tick, ma non le barre che non sono visibili.
Voi ragazzi siete fantastici! Implementerò questo codice questo pomeriggio.
grazie per la vostra generosità,,,