Leinwand vs. Etiketten - Seite 12

 
Andrey Khatimlianskii:

Wie kann ich die Aktualisierungsrate der Leinwand im Visualizer auf menschliche Art und Weise begrenzen?

So dass bei langsamer Geschwindigkeit das Bild in Echtzeit aktualisiert wird und bei schneller Geschwindigkeit der Test nicht verlangsamt wird?

Im Moment verlangsamt die Leinwand (wenn sie bei jedem Tick aktualisiert wird) die gesamte Visualisierung (Profiling zeigt 80-90% der Rendering-Zeit). Ich habe mit der konfigurierbaren Sekundenpause gedreht, aber das ist eine Krücke, die die Funktionalität einschränkt (das Bild wird selbst bei langsamer Geschwindigkeit nur selten aktualisiert).

Woran soll ich mich binden, damit es nicht zu oft aktualisiert wird? GetMicroseconds?

Welche Funktionen kann man auslassen?

Andrey Ich habe bereits vor mehr als einem Jahr hier darüber geschrieben.

Das funktioniert ganz gut.
Hier ist ein Live-Video (nur zwei Kanvasen):

Ich muss nur hinzufügen, dass im Tester das Ereignis CHARTEVENT_CHART_CHANGE nicht funktioniert,

Ich füge also Folgendes in den Canvas-Forming-Block ein (bei Verwendung von iCanvas):

void BildParabolas() {
   if(Canvas.tester) ChartChanged();
   static uint lastCalc=0;
   uint cur=GetTickCount();
   if (cur-lastCalc<17) return;
...

Und hier ist ein Teil des Codes in OnCalculate aus dem Indikator, der auf dem Gif ist:

static uint lastCalc=0; 
if (Canvas.tester) {
      uint cur=GetTickCount();
      if (cur-lastCalc>17) {
         lastCalc=cur;
         BildParabolas();
         menu.Draw();
      }
   }

 
Dmitry Fedoseev:
es ist mit bloßem Auge erkennbar, dass Kanvas deutlich langsamer ist


 
Taras Slobodyanik:

Im MT5-Tester funktioniert der Timer, Sie können ihn auf 60 Sekunden einstellen und er wird einmal pro Minute zur Testerzeit aktualisiert)

Was die Pausenkrücke betrifft, die ich geschrieben habe, so passt sie nicht.

 
Nikolai Semko:

Andrei, ich habe vor über einem Jahr hier darüber geschrieben.

Das funktioniert ganz gut.
Hier ist ein Live-Video (nur zwei Kanvasen):

Sieht ein bisschen langsam aus, was die Höchstgeschwindigkeit angeht.

Danke, ich werde es über GetTickCount versuchen!

 
Andrey Khatimlianskii:

Sieht ein bisschen langsam aus für die Höchstgeschwindigkeit.

Danke, ich werde es über GetTickCount versuchen!

Nein, es ist nicht das Maximum. Es ist sehr empfindlich, wenn es um das Maximum geht.
Hier ist der Höchstwert:

 
Andrey Khatimlianskii:

Sieht ein bisschen langsam aus für die Höchstgeschwindigkeit.

Danke, ich werde es mit GetTickCount versuchen!

Damit es keine Verzerrungen in Bezug auf das Diagramm selbst gibt, sollten wir außerdem mit OBJ_BITMAP anstelle vonOBJ_BITMAP_LABEL experimentieren. Bindung an Zeit und Preis anstelle von XY-Koordinaten.
Ich möchte es unbedingt versuchen, aber ich schaffe es nicht. In diesem Fall müssen wir die Leinwand größer als die Fenstergröße machen und die Steuerlogik ändern. Der Code kann einen erheblichen Geschwindigkeitsvorteil haben, da nicht die gesamte Leinwand neu gezeichnet werden muss, sondern nur ein kleinerer Teil davon, wenn der vertikale Maßstab gleich bleibt. Auf jeden Fall wird es nicht störend sein, wenn die Leinwand bei schnellen Bewegungen nicht im Gleichgewicht mit dem Hauptdiagramm ist.

 
Nikolai Semko:

Nein, es ist nicht das Maximum. Es ist sehr empfindlich, wenn es um das Maximum geht.
Das ist das Maximum:

Sind das "alle Zecken"?! Wenn ja, gut. Ich werde es überprüfen.


Nikolai Semko:

Damit es keine Verzerrungen in Bezug auf das Diagramm selbst gibt, sollten wir außerdem mit OBJ_BITMAP anstelle vonOBJ_BITMAP_LABEL experimentieren. Bindung an Zeit und Preis anstelle von XY-Koordinaten.
Ich möchte es unbedingt versuchen, aber ich schaffe es nicht. In diesem Fall müssten wir die Leinwand größer als die Fenstergröße machen und die Steuerlogik ändern. Vielleicht wird es einen Geschwindigkeitsgewinn geben. Die unausgewogene Leinwand und das Hauptdiagramm werden das Auge bei schnellen Bewegungen nicht stören.

Ich habe ein einfaches Panel. Kein Link zur Tabelle.

 
Andrey Khatimlianskii:

Ich habe ein normales Armaturenbrett. Es gibt keinen Link zu der Tabelle.

Ah, na dann ist ja gut.
Ich habe auch eine Leinwand auf meiner Hypha, und es ist das Panel, das am wenigsten Ressourcen verbraucht, weil ich es nicht so oft neu zeichnen muss und den Moment erwische, wenn ein neuer Balken reinkommt.

 
Andrey Khatimlianskii:

Sind das "alle Tics"?! Wenn ja, gut. Ich werde es mir ansehen.

Nein, es war Minute OHLC auf 3 Minuten. Aber ich habe alle Zecken überprüft. Das Bild ist fast dasselbe. Denn das Neuzeichnen der Leinwand ist in diesem Fall nicht an Ticks gebunden, sondern nur an die tatsächliche Zeit (nicht an die Zeit des Testers). D.h. je höher die Geschwindigkeit ist, desto geringer ist die Bilddichte. Aber für das Auge ist der Unterschied nicht sichtbar.

 
Ja... Die animierten Gifs sind sicherlich ein starkes Argument.