Diskussion zum Artikel "Ereignisgesteuerte Architektur in MQL5: Wie aus einem Expert Advisor ein vollwertiges Handelssystem wird"
Die Arbeit in einem Expert Advisor mit Indikatoren ohne Puffer ist wahrscheinlich ein gutes Beispiel.
//+------------------------------------------------------------------+ //| Funktion Handel| //+------------------------------------------------------------------+ void OnTrade() { Sleep(0); //--- } //+------------------------------------------------------------------+ //| TradeTransaction-Funktion| //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { Sleep(0); //--- }Wofür?
fxsaber #:
Die Arbeit in einem Expert Advisor mit Indikatoren ohne Puffer ist für ein Beispiel wahrscheinlich in Ordnung.
Die Arbeit in einem Expert Advisor mit Indikatoren ohne Puffer ist für ein Beispiel wahrscheinlich in Ordnung.
In dem Beispiel wird eine strenge Aktualisierung der Symboldaten durchgeführt (es wäre gut, MQL_TESTER zu verwenden).
void OnTick() { //--- if(BuySignal) { cSymbol.Refresh(); cSymbol.RefreshRates();
Aber es wird nicht die Relevanz des Signals und des Ticks überprüft, die durch die Ereignisse berechnet werden. Und das ist ein echtes Problem.
Es kann durch asynchrones OrderSend abgeschwächt, aber nicht gelöst werden. Daher müssen wir auch in einem solchen Beispiel in ChartEvent-Event zusätzlich die Daten des Ticks übergeben, bei dem die Ereigniserzeugung erfolgte.
Großartig, der Service-Typ von MQL5-Programmen ist so unterschätzt.
Tolles Beispiel, danke.
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
Neuer Artikel Ereignisgesteuerte Architektur in MQL5: Wie aus einem Expert Advisor ein vollwertiges Handelssystem wird :
Bei der Entwicklung eines EA in MQL5 beginnen viele Leute mit der offensichtlichsten Lösung: Sie setzen die gesamte Logik in die Methode OnTick. Auf diese Weise ist es wirklich einfacher, den Einstieg zu finden. Dieser Ansatz hat jedoch einen versteckten Nachteil. Wenn das Projekt wächst, werden Handelsregeln, Bedingungsprüfung, Order-Verarbeitung, Datenaktualisierung, Schnittstelle, Berechnungen und Protokollierung in einem einzigen Handler zusammengefasst. Infolgedessen wächst der Code bis zu einem Zustand, in dem er nicht mehr programmierbar ist und nur noch durch reines Glück zusammengehalten wird. Jede Veränderung an einer Stelle wirkt sich auf ganz andere Teile des Systems aus. Sie reparieren das Bedienpanel – und plötzlich bricht das Handelsszenario zusammen. Sie ändern den Eingabefilter – in der Hintergrundprüfung erscheint ein Fehler. Ein solcher EA wird schnell zu einem fragilen Monolithen, dessen Komplexität schneller wächst als das Vertrauen des Entwicklers.
MetaTrader 5 bietet mehr als nur den Datenstrom der Kurse. Er basiert auf Ereignissen. Das Terminal empfängt ständig Ticks, Timer-Signale, Nutzeraktionen, Änderungen des Handelsstatus und Ereignisse zur Markttiefe. Diese Meldungen sollten getrennt behandelt werden. Um dies zu erreichen, verfügt MQL5 über verschiedene Handler, die jeweils einen eigenen Verantwortungsbereich haben. OnTick ist für die Marktaktualisierung zuständig, OnTimer für periodische und Hintergrundaufgaben und OnChartEvent für die Reaktion auf die GUI und Nutzeraktionen. Wenn die Logik entsprechend ihrem Zweck verteilt wird, ist der Code nicht mehr unübersichtlich. Der Code wirkt dann wie ein sauber strukturiertes technisches System, in dem jedes Modul seine Aufgabe erfüllt und seine Nachbarn nicht beeinträchtigt.
In diesem Artikel werden wir uns ansehen, wie man von dem Modell von „Alles-in- OnTick“ zu einer ausgereifteren Ereignisarchitektur übergehen kann. Betrachten wir nun die Rollen von vordefinierten Handlern und nutzerdefinierten Ereignissen sowie von Diensten, die nicht an ein Chart gebunden sind. Anschließend gehen wir auf typische Fehler ein, die die Architektur schon vor Beginn der eigentlichen Arbeit zerstören. Die Grundidee ist einfach: Wenn MQL5 für den vorgesehenen Zweck eingesetzt wird, können wir damit nicht nur Handelsroboter, sondern auch vollwertige Anwendungssysteme bauen.
Autor: MetaQuotes