Mein Ansatz. Der Kern ist der Motor. - Seite 125

 
Реter Konow:

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, die 2-3 Seiten des Threads sind vorbei.
 
Vladimir:
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.

 
Wozu braucht man 64 Bilder pro Sekunde (16ms), 32 Bilder pro Sekunde sind für das Auge ausreichend.
 
Nikolai Semko:
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....

 
Реter Konow:

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

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.
Und Sie müssen bedenken, dass MT seinen eigenen internen Chart-Update-Handler hat, so dass ChartRedraw asynchron arbeitet und es keine Garantie dafür gibt, dass MT alle Updates verarbeitet.

 
Nikolai Semko:
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 Sie müssen bedenken, dass MT seinen eigenen internen Chart-Update-Handler hat, so dass ChartRedraw asynchron arbeitet und es keine Garantie dafür gibt, dass MT alle Updates verarbeitet.

Und warum? Einfach, interessant.

 
Алексей Тарабанов:

Und warum? Einfach, frage ich mich.

Ich bin zu diesen Schlussfolgerungen gekommen, nachdem ich viel experimentiert und wissenschaftlich ausprobiert habe. Wenn jemand Experimente hat, die meine Behauptungen widerlegen, wäre ich sehr dankbar.
 
Nikolai Semko:
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.
Und wir sollten nicht vergessen, dass MT seinen eigenen internen Chart-Update-Handler hat, so dass ChartRedraw asynchron arbeitet und es keine Garantie gibt, dass MT alle Updates verarbeitet.

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!

 
Реter Konow:

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!

Wenn es MT4 ist, dann ja.
Soweit ich weiß, unterstützt MT5 im Gegensatz zu MT4 Multi-Core und Multi-Threading vollständig.
Grund der Beschwerde: