MQL5-Trading-Ereignisse mit Warteschlange und Wiederholung an HTTP streamen
Zusammenfassung
Dieser Artikel erklärt, wie ein MQL5-Expert Advisor Trading-Ereignisse über WinINet an einen lokalen HTTP-Server senden kann. OnTradeTransaction serialisiert Eröffnungen und Schließungen als JSON und legt sie in eine Warteschlange im Arbeitsspeicher. Ein Timer-Callback versucht die Zustellung separat, damit Netzwerkverzögerungen den Trade-Callback nicht aufhalten. Die WinINet-Sitzung wird wiederverwendet; Verbindungs- und Anforderungs-Handles werden für jeden POST erstellt und anschließend geschlossen.
Das Design prüft zunächst den nächsten Eintrag der Warteschlange, sodass ein fehlgeschlagener Zustellversuch das Ereignis für einen erneuten Versuch darin belässt. Die Protokollierung unterscheidet den ersten Fehler, während eines Ausfalls eingereihte Trades und die erste erfolgreiche Zustellung nach Wiederherstellung. Der Artikel beschreibt einen Python-Empfänger und ein Testskript mit Prüfungen für JSON-Escaping, Überlauf der Warteschlange und einen HTTP-Roundtrip. Es handelt sich um ein Implementierungsbeispiel, nicht um eine Handelsstrategie oder einen Nachweis der Trading-Performance. WinINet-Aufrufe bleiben im Timer-Callback synchron. Bei einem Neustart des EA geht die Warteschlange verloren, und das beschriebene JSON-Escaping deckt keine Nicht-ASCII-Zeichen ab.
Kernaussagen
- Stellen Sie Trading-Ereignisdaten in OnTradeTransaction in eine Warteschlange und senden Sie sie über einen separaten Timer-Callback.
- Verwenden Sie das WinINet-Sitzungs-Handle erneut und öffnen Sie für jeden POST neue Verbindungs- und Anforderungs-Handles.
- Behalten Sie den vordersten Eintrag der Warteschlange, bis der Server eine erfolgreiche Antwort bestätigt, und entfernen Sie ihn anschließend.
- Unterdrücken Sie wiederholte Fehlermeldungen während eines Ausfalls und melden Sie stattdessen eingereihte Aktivitäten sowie eine Zusammenfassung nach der Wiederherstellung.
- Die Warteschlange im Arbeitsspeicher übersteht keinen Neustart des EA; Netzwerkaufrufe blockieren weiterhin den Timer-Callback.
Schlagwörter
Diese Zusammenfassung wurde vom Research-Agenten von Stratmill anhand des Originals verfasst; sie ist keine Kopie der Quelle.