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
Vielleicht gibt es eine schnellere Möglichkeit. Aber ein Schritt nach links in der Bedingung, was gezählt werden muss, und die Logik muss sich möglicherweise erheblich ändern. Im Allgemeinen nicht einfach.
Das ist keine Zwischenspeicherung, sondern eine Indizierung. Hier ist Caching (Teil des Codes):
Der Code wurde hastig geschrieben und es gibt viel zu verfeinern, angesichts der häufigen ArrayResize, aber es aktualisiert genau den Cache, sortiert nach Closed. Wenn Sie später suchen wollen, verwenden Sie Ihren eigenen Index. Sie müssen aber jedes Mal nur einen kleinen Teil aktualisieren.
Ich weiß nicht mehr, warum dort"12*3600" steht, ich glaube nicht, dass alle Angebote an mich ausgegeben wurden.
Es handelt sich nicht um eine Zwischenspeicherung, sondern um einen Index.
Bitte sorgfältig lesen.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
MT5 und Geschwindigkeit in Aktion
fxsaber, 2020.08.28 21:10
Reines MQL5 ist 100x langsamer als partielles (nur HistorySelectByPosition) Caching.
Hier ist Caching (Teil des Codes):
Der Code wurde hastig geschrieben und hat einige Dinge zu verbessern angesichts der häufigen ArrayResize, aber es aktualisiert Cache sortiert nach Closed. Wenn Sie später suchen wollen, verwenden Sie Ihren eigenen Index. Sie müssen aber jedes Mal nur einen kleinen Teil aktualisieren.
Dies ist nur ein Beispiel für eine frontale Geschichtsrettung ohne reale Gimmicks. Selbst in MT4Orders wird ein Teil des Caching mit einer Marge von fünf Sekunden durchgeführt...
Ich weiß nicht mehr, warum dort"12*3600" steht, ich glaube nicht, dass alle Gewerke an mich ausgegeben wurden.
Setzen Sie immer INT_MAX.
Architektonisch gesehen erfordert die vollständige Zwischenspeicherung eine Menge Überlegungen. Es gibt eine Reihe von Fallstricken.
Es ist wirklich nichts Kompliziertes dabei. Sie können zum Beispiel stundenlang eine Stichprobe für alle Aufträge machen, die rückwirkend in der Geschichte auftauchen könnten (was übrigens sehr merkwürdig ist).
Dies ist nur ein Beispiel dafür, wie man die Geschichte frontal speichert, ohne irgendwelche Echtzeit-Gimmicks. Sogar in MT4Orders wird ein Teil des Caching mit einer Marge von fünf Sekunden durchgeführt...
Setzen Sie immer INT_MAX.
Ich verstehe nicht, was der Sinn dieser Verschiebung ist. Wenn es einen aktuellen Zeitstempel gibt, möchte ich mich relativ dazu bewegen, und es ist seltsam, dass man eine Zeit angeben muss, die nicht existiert. Ich möchte eine logische Erklärung haben.
Mein Cache funktioniert übrigens auf realen Konten mit 10k+ Trades.
Und die wichtigsten Bremsen im Code sind bisher die Netzwerkfunktionen.
In der neuesten Beta-Version 2588 wird die HistorySelect-Funktion sehr gut zwischengespeichert und ist fast immer (außer beim ersten Mal) kostenlos.
Bis zur Veröffentlichung werden wir wahrscheinlich eine Reihe weiterer Verbesserungen vornehmen.
Wie ich bereits erklärt habe, gibt es im MT5 keine zusätzlichen Kosten für die automatische Erstellung von Markt-Snapshots für jeden EA vor jedem Ereignis, wie es im MT4 der Fall war. Dadurch werden Verzögerungen verringert und die Roboter können schneller arbeiten. Jeder Entwickler fragt genau das, was er braucht.
Daher sollten Sie sich darüber im Klaren sein, dass der Ansatz "Ich rufe HistorySelect für den gesamten Verlauf auf und mache dann sofort eine weitere Auswahl mit HistorySelectByPosition" die zuvor erstellten Zwischenspeicher des Verlaufs zerstört. Das ist ein Schuss ins eigene Knie.
Nach der Veröffentlichung werden wir intensiv daran arbeiten, neue, effizientere MQL5-Funktionen und offene native Order-/Handelsdatenstrukturen hinzuzufügen, um den Algotrading-Prozess zu vereinfachen und zu beschleunigen.
In der neuesten 2588-Beta-Version wird die HistorySelect-Funktion sehr gut zwischengespeichert und ist fast immer (außer beim ersten Mal) frei.
Ergebnis.
Bei jeder Zecke gibt es ein Problem.
ZY hat Win10 installiert, LatencyMon zeigt, dass alles in Ordnung ist.
Nach der Veröffentlichung werden wir intensiv daran arbeiten, neue, effizientere MQL5-Funktionen hinzuzufügen und native Order-/Handelsdatenstrukturen zu öffnen, damit der algorithmische Handel vereinfacht und beschleunigt werden kann.
MqlDeal, MqlOrder und MqlPosition wären toll. Es könnte sogar einfacher werden.
Im Moment sehe ich, dass wir in 99 % der Fälle nur HistorySelect(0, INT_MAX) verwenden sollten. Versuchen Sie, die anderen Optionen nicht zu verwenden.
Wenn ich Hunderttausende von Aufträgen in meiner Historie habe, geht es dann auch schneller als mit der Last-Minute-Historie?
Muss ich diese ganze Geschichte also noch einmal durchgehen? Das macht keinen Sinn.
Wenn ich Hunderttausende von Aufträgen in meiner Historie habe, ist es dann auch schneller, als wenn ich den Last-Minute-Verlauf nehme?
Nur noch 0-INT_MAX Variante bei Kampfrobotern. Ich habe die Verzögerungen nicht mehr bemerkt.