Aktualisieren Sie das Diagrammfenster - Seite 2

 

Das "Problem" kann darin bestehen, dass die Indikatoren ein Limit verwenden, d.h. die Funktion IndicatorCounted()
verwenden, damit die Balken nicht neu gezeichnet werden.

Bei einem Wechsel des Zeitrahmens wird dieser zurückgesetzt, bei WindowRedraw() möglicherweise nicht. Seine Funktion ist es, Objekte neu zu zeichnen, nicht Indikatorindizes.

void WindowRedraw( )
Zeichnet das aktuelle Diagramm zwangsweise neu. Sie wird normalerweise verwendet, nachdem die Objekteigenschaften geändert wurden.

Ich weiß, dass ich bei den meisten Dingen, die ich schreibe, 1000 Balken oder so neu berechne, und das wird
wird durch einen Rechtsklick auf Aktualisieren ausgelöst.

Wenn Sie die Schleife für den Indikator nicht stark einschränken, wird der Indikator bei jedem Tick aktualisiert.

 
? einige haben eine Ahnung, was los ist? Warum sehe ich keinen Effekt nach der Verwendung vonWindowRedraw()?

Vielen Dank!
 

Sind Sie "lesebehindert"?

 
Hallo phy,

erst nach fast zwei Monaten habe ich deine letzte Antwort erhalten. Ich weiß nur nicht, wie ich das übersehen konnte. Ich habe immer noch Probleme mit "Redrawing my indicator". jetzt werde ich versuchen, das Problem mit den Informationen, die Sie mir gegeben haben, zu beheben. vielen Dank,,,
 

Zeigen Sie Ihren Code...

 
brspMA:
Hallo phy,

gerade nach fast zwei Monaten habe ich deine letzte Antwort bekommen. Ich weiß nur nicht, wie ich das übersehen konnte. Ich habe immer noch Probleme mit dem "Neuzeichnen meines Indikators". jetzt werde ich versuchen, das Problem mit den Informationen, die Sie mir gegeben haben, zu beheben. vielen Dank,,,
Ich habe diesen Thread gelesen und ich denke, dass es ein Problem in Ihrem Code gibt => die Funktion WindowRefresh() wird Ihnen nicht helfen.
 
Hallo,

Ich denke, ich versuche, den Indikator zurückzusetzen, um es zu zwingen, alle wieder von Anfang an neu zu zeichnen!? mein Problem ist, dass ich eine Funktion, die die Vergangenheit Daten in Funktion der neuen Daten ändert, und das Ergebnis ist, dass mein Diagramm eine Masse über die Zeit wird. Ich muss meinen gesamten Indikator regelmäßig neu zeichnen. In letzter Zeit habe ich den Zeitrahmen geändert, so dass ich, wenn ich zu dem Zeitrahmen zurückkehre, in dem ich war, meine Chart-Fenster sauber (neu gezeichnet) bekomme. hier ist das Schema meines Codes:

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);}
vielen Dank,,,
 
Fügen Sie 2 Zeilen in Ihren Code ein

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);}
 

Was ist GV?

Was ich in letzter Zeit gemacht habe, ist etwas wie das hier:

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){

Dabei wird der sichtbare Teil des Indikators bei jedem Tick neu gezeichnet, nicht aber die Balken, die nicht sichtbar sind.

 
phy:

Was ist GV?

Was ich in letzter Zeit gemacht habe, ist etwas wie das hier:

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){

Dabei wird der sichtbare Teil des Indikators bei jedem Tick neu gezeichnet, nicht aber die Balken, die nicht sichtbar sind.


GV ist eine globale Variable, die ich verwende, um den Grenzwert festzulegen, je nachdem, wie lange ich zurückgehen möchte.

Ihr seid fantastisch!! Ich werde diesen Code heute Nachmittag implementieren.

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){
Danke für eure Großzügigkeit,,,