Startseite Systemhandel Beitrag

Neuen Kerzenstart erkennen: So funktioniert's mit MetaTrader 5

Anhang
39103.zip (884 bytes, Herunterladen 0 mal)

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

Kommentar (0)