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
Mehr als einmal habe ich Situationen erlebt, in denen Terminal die CPU so stark belastet, dass sie auf nichts mehr reagiert.
Dann schaute ich mir die Protokolle an und sah, dass in OnTick wildes Überspringen von Ticks stattfand. Wenn ich jedoch einen EA richtig schreibe, wird sich diese katastrophale Situation nicht auf die Handelsergebnisse auswirken. Ich habe es genau analysiert, alles ist klar.
Ich frage mich, wie weit verbreitet die Mechanismen für den Umgang mit Verzögerungen bei Market Products sind. Ich habe nicht ein einziges Mal gesehen, dass die Maschinenleistung zum Laufen gebracht werden muss. Mindest-Ping ist ein Ja.
Wo haben Sie sie auf den Weg gebracht?
Wenn auf VPS für 2-5 Dollar, dann Verzögerungen in Zehn-und Hunderte von Millisekunden sind leicht in jedem kaum ernst WinAPI-Funktion gefangen. Alles verlangsamt sich ab der Hypervisor-Ebene und verwandelt eine virtuelle Maschine in eine Diashow.
Wie oben erklärt.
Es ist nicht GetMicrosecondsCount, das verlangsamt, es ist das Betriebssystem, das die CPU-Ressourcen für jeden Thread in Ihrem strangulierten VPS quantifiziert. Für jede Funktion, jede Aktion, jedes Programm innerhalb Ihrer UPU.
Nun, keine CPU-Shell kann Ressourcen gerecht aufteilen und zuweisen, wenn sie 20 (das ist immer noch respektabel) Betriebssysteme mit 1500 Threads pro Kopie ausführt. Man nehme 8-16 Kerne und verteile sie auf 20 * 1.500 = 30.000 (dreißigtausend physische Spuren).
In meinem Fall (virtuelle Box mit vin7 + 2 Kerne + 16 GB RAM auf meiner eigenen Hardware, auf der nichts anderes läuft), woher kommen die periodischen 2-3 µs?
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
MT5 und Geschwindigkeit im Gefecht
Andrey Khatimlianskii, 2020.10.05 10:19
Nicht wirklich eine UPU, sondern eine virtuelle Maschine auf gemieteter Hardware:
In meinem Fall (virtuelle Box mit win7 + 2 Kerne + 16GB RAM auf seine eigene Hardware mit nichts anderes Spinning), woher kommt die periodische 2-3 µs?
Das ist der Preis der doppelten Virtualisierung.
Zumal VirtualBox kein vollwertiger Hypervisor vom Typ Hyper-V ist, sondern auf Ihrem aktuellen Desktop-Betriebssystem (auch Windows 7?) aufsetzt, das eine CPU-Shell für einen anderen Anwendungsfall hat.
Sie haben also: Windows 7/10 -> VirtualBox -> Windows 7. Im Wesentlichen zwei Virtualisierungsebenen, wobei die erste Ebene nichts von den Ambitionen von VirtualBox weiß und es nur als normales Programm betrachtet. Die CPU-Ressourcenzuweisung (der Threadsheduler) ist eindeutig verkorkst.
So sollte es sein: Hyper-V 2016/2019 -> Windows 2016/2019
Es ist nicht GetMicrosecondsCount, das verlangsamt, es ist das Betriebssystem, das die CPU-Ressourcen für jeden Thread in Ihrem strangulierten VPS quantifiziert. Für jede Funktion, jede Aktion, jedes Programm innerhalb Ihrer UPU.
Ich denke, ein Argument wie dieses wird Sie zum Nachdenken bringen. Berater.
Das ist weit davon entfernt, alles zu verlangsamen. Deshalb konnte ich ganz harmlos zu winmm::timeBeginPeriod(1)+winmm::timeGetTime() wechseln und erhielt die gleiche Geschwindigkeit wie GetTickCount, aber ohne die gefürchtete 16 ms-Grenze. Marktproduzenten dürfen dies jedoch nicht tun, da es sich um eine DLL handelt. Es ist unwahrscheinlich, dass Sie eine reguläre Millisekundenversion erstellen.
Die MQL5-Funktion zum Minimieren aller Fenster und der Anwendung selbst ist eine großartige Idee. Daran werden wir arbeiten.
Hier ist noch etwas anderes.
Terminal auf einem VPS betreibt, dann wird er sehr dagegen sein, dass alles plötzlich umgestellt wird. Er kann und sollte Windows selbst minimieren, wenn er die RDP-Sitzung verlässt.
Hier ist ein Beispiel für das, was ich sagen wollte.
Beide Server sind verschiedene Broker, befinden sich im selben Gebiet, können sich am selben Ort befinden.
Auf der Servicekarte wird vorgeschlagen, dass AMP im Vereinigten Königreich ansässig ist.
Und für Just bietet aus irgendeinem Grund in NL.
Warum? Wenn es einen näheren vpc gibt.
Ich denke, das ist ein Argument, das Sie zum Nachdenken anregen wird. Berater.
Das ist weit davon entfernt, die Dinge zu verlangsamen. Deshalb konnte ich ganz harmlos zu winmm::timeBeginPeriod(1)+winmm::timeGetTime() wechseln und erhielt eine Geschwindigkeit wie GetTickCount, aber ohne die gefürchtete 16ms-Grenze. Marktproduzenten dürfen dies jedoch nicht tun, da es sich um eine DLL handelt. Es ist unwahrscheinlich, dass Sie eine reguläre Millisekunden-Version machen werden.
Nun, Sie sind ein Meister der rasanten Stresstests ohne Korrelation oder Angemessenheitskontrolle.
Die Messung im Mikrosekundenbereich erfordert natürlich Ressourcen, um Intervalle zu messen, die 1000 Mal kleiner sind als eine Millisekunde.
Wenn Sie gelegentlich Intervalle sehr genau messen müssen, dann verwenden Sie Mikrosekunden. Und es kostet Sie 0 Mikrosekunden.
Wenn Sie so eingestellt sind, dass Sie das Millionenfache als Selbstvermessung bezeichnen, machen Sie sich wahrscheinlich etwas vor.
Auf einem unterdrückten VPS ist die Übertaktung des Systemtimers über timeBeginPeriod riskant. Sie erhöhen nur Ihren CPU-Overhead:
Andernfalls hätte das Betriebssystem schon vor langer Zeit ein genaues GetTickCount/GetTickCount64 erstellen und sich über die freie Genauigkeit freuen sollen. Aber nein, Sie müssen für die Genauigkeit dieses Zeitmessers bezahlen.
Hier ist ein Beispiel für das, was ich sagen wollte.
Beide Server sind verschiedene Broker, befinden sich im selben Gebiet, können sich am selben Ort befinden.
Auf der Servicekarte wird vorgeschlagen, dass AMP im Vereinigten Königreich ansässig ist.
Und für Just bietet aus irgendeinem Grund in NL.
Warum? Wenn es eine PSTN-Nähe gibt.
Wir kennen die Geopunkte der Server, und hier werden die Positionen der Brokerserver aus den GeoIP-Basen gebildet.
Und es kommt häufig vor, dass die Informationen nicht der Realität entsprechen. Daher sollten wir niemals davon ausgehen, dass die Position des Maklers korrekt ist.
Wir werden uns das morgen genauer ansehen, denn wir müssen alles noch einmal manuell überprüfen und neu scannen, um die Frage zu beantworten.
Das ist der Preis der doppelten Virtualisierung.
Vor allem, weil VirtualBox kein vollständiger Hypervisor vom Typ Hyper-V ist, sondern auf Ihrem aktuellen Desktop-Betriebssystem (auch Windows 7?) aufbaut, das über eine CPU-Shell verfügt, die auf einen anderen Anwendungsfall zugeschnitten ist.
Sie haben also: Windows 7/10 -> VirtualBox -> Windows 7. Im Wesentlichen zwei Virtualisierungsebenen, wobei die erste Ebene nichts von den Ambitionen von VirtualBox weiß und es nur als normales Programm betrachtet. Die CPU-Ressourcenzuweisung (der Threadsheduler) ist eindeutig verkorkst.
So sollte es sein: Hyper-V 2016/2019 -> Windows 2016/2019
Nein, ich habe Virtualisierer auf meinem CentOS im Einsatz. Aber ich bin nicht befugt, diesen Dialog fortzusetzen.