Tester zur Unterstützung von MG4-Skripten und Beratern - Seite 11

 
Renat:

CopyXXX hat die gleiche Geschwindigkeit wie die Funktionen iClose/iOpen/iXXXX. Nur iXXX gibt jeweils ein Element zurück, während CopyXXX viele Elemente zurückgibt und somit effizienter und schneller ist.

Wahrscheinlich bedenken Sie nicht, dass MT4 vor jedem Tick-Handler-Start zwangsweise _alle_ Historien des lokalen Charts in die lokale (Cache-) Marktumgebung des EA kopiert. Und das ist sehr teuer, obwohl wir eine Methode zur wirtschaftlichen Aktualisierung dieser Informationen haben. Die spezielle Funktion RefreshRates in MQL4 bewirkt eine erzwungene Auffrischung der Caches und der Historie des lokalen Diagramms.

Der Aufruf von CopyXXX ist viel effizienter und bietet einen sehr präzisen und genauen Mechanismus für die Zwischenspeicherung zuvor angeforderter Daten. So müssen Sie zum Beispiel nicht bei jedem Tick den tiefen Verlauf neu abfragen, sondern speichern/schreiben ihn lokal und greifen so schnell wie möglich darauf zu.

Vergleicht man die alten Methoden des "direkten" (nicht wirklich direkten) Zugriffs Open/High/Low/Close und die Arbeit mit dem lokalen Array double local[xxxx], so ist letztere um ein Vielfaches schneller. Daher ist es besser, sich selbst lokal zu kopieren und dann einen schnellen lokalen Zugriff auf wiederholt abgefragte Daten zu haben.

Was ist mit "Tick-Handler" gemeint - benutzerdefinierte Funktionen wie OnTick? Warum wollen Sie den gesamten Verlauf kopieren und nicht nur die Daten, die angezeigt werden?
 
Vinin:
Dies ist kein Indikator.
Ich habehier einen Link zu einem OOP-Indikator angegeben.
 
C-4:
Was ist mit "Tick-Handler" gemeint - benutzerdefinierte Funktionen wie OnTick? Warum ist es notwendig, den gesamten Verlauf zu kopieren und nicht nur die Daten, die erschienen sind?

Ja, OnTick/OnStart.

Ich halte es für eine Offenbarung für viele, dass der direkte Zugriff auf den lokalen Chart in MT4 nicht wirklich direkt ist. Der Speicherverbrauch und die Synchronisationsverluste sind doppelt so hoch.

Glücklicherweise ist die Cache-Aktualisierung sparsam, aber sie verursacht dennoch Systemkosten. In MT5 haben wir den lokalen Cache komplett abgeschafft und der System-Overhead vor dem Aufruf von OnTick/OnStart ist geringer.

 
Renat:

Ja, OnTick/OnStart.

Ich halte es für eine Offenbarung für viele, dass der direkte Zugang zum lokalen Chart in MT4 nicht wirklich direkt ist. Der Speicherverbrauch und die Synchronisationsverluste sind doppelt so hoch.

Glücklicherweise haben wir eine sparsame Cache-Aktualisierung, die aber immer noch Systemkosten verursacht. In MT5 haben wir den lokalen Cache komplett abgeschafft und der System-Overhead vor dem OnTick/OnStart-Aufruf ist geringer.

Vor einem Jahr haben wir über die Leistung von MT4/MT5-Testern diskutiert. Der Standard-EA "MovingAverage" in MT4 führte einen einzigen Durchlauf in einer Minute unter ähnlichen Testbedingungen durch, während er in MT5 2:34 benötigte. Warum der Unterschied in der Zeitskala? Das erste, was einem in den Sinn kommt, ist die "Modularität" des MT5 und das große Volumen der Handelsumgebung, die der MT5 während des Laufs zu bewältigen hat.
 
C-4:
Vor einem Jahr haben wir über die Leistung von MT4/MT5-Testern gesprochen. Der Standard-EA "MovingAverage" in MT4 führte unter ähnlichen Testbedingungen einen einzigen Lauf in einer Minute durch, während er in MT5 2:34 benötigte. Warum der Unterschied in der Zeitskala? Das erste, was einem in den Sinn kommt, ist die "Modularität" des MT5 und das große Volumen der Handelsumgebung, die der MT5 während des Laufs zu bewältigen hat.

Modularität, externer Prozess und bessere Modellierung der Umgebung, zugeschnitten auf die Ausführung in mehreren Währungen.