Mein Ansatz. Der Kern ist der Motor. - Seite 125
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Sie werden also genau wie von Ihnen beschrieben neu gezeichnet.
Und die Belastung des Prozessors kommt von der Animation:
Es findet eine ständige Neuinitialisierung der Werte im Pixel-Array statt. Alle 16 Millisekunden. Dies belastet den Prozessor bis zu 40 %.
Ich habe versucht, herauszufinden, was genau die Belastung ist. Ich dachte, es ginge darum, eine Ressource zu speichern oder sie zu lesen. Es stellte sich heraus, dass es an der Reinitialisierung des Arrays in der Zeichenschleife lag.
Es stellte sich auch heraus, dass ein ständiger Aufruf von ObjectSetInteger(0, "MT object",OBJPROP_SELECTED,1); (alle 16 ms) ebenfalls den Prozessor belastet. Um etwa 10 %.
Ich verwende diesen Aufruf, um einen anderen EA anzuweisen, die Ressource mit den Animationsdaten zu lesen.
Insgesamt wird die CPU während der Animation zu etwa 50 % ausgelastet.
Entschuldigung, ich habe nicht bemerkt, dass es sich nicht mehr um die Liste der offenen Geschäfte handelt. Ich glaube, 2-3 Seiten des Threads sind verschwunden.
Nein, das ist in Ordnung. Ich habe die CPU-Belastung nur erhöht, weil ich die Kommunikation zwischen dem EA und der Engine neu gestalten werde, was bedeutet, dass die Tabelle der offenen Handelsgeschäfte auch andere Daten aufnehmen wird.
Warum macht die Periris 64 Bilder pro Sekunde (16 ms), für das Auge sind 32 Bilder pro Sekunde ausreichend.
Gute Frage. Tatsächlich funktioniert der Timer nicht reibungslos. Es gibt Auslassungen. 16,32,16,16...
Bei der Verwendung von 32 beträgt der Zeitsprung 64 ms. Und das macht sich bemerkbar. Außerdem belasten und verlangsamen verschiedene andere Dinge das Zeichnen. Zum Beispiel die OnChartEvent()-Ereigniswarteschlange.
Ich glaube, das wirkt sich auf die Qualität der Animation aus. Ich habe versucht, 25 ms zu verwenden. Dann 16, und ich bin zu dem Schluss gekommen, dass 16 eine fließende Bewegung besser wiedergibt.
Später skolnuyu Motor mit Animation 16 ms und 32 ms und Sie werden sehen, für sich selbst. Obwohl, vielleicht wird es ok....
Gute Frage. Tatsächlich funktioniert der Timer nicht reibungslos. Es gibt Auslassungen. 16,32,16,16...
Bei der Verwendung von 32 beträgt der Zeitsprung 64 ms. Und das macht sich bemerkbar. Außerdem belasten und verlangsamen verschiedene andere Dinge das Zeichnen. Zum Beispiel die OnChartEvent()-Ereigniswarteschlange.
Ich glaube, das wirkt sich auf die Qualität der Animation aus. Ich habe versucht, 25 ms zu verwenden. Dann 16, und ich bin zu dem Schluss gekommen, dass 16 eine fließende Bewegung besser wiedergibt.
Später skolnuyu Motor mit Animation 16 ms und 32 ms und Sie werden sehen, für sich selbst. Obwohl, vielleicht wird es ok....
Es sind eben nicht wirklich 16ms, sondern 1000/64=15,625ms. Deshalb ist es besser, 30 ms anstelle von 32 ms einzustellen, dann gibt es weniger Sprünge. Wenn Sie also eine Pause zwischen den Bildern von 33 ms einstellen, dann beträgt die tatsächliche Pause 15,625×3=46,875 ms.
Und warum? Einfach, interessant.
Und warum? Einfach, frage ich mich.
Nur sind es nicht wirklich 16ms, sondern 1000/64=15,625ms. Deshalb ist es besser, 30 ms anstelle von 32 ms einzustellen, dann gibt es weniger Sprünge. Wenn Sie also eine Pause zwischen den Bildern von 33 ms einstellen, dann beträgt die tatsächliche Pause 15,625×3=46,875 ms.
OK, ich werde das berücksichtigen.
Eine Verringerung der Timer-Frequenz wird die Belastung des Prozessors sicherlich verringern. Wenn die Qualität der Animation dadurch nicht beeinträchtigt wird, ist das großartig. Die CPU-Belastung kann um bis zu 30 Prozent gesenkt werden, aber sie wird immer noch hoch sein.
Damit müssen Sie sich abfinden.
Zugegeben, wenn die Zeichnung auf verschiedene Threads verteilt wird (z.B. ein Teil der Animation zeichnet den Expert Advisor, und ein Teil die Engine), dann würde die Last fast wegfallen. Wir müssen nachdenken...
Leider hat sich meine Vermutung nicht bestätigt.
Jetzt habe ich ein Experiment gemacht - ich habe einen EA auf zwei Charts gesetzt. Der Expert Advisor belastet den Prozessor zu 50 %.
Ich habe festgestellt, dass sich die CPU-Belastung auch bei der Arbeit mit verschiedenen Diagrammen summiert und die Gesamtbelastung der CPU auf der MT-Seite über 90 % beträgt.
Selbst die Aufteilung der Diagramme auf verschiedene Expert Advisors hilft also nicht. Die Belastung wird immer größer!
Leider hat sich meine Vermutung nicht bestätigt.
Jetzt habe ich ein Experiment gemacht - ich habe einen EA auf zwei Charts gesetzt. Der Expert Advisor belastet den Prozessor zu 50 %.
Ich habe festgestellt, dass sich die CPU-Belastung auch bei der Arbeit mit verschiedenen Diagrammen summiert und die Gesamtbelastung der CPU auf der MT-Seite über 90 % beträgt.
Selbst die Aufteilung der Diagramme auf verschiedene Expert Advisors hilft also nicht. Die Belastung wird immer größer!