![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Würde ein Echtzeit-Kernel in irgendeiner Weise helfen?
Bauen Sie mehr Kerne in das System ein und belasten Sie es nicht zu 100 % mit einem Kern.
Glauben Sie nicht an Märchen, Prozessoren und Thread Scheduler funktionieren nicht so, wie Sie es sich vorstellen.
In den neuesten Builds hat der Tick-Stream-Empfang auch theoretisch keine Auswirkungen. Praktisch funktioniert SymbolInfoTick bereits mit Cache, aber einzelne Bürger suchen weiter nach einer schwarzen Katze.
Und es sind nicht einmal 80 % im Test. Es hat 6 Agenten, die auf 4 Kernen laufen, d.h. 100% garantiert.
Die einzige Frage ist, wie der Taskplaner seines Systems mit dieser Situation umgeht. Gleichzeitig wird behauptet, dass es an der Umsetzung der Terminals liegt, die dafür verantwortlich ist.
Das heißt, es wird künstlich eine Situation geschaffen, in der ein Computer überlastet ist, in der buchstäblich alles auf ihm langsamer wird, und dann werden Behauptungen aufgestellt in der Form "Oh, sieh mal, warum ist der Terminal manchmal lags".
Verschließen wir die Augen vor der Tatsache, dass es selbst unter solchen Bedingungen "etwa 0,01 %" sind - zum Teufel mit den Details! Es genügt zu sagen, dass "sich niemand für die durchschnittliche Temperatur im Krankenhaus interessiert", "Verzögerungen beim Handel Probleme verursachen" und "wir wollen HFT".
Außerdem wollen wir natürlich HFT in 20 Experten auf einem alten Büro-Desktop oder einer toten virtuellen Maschine.
PS PositionSelectByTicket() hat in seiner Implementierung sicherlich Zugriff auf eine gemeinsame Ressource mit Zugriffssynchronisierung. Und wenn Sie nicht bei jedem Anruf die Position auswählen, lesen Sie den alten Kurs. Es war einfacher, einen "Schnappschuss" über SymbolInfoDouble zu machen.
danke
Ich habe meine Frage gestellt, weil ich vor sechs Monaten meinen Code optimierte und die Geschwindigkeit von Systemfunktionen testete, und vor sechs Monaten war SymbolInfoDouble langsamer als SymbolInfoTick
Vielleicht stimmt es ja, was Sie sagen. Ich habe heute ein paar Artikel über Multi-Core-Cache gegoogelt (ich habe mich schon lange nicht mehr für diese Informationen interessiert),
Hier ist ein kurzer Artikelhttps://i2hard.ru/publications/25666/
der Punkt ist, dass die Daten in der ALU nur aus dem L1-Cache laufen, der sehr klein ist, und wenn Sie den Prozessor mit voller Geschwindigkeit belasten, dann wirklich - der Test wird zu einem Test des Betriebssystems + Test der Prozessor-Cache-Geschwindigkeit (Laden, Vorhersage von L1+L3-Daten), aber nicht beim Testen von Code (Anwendung) Leistung
fxsaber, was, wenn Sie eine niedrige Priorität für Agenten in Task-Manager und eine hohe für MT5?
Ich kann kein Dienstprogramm finden, das alle Programme/OS-Threads daran hindert, einen bestimmten CPU-Thread zugewiesen zu bekommen. Andernfalls wäre es möglich, dass MT5 einen Thread reserviert und automatisch blockiert, dass er von anderen Programmen verwendet wird, was theoretisch Verzögerungen reduzieren könnte.
In den neuesten Builds hat der Tick-Stream-Empfang auch theoretisch keine Auswirkungen. Praktisch gesehen arbeitet SymbolInfoTick bereits mit einem Cache, aber einige Bürger suchen immer noch nach einer schwarzen Katze.
Ein bestimmter Bürger hat den MQL-Code aus seiner breiten Hosedupliziertbekommen, der zeigte, dass die Krücke unter den gleichen Bedingungen schneller arbeitet als die reguläre Funktion.
Aber Sie argumentieren, dass Ihre Funktion gut ist, sie hat nur Einschränkungen in Bezug auf die Einsatzbedingungen.
Und es sind nicht einmal 80 % im Test. Es laufen 6 Agenten auf 4 Kernen, d.h. 100% garantiert.
Die einzige Frage ist, wie der Taskplaner seines Systems mit dieser Situation umgeht. Gleichzeitig wird behauptet, dass es an der Umsetzung der Terminals liegt, die dafür verantwortlich ist.
Das heißt, es wird künstlich eine Situation geschaffen, in der ein Computer bis an seine Grenzen überlastet ist und alles langsamer wird, und dann werden Behauptungen aufgestellt in der Form: "Oh, sieh mal, warum ist das Terminal manchmal lags".
6/8 - nichts ist im Rückstand. Browser, Kompilierung, Debugging usw. laufen parallel, ohne dass es zu Verzögerungen kommt.
Aber jetzt habe ich absichtlich alles ausgeschaltet, so dass nur noch 4/8 Agenten übrig sind. Die Situation hat sich durch Ihre Funktionsbremsung nicht geändert.
Darüberhinaus wollen wir natürlich, dass HFT in 20 Experten auf einem alten Büro-Desktop oder einer toten virtuellen Maschine läuft.
Es wurde eine schnelle Maschine verwendet. Und nur 6 Charts gaben bereits die Bremse.
PS PositionSelectByTicket() hat in seiner Implementierung sicherlich Zugriff auf eine gemeinsame Ressource mit Zugriffssynchronisierung. Und wenn Sie die Position nicht bei jedem Anruf auswählen, lesen Sie den alten Preis. Es war einfacher, einen "Schnappschuss" über SymbolInfoDouble zu machen.
Ich benutze das auch.
Über welche Art von Geschwindigkeit in der Kampfleistung können wir sprechen, wenn es Probleme im Terminal gibt.
Der Expert Advisor scannt alle Finanzinstrumente und sucht nach einem bestimmten Muster.
Er stolpert über ein Symbol und hält sich fest!!!
Code von Hilfe, ich habe nur Schritte, Finanzinstrument mit Problem und Timer:
Ergebnis der Arbeit:
Ich habe nie darauf gewartet, dass das Skript zu Ende läuft.
Solange das Terminal solche Fehler hat, ist an eine Kampfausführung nicht zu denken!!!
Es wurde erwartet, dass, wenn ein Wertpapier in die Marktübersicht aufgenommen wird, zumindest alle seine Eigenschaften und das Anfangsdatum der Historie für es abgerufen werden. Wenn es auf dem Server keinen Verlauf gibt, dann
SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date)
Sollte sofort NULL zurückgeben, warum die Ausführungszeit 18446744073475877138 ?
Vielleicht weiß ich etwas nicht, die Funktion CopyXXX bleibt auch 16-29 Sekunden hängen!!!
Es ist nicht normal, dass ein Makler 3000-6000 Finanzinstrumente im Angebot hat.
Vielleicht weiß ich nicht was, die CopyXXX Funktionen hängen auch 16-29 Sekunden!!!
Es ist nicht normal, dass ein Broker 3000-6000 Finanzinstrumente im Angebot hat.
Bars sind böse. Also bitte in einem anderen Thread darüber schreiben.
Bars sind böse. Also bitte in einem anderen Thread darüber schreiben.
Vielleicht wissen Sie, wie man programmgesteuert ein Finanzinstrument auswählt und nicht ewig hängenbleibt?
Vielleicht wissen Sie, wie man programmgesteuert ein Finanzinstrument auswählt und nicht ewig hängenbleibt?
Ich bin noch nicht auf eine solche Aufgabe gestoßen.
fxsaber, was, wenn Sie eine niedrige Priorität für Agenten in Task-Manager und eine hohe für MT5?
Ich kann kein Dienstprogramm finden, das die Zuweisung eines bestimmten CPU-Threads an alle Programme/OS-Threads blockiert. Andernfalls wäre es möglich, einen Thread für MT5 zu reservieren und seine Belegung durch andere Programme automatisch zu blockieren, was theoretisch Verzögerungen verringern könnte.
Setzen Sie alle Agenten auf die niedrigste Priorität.
Das funktioniert nicht.
ZZZ Die Anzahl der laufenden EAs beeinflusst das Ergebnis.
Liebe Entwickler, könnten Sie mir bitte mitteilen, wie MQL_MEMORY_USED berechnet wird?
Ich habe den Speicherplatz berechnet, den alle Variablen des EA belegen.
Sie beträgt weniger als 10 %. Wenn ich es richtig verstehe, umfasst MQL_MEMORY_USED den History-Cache und den CopyTicks-Cache. Aber es ist immer noch viel weniger.
Gleichzeitig verbraucht der parallele Expert Advisor ein Vielfaches weniger. Aber das Prinzip ist das gleiche.
Was ist im Allgemeinen in diesem Wert enthalten?
Ich habe eine Vorlage mit Expert Advisor gespeichert und sie auf dasselbe Diagramm angewendet, indem ich ein Neuladen veranlasste. Ich habe es so gesehen.
Die Speichernutzung hat sich um fast eine Größenordnung verändert. Es ist im Moment schwer zu erklären, was das bedeutet.