und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
CExecutionSafety - Ping + Execution Latency Guard for MQL5 EAs - Bibliothek für den MetaTrader 5
- Ansichten:
- 26
- Rating:
- Veröffentlicht:
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Überblick
CExecutionSafety ist eine leichtgewichtige MQL5-Include-Klasse, die Expert Advisors vor der Ausführung von Trades unter schlechten Netzwerk- oder Ausführungsbedingungen schützen soll.
Sie misst zwei Latenzkomponenten, den Live-Terminal-Ping und die reale Wanduhr-Ausführungsverzögerung, und blockiert Handelsversuche, wenn ihr kombinierter Wert einen konfigurierbaren Schwellenwert überschreitet.
Das Problem, das es löst
Die meisten EAs werden unabhängig von den Netzwerkbedingungen blind ausgeführt. Eine Spitze im Ping oder eine Ausführungsverzögerung auf der Brokerseite während einer kritischen Order kann zu Slippage, Requotes oder fehlgeschlagenen Fills führen.
CExecutionSafety führt ein Pre-Trade Safety Gate ein, das die Ausführung verhindert, wenn die Bedingungen verschlechtert sind.
Wie es funktioniert
Die Klasse verwendet zwei Datenquellen:
- TERMINAL_PING_LAST: liest den letzten von MetaTerminal aufgezeichneten Ping (in Millisekunden)
- RecordExecDelay(): akzeptiert eine Wanduhrmessung, die Sie um jede CTrade-Operation wickeln
Diese beiden Werte werden addiert und mit dem von Ihnen konfigurierten Schwellenwert verglichen. Wenn die kombinierte Latenzzeit den Schwellenwert überschreitet, gibt CheckExecutionSafety() den Wert false zurück und gibt einen Diagnoseprotokolleintrag aus.

Schutz vor Verbindungsabbruch
Wenn das Terminal keinen Serverkontakt hat, gibt TERMINAL_PING_LAST -1 zurück. Die Klasse erkennt dies und gibt automatisch den Wert false zurück, um Handelsversuche auf einem nicht verbundenen Terminal zu verhindern.
Beispiel für die Integration
Binden Sie die Datei ein und instanziieren Sie die Klasse in Ihrem EA:
#include <DeeFX/CExecutionSafety.mqh> CExecutionSafety safety; int OnInit() { safety.Init(150); // 150ms combined threshold return INIT_SUCCEEDED; } void OnTick() { if(!safety.CheckExecutionSafety()) return; ulong t0 = GetTickCount64(); trade.PositionClose(ticket); safety.RecordExecDelay(GetTickCount64() - t0); }
Zugriffsfunktionen
Die folgenden schreibgeschützten Zugriffsfunktionen sind für die Dashboard-Anzeige oder externe Logik verfügbar:
- GetPingMs(): aktueller Terminal-Ping in ms
- GetExecDelayMs(): letzte aufgezeichnete Ausführungsverzögerung in ms
- GetCombinedMs(): Ping + Ausführungsverzögerung kombiniert (gibt 9999 zurück, wenn die Verbindung unterbrochen wurde)
- HasExecSample(): true, wenn mindestens eine Messung aufgezeichnet wurde
- GetThresholdMs(): konfigurierte Sicherheitsschwelle
Änderungsliste
- v1.0 - Erste Freigabe
- v1.1 - Guard-Makro umbenannt. %I64u-Formatspezifizierer durch (String-)Casts ersetzt
- v1.2 - Init() Rückgabetyp geändert void → bool. Status wird bei einem erneuten Aufruf zurückgesetzt, um veraltete Samples zu verhindern
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/70033
POC Market Levels_styled
185 POC bars with center and optional profile chart. Double-clicking the POC line extends it to the end of the current period. Selected POCs are retained when switching timeframes.
Combine Multi Timeframe Trends into one trend using MA.
Kombinieren Sie Trends mit mehreren Zeitrahmen zu einem Trend mit MA.
Accumulation/Distribution
Der Accumulation/Distribution Indikator wird aus Änderung von Preis und Volumen bestimmt.
Accelerator Oszillator (AC)
Der Acceleration/Deceleration Indikator (AC) misst die Beschleunigung und Verlangsamung des aktuellen Marktimpulses, der Kraft der Kursbewegung.