Wenn du einen Expert Advisor (EA) programmierst, wird bei jedem neuen Tick, den MetaTrader erhält, die Standardfunktion OnTick() aufgerufen. Doch leider gibt es keine Standardfunktion, die den Start einer neuen Kerze erkennt.
Um dies zu realisieren, musst du die Eröffnungszeit der letzten Kerze überwachen. Wenn sich diese ändert, bedeutet das, dass eine neue Kerze beginnt. An dieser Stelle kannst du entsprechend reagieren und das Ereignis behandeln. Im folgenden Codebeispiel, das sowohl mit MQL4 als auch mit MQL5 kompatibel ist, zeige ich dir eine Methode, wie du das umsetzen kannst:
// Standard Tick-Ereignis-Handler void OnTick() { // Prüfe auf eine neue Kerze (kompatibel mit MQL4 und MQL5). static datetime dtAktuelleKerze = WRONG_VALUE; datetime dtVorherigeKerze = dtAktuelleKerze; dtAktuelleKerze = iTime( _Symbol, _Period, 0 ); bool bNeueKerze = ( dtAktuelleKerze != dtVorherigeKerze ); // Reagiere auf das Ereignis einer neuen Kerze und gehe mit der Situation um. if( bNeueKerze ) { // Prüfe, ob dies der erste Tick ist, der empfangen wurde, und gehe mit der Situation um. /* Zum Beispiel, wenn der EA zum ersten Mal auf das Diagramm angewendet wird und die Kerze irgendwo mitten im Fortschritt ist und nicht wirklich der Beginn einer neuen Kerze ist. */ if( dtVorherigeKerze == WRONG_VALUE ) { // Mache etwas beim ersten Tick oder in der Mitte einer Kerze ... } else { // Mache etwas, wenn eine normale Kerze erscheint ... }; // Mache etwas unabhängig von der vorherigen Bedingung ... } else { // Mache etwas anderes ... }; // Mache weitere Dinge ... };
In diesem Code behält die statische Variable die Eröffnungszeit der Kerze im Gedächtnis, auch wenn die Funktion OnTick() verlassen wird. Im Gegensatz zu einer normalen lokalen Variable merkt sie sich ihren Dateninhalt und gibt ihn nicht beim Verlassen der Funktion frei. Das ist der Schlüssel zur Erkennung einer Änderung der Eröffnungszeit der aktuellen Kerze.
Es ist auch wichtig zu beachten, dass der EA, wenn er zum ersten Mal auf ein Diagramm gesetzt wird, so reagiert, als ob die Kerze gerade eröffnet wurde. Diese Bedingung erfordert eine besondere Behandlung, wenn die Situation anders gehandhabt werden muss.
Bitte beachte, dass der Quellcode für alle meine CodeBase-Veröffentlichungen jetzt auch über die "Öffentlichen Projekte" im 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