Aggiorna la finestra del grafico - pagina 2

 

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.

 
qualcuno ha qualche indizio su cosa sta succedendo? Perché non vedo alcun effetto dopo aver usatoWindowRedraw()?

Grazie mille,
 

Sei "difficile da leggere"?

 
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,,,
 

Mostra il tuo codice...

 
brspMA:
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,,,
Ho letto questo thread e penso che ci sia un problema nel tuo codice => la funzione WindowRefresh() non ti aiuterà.
 
Ciao,

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:

int start(){
   int limit;
   int counted_bars=IndicatorCounted();
   //---- check for possible errors
   if(counted_bars<0) return(-1);
   //---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   if (limit>GV) limit = GV;
   //---- main loop
   for(int i=limit; i>=1; i--){
 
 
{calculates the variable and feed the buffers}
 
return(0);}
grazie mille,,,
 
inserisci 2 righe nel tuo codice

int start(){
   int limit;
   int counted_bars=IndicatorCounted();
   //---- check for possible errors
   if(counted_bars<0) return(-1);
   //---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
 
   double startTime=GetTickCount();
   if (limit>GV) limit = GV;
   //---- main loop
   for(int i=limit; i>=1; i--){
 
 
{calculates the variable and feed the buffers}
 
   double finishTime=GetTickCount();
   Print("Calculation time is ",(finishTime-startTime)/1000.0," seconds");
return(0);}
 

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.

 
phy:

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.


GV è una variabile globale che uso per impostare il limite in base a quanto tempo indietro voglio fare il back testing.

Voi ragazzi siete fantastici! Implementerò questo codice questo pomeriggio.

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){
grazie per la vostra generosità,,,
Motivazione: