Bar-Ereignisse
Algorithmusentwickler müssen häufig auf Bar-Ereignisse verweisen, um Handelsstrategien rechtzeitig als Reaktion auf die aktualisierten Kurse auszuführen. Die API bietet die Ereignisse BarOpened und BarClosed für Algo-Ersteller, um cBots feinabzustimmen und Gelegenheiten zu verschiedenen Zeitpunkten des Bar-Zyklus zu nutzen.
Hinweis
Bar-Ereignisse können nur beim Codieren von cBots behandelt werden. Indikatoren haben stattdessen die Methode Calculate(), die bei jedem Tick aufgerufen wird.
In diesem Leitfaden erklären wir den Unterschied zwischen den Methoden OnBar() und OnBarClosed() und stellen mehrere Anwendungsfälle vor.
Bar-Ereignisse in einer Minute!
- Die Methode
OnBar()wird jedes Mal ausgelöst, wenn ein neuer Bar auf dem Chart gezeichnet wird, dem eine Instanz hinzugefügt wurde. Sie wird für den neu gebildeten Bar aufgerufen. - Der Ereignishandler
OnBarClosed()wird ebenfalls bei jedem neuen Bar ausgelöst. Er wird jedoch für den zuletzt geschlossenen (d. h. vorherigen zum aktuellen) Bar aufgerufen. - Indem Sie auf das richtige Bar-Ereignis verweisen, erhöhen Sie die Genauigkeit Ihrer technischen Analyse und wählen den geeigneten Zeitpunkt für Algorithmusaktionen aus.
- Die unterstützten Charttypen für
BarOpenedundBarClosedsind Zeitbars, Candlesticks, Tick, Renko, Range und Heikin Ashi Charts.
Die Methode OnBar() verwenden
Das Auftreten des Ereignisses BarOpened hängt von einem Symbolzeitplan und der Häufigkeit eingehender Kurse ab. Normalerweise können Plattformbenutzer das Auftreten von BarClosed mit den Chart-Zeitrahmeneinstellungen anpassen.
Hinweis
Die Methode OnBar() kann so häufig aufgerufen werden, wie es die Chart-Zeitrahmeneinstellungen erlauben. Sobald ein Bar geschlossen wird, wird OnBar() erst ausgelöst, wenn der nächste Tick eintrifft, der logischerweise die Bildung eines neuen Bars auslöst.
Die Methode OnBar() wird gleichzeitig mit jedem neuen Bar aufgerufen, der auf dem Chart gezeichnet wird, an den ein Algorithmus angehängt ist. Daher ist der Handler OnBar() der perfekte Ort, um benutzerdefinierte Handelslogik zu definieren, die Ihr cBot regelmäßig wiederholen soll.
Im Code-Editor können Sie den Handler OnBar() wie folgt angeben:
override void OnBar()
Die Methode OnBarClosed() verwenden
Die Algo-API ermöglicht auch die Ausführung von Logik für den zuletzt geschlossenen Bar, was je nach der Strategie, die Sie implementieren möchten, eine bequemere und genauere Alternative zur Behandlung des Ereignisses BarOpened sein kann. Bei Bar-Öffnung erscheint der neue Bar als (Doji-Kerze) und enthält keine vollständigen Daten für die technische Analyse.
Das Ereignis BarClosed ist ein Alias des Ereignisses BarOpened, was bedeutet, dass es nur auftritt, wenn das Ereignis BarOpened eintritt. Beispielsweise tritt das Ereignis BarClosed für den letzten Bar am Freitag mit dem ersten geöffneten Bar am Montag auf, vorausgesetzt, dass das Symbol nicht am Wochenende gehandelt wird.
Hinweis
Die Methode OnBarClosed() wird erst aufgerufen, wenn ein Tick eintrifft, um den neuen Bar zu bilden.
Der Ereignishandler OnBarClosed() kann wie folgt deklariert werden:
override void OnBarClosed()
Im Körper der Methode OnBarClosed() können Sie bestimmen, welche verbundenen Aktionen Ihre cBots ausführen, wenn das Ereignis BarClosed ausgelöst wird (zum Beispiel eine Order ausführen, ein Muster umreißen, visuelle Elemente der technischen Analyse zeichnen usw.).
Wenn in diesem Ereignishandler darauf zugegriffen wird, enthält die Sammlung Bars nicht den aktuellen Live-Bar, während andere Sammlungen (wie Positions, Symbols usw.) aktuelle Daten enthalten.
Die Ereignishandler OnBar() und OnBarClosed() funktionieren wie vorgesehen beim Backtesting und bei der Optimierung. Beide Methoden können auf verschiedenen Charttypen verwendet werden, einschließlich Zeitbars, Candlesticks, Tick, Renko, Range und Heikin Ashi Charts.
Beispiel-cBots erstellen
Der folgende Beispiel-cBot platziert eine Markt-Order, wenn jeder dritte Balken im EURCHF-Chart geöffnet wird.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | |
Da der cBot auf einem Min1-Chart gestartet wurde, beträgt das ungefähre Zeitintervall zwischen den ausgeführten Markt-Ordern drei Minuten.

Nachfolgend finden Sie ein cBot-Beispiel mit dem verschachtelten Directional Movement System (DMS)-Indikator, der (Aufwärtstrend!) ausgibt, wenn der DI+-Wert (grüne Linie) den DI--Wert (rote Linie) überschreitet.

Wenn DI- größer als DI+ ist, wird (Abwärtstrend!) im BarClosed-Ereignis ausgegeben.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
Zusammenfassung
Die Vielfalt der in der Algo-API vorhandenen Balkenereignisse ermöglicht es Algorithmusentwicklern, ein genaues Timing für die aufgerufenen Methoden zu wählen. Die OnBar()-Methode kann mit unterschiedlicher Häufigkeit aufgerufen werden, abhängig vom Symbolzeitplan und den Chart-Zeitrahmeneinstellungen, was auch zur Funktionalität von cBots beiträgt. Die OnBarClosed()-Methode ist ein praktischer Alias von OnBar() für die Arbeit mit Indikatoren.