Wenn du einen Expert Advisor (EA) verwendest, wird bei jedem neuen Tick, der eintrifft, die Standardfunktion OnTick() im MetaTrader aufgerufen. Allerdings gibt es keine standardmäßige Ereignisbehandlungsfunktion, um den Beginn einer neuen Kerze oder eines neuen Bars zu erkennen.
Um dies zu erkennen, musst du die Eröffnungszeit des aktuell letzten Bars im Auge behalten. Sobald sich diese ändert, signalisiert das den Start eines neuen Bars, und du kannst darauf reagieren. Der folgende Beispielcode, der sowohl mit MQL4 als auch mit MQL5 kompatibel ist, zeigt, wie das umgesetzt werden kann:
// Standard-Tick-Ereignisbehandler void OnTick() { // Überprüfe auf neuen Bar (kompatibel mit MQL4 und MQL5). static datetime dtBarCurrent = WRONG_VALUE; datetime dtBarPrevious = dtBarCurrent; dtBarCurrent = iTime( _Symbol, _Period, 0 ); bool bNewBarEvent = ( dtBarCurrent != dtBarPrevious ); // Reagiere auf das neue Bar-Ereignis und bearbeite es. if( bNewBarEvent ) { // Überprüfe, ob dies der erste Tick ist und bearbeite es. /* Zum Beispiel, wenn er zum ersten Mal an einem Chart angehängt wird und der Bar sich irgendwo in der Mitte seines Fortschritts befindet und es tatsächlich nicht der Start eines neuen Bars ist. */ if( dtBarPrevious == WRONG_VALUE ) { // Mach etwas beim ersten Tick oder in der Mitte des Bars ... } else { // Mach etwas, wenn ein normaler Bar startet ... }; // Mach etwas unabhängig von der obigen Bedingung ... } else { // Mach etwas anderes ... }; // Mach andere Dinge ... };
In dem obigen Code behält die statische Variable die Eröffnungszeit des Bars, selbst wenn die Funktion OnTick() verlassen wird. Im Gegensatz zu einer normalen lokalen Variable merkt sie sich ihren Inhalt und gibt ihn nicht beim Verlassen der Funktion frei. Dies ist der Schlüssel, um eine Änderung der Eröffnungszeit des aktuellen Bars zu erkennen.
Es ist auch wichtig zu beachten, dass der EA, wenn er zum ersten Mal auf ein Chart platziert wird, so reagiert, als wäre der Bar gerade eröffnet worden. Diese Bedingung erfordert eine spezielle Behandlung, falls die Situation anders gehandhabt werden muss.
Bitte beachte, dass der Quellcode aller meiner Veröffentlichungen in der CodeBase jetzt auch im Tab "Öffentliche Projekte" des MetaEditor unter dem Namen "FMIC" verfügbar ist.
Verwandte Beiträge
- Handelssignale mit MQL5 Wizard: Bullish und Bearish Harami mit CCI bestätigen
- MQL5 Wizard: Trade Signale auf Basis von Kurs-Crossover mit gleitendem Durchschnitt und ADX Bestätigung
- MQL5 Wizard: Handels-Signale mit 3 schwarzen Krähen / 3 weißen Soldaten + CCI für MetaTrader 5
- MQL5 Wizard: Handelssignale durch 3 Schwarze Krähen/3 Weiße Soldaten + RSI
- MQL5 Wizard: Handelssignale mit 3 schwarzen Krähen/3 weißen Soldaten und Stochastik erstellen