Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 222
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
Das ist nichts Neues, so hat es von Anfang an funktioniert.
Nur wenn die Daten größer als __atomic__ sind, sollte der Zugriff mit kritischen Abschnitten umhüllt/geschützt werden (oder mit einem Mutex zum Terminal std::thread)
Nun, ich kannte dieses Verhalten nicht und hatte einen separaten Prozess beim Importieren erwartet.
Ich dachte, dass globale DLL-Zeiger neu sein wird, in jedem geladenen MT5-Programm.
Mit dem, was ich hatte zu schwitzen, um die Logik zu verstehen, wundern, warum der Fehler im Speicher auftauchen wird.
Aber wenn ich herausgefunden, den Grund durch try (print) Methode, dann die ganze architektonische Plan der Arbeit mit DLL wird anders gebaut werden.
Mann, du hast Recht mit den Mutexen, daran habe ich nicht gedacht. Danke für den Hinweis.
Ja, aber wenn die Methode keine Parameter hat, können Sie das tun:
Anwendung:
Bei Teilausführungen von Aufträgen ändert sich das FeldORDER_TIME_SETUP_MSC.
Infolgedessen kann DEAL_TIME_MSC kleiner sein als ORDER_TIME_SETUP_MSC seines Auftrags.
Wie wäre es mit einer benutzerdefinierten Vergleichsfunktion?
Sie haben Recht, danke! Ich habe es an einer flachen Stelle übertrieben. Ich überlasse Ihnen Ihre Variante zum Sortieren.
Bewerbung.
ZZY Es ist schade, dass es nicht nach Teilfeld oder Methode funktioniert.
Hier ist das optimierte QuickSort aus meiner Bibliothek, leicht angepasst an deine Anforderungen.
Es kann große Arrays ohne Stacküberlauf sortieren (wegen unkontrollierter Rekursion).
Hallo und danke für die Mitteilung!
Das wäre perfekt, wenn es funktionieren würde. Wenn ich es jedoch in ein .mq5-Skript einfüge und ausführe, löst Ihr Code leider folgende(n) Fehler aus:
Könnten Sie dies bitte korrigieren? Für Sie ist es wahrscheinlich einfach, während ich nicht wüsste, wo ich anfangen sollte :-)
Wenn Sie ArrayInsert verwenden, können Sie Speicher sparen, wenn Array_Destination[] kleiner ist als Array_Source[], aus dem Elemente hinzugefügt werden.
Um dies zu erreichen, sollten Sie ArraySwap zweimal anwenden: vor und nach ArrayInsert.
Dies ist zum Beispiel relevant, wenn man mit großen MqlTick Archiven arbeitet, etc.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Besonderheiten der Sprache mql5, Feinheiten und Techniken der Arbeit
fxsaber, 2022.02.20 15:00
Sie haben recht, danke! Ich overmudryl auf einen geraden Platz. Ich werde Ihre Variante zum Sortieren lassen.
Anwendung.
Es gab einen Fehler in der Partitionsmethode. Korrigierte Version.
Es gab einen Fehler in der Partitionsmethode. Korrigierte Version.
Für den speziellen Fall, dass ein numerisches Feld zum Sortieren verwendet wird (die häufigste Situation), habe ich eine Variante geschrieben, die um mehrere Größenordnungen schneller ist als die vorherige. Aber sie verbraucht doppelt so viel Speicher. Sie ist für große Arrays relevant.
Anwendung (mit Messung der Ausführungszeit).
Ergebnis.