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
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Bibliotheken: MT4Orders
fxsaber, 2023.07.07 13:12
Leistung.
Leistungstabelle (Ausführungszeit in Millisekunden) für b3815 und b2958.
MT4Orders vom 20.07.2022 wurde überall verwendet.
Mit der gleichen Methodik, eine Vergleichstabelle von zwei MT5-Builds: b4040 und b4057.
Auf b4057+ ist die Leistung von MT4Orders bei der Arbeit mit der Historie nicht schlechter als die des nativen MQL5.
Daher ist die früher gegebene Empfehlung nicht mehr relevant (für MT5 b4057+).
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien.
Bibliotheken: MT4Orders
fxsaber, 2023.07.07 13:12
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Bibliotheken: MT4Orders
fxsaber, 2017.06.14 11:30 AM.
Wenn Sie verstehen müssen, machte das Terminal eine Ablehnung auf den Handel Ordnung oder der Server.
Real. Ich benutze MT4Orders, virtuelle Umgebung über Virtual, ich synchronisiere Virtual mit Real. Zu diesem Zweck gehe ich bei jedem Tick die in Real geöffneten Orders mehrmals durch. Zu diesem Zweck erstelle ich beim ersten Durchlauf eine Liste der Aufträge, die mich interessieren, und bei den weiteren Durchläufen arbeite ich mit dieser Liste.
Früher hatte ich einen solchen Code:
Die Praxis hat gezeigt, dass dies kein guter Weg ist. Ein teilweise gefüllter Begrenzer generiert 2 Aufträge mit demselben Ticket, und beim zweiten Durchlauf wird es ein Missgeschick sein.
Jetzt bin ich auf diesen Code umgestiegen
Zusätzlich wird vor der Arbeit ein Snapshot gemacht. Funktioniert das korrekt oder kann da noch was kommen?
Der Code sah bisher folgendermaßen aus:
Die Praxis hat gezeigt, dass dies keine gute Methode ist. Ein teilweise gefüllter Begrenzer erzeugt 2 Aufträge mit demselben Ticket, und beim zweiten Durchlauf wird er zum Pechvogel.
Es wird kein Unglück geben, wenn Sie es auf diese Weise machen.
AddToArray(OrderTickets, (OrderType() <= OP_SELL) ? OrderTicket() : - OrderTicket());Dies ist eine Funktion von MT4Orders. SELECT_BY_TICKET ist jedoch kein schneller Mechanismus in MT4/5 und Virtualisierung. Einer der Gründe dafür ist, dass er, wenn er unter den Live-Tickets nicht fündig wird, auf die Historie zurückgreift (das MODE_TRADES-Flag ist nur eine Prioritätsangabe, wo er zuerst suchen muss).
Jetzt habe ich zu diesem Code gewechselt
Zusätzlich wird vor der Arbeit ein Snapshot gemacht. Wird dies korrekt funktionieren oder kann etwas anderes auftreten?
Wir sprechen hier bereits über das Add-on von Virtual.mqh. Natürlich beschleunigen Snapshots die Arbeit sehr, wenn viele Charaktere/Magier gehandelt werden.
Snapshot reduziert die Arbeit mit der Umgebung außerhalb des Expert Advisors (Trading API) auf ein Minimum. D.h. die langsamsten Funktionen werden einmal für das anfängliche Lesen aufgerufen, und dann geht die gesamte Arbeit mit der Handelsumgebung innerhalb des EA, ohne dass der Programmierer es merkt, weil es derselbe MT4-Stil ist.
Es macht Sinn, eine dieser Snapshot-Varianten zu verwenden.
Sie können VIRTUAL::Snapshot() tausendmal hintereinander aufrufen, aber es wird nicht öfter mit der externen Handels-API interagieren, als in VIRTUAL_SNAPSHOT_REFRESHTIME eingestellt (im Beispiel ist es eine Millisekunde - das reicht mir). Es muss also nichts auswendig gelernt werden, der Code sieht ungefähr so aus.
Hier ist mein Synchronisationscode (aufgerufen für jede subTS) mit virtuellen Umgebungen.
Anhand des hervorgehobenen Teils können Sie die Erstellung des Snapshots sehen. Er sollte nach Bremsfunktionen aufgerufen werden. Zum Beispiel, OrderSend. Wenn Sie es ein zusätzliches Mal aufrufen, ist es keine große Sache, wie im obigen Code gezeigt.
Der Quellcode ist jedoch aus einem anderen Grund angegeben. Ich habe alle potenziell langsamen Funktionen in ein Makro gesteckt, das die Synchronisierung komplett stoppt, wenn während der Synchronisierung ein neuer Tick (SymbolInfoTick oder CopyTicks) eintrifft, denn neue Ticks müssen zuerst durch alle Virtuals geworfen werden und werden erst dann mit dem Real synchronisiert. Alles ist genau so, wie es bei Handelskopierern und externen Krypto-Börsen funktionieren sollte.
Kein Problem.
irgendein Fehler
irgendein Fehler
Das ist normal.