Home Systeemhandel Bericht

Hoe je het begin van een nieuwe candle herkent in MetaTrader 4

Bijlage
39104.zip (884 bytes, Downloaden 2 keer)

Als je een Expert Advisor (EA) gebruikt, wordt de MetaTrader terminal automatisch geactiveerd bij het ontvangen van een nieuwe tickquote via de standaard OnTick() functie. Echter, er is geen standaard functie voor het detecteren van het openen van een nieuwe candle.

Om dit te kunnen vaststellen, moet je de openingstijd van de meest recente candle in de gaten houden. Zodra deze verandert, betekent dit dat er een nieuwe candle is begonnen en kun je hierop reageren. Hieronder vind je een voorbeeldcode die werkt met zowel MQL4 als MQL5, waarmee je dit kunt bereiken:

// Standaard tick event handler
   void OnTick()
   {
      // Controleer op nieuwe candle (compatibel met zowel MQL4 als MQL5).
         static datetime dtBarCurrent  = WRONG_VALUE;
                datetime dtBarPrevious = dtBarCurrent;
                         dtBarCurrent  = iTime( _Symbol, _Period, 0 );
                bool     bNewBarEvent  = ( dtBarCurrent != dtBarPrevious );

      // Reageer op een nieuw candle event en verwerk het.
         if( bNewBarEvent )
         {
            // Detecteer of dit de eerste tick is en verwerk het.
               /* Bijvoorbeeld, wanneer het voor het eerst aan een grafiek is gehecht en de candle is ergens in het midden van zijn voortgang en het is niet echt het begin van een nieuwe candle. */
               if( dtBarPrevious == WRONG_VALUE )
               {
                  // Doe iets bij de eerste tick of in het midden van de candle ...
               }
               else
               {
                  // Doe iets wanneer een normale candle begint ...
               };

            // Doe iets ongeacht de bovenstaande conditie ...
         }
         else
         {
            // Doe iets anders ...
         };

      // Voer andere acties uit ...
   };

In de bovenstaande code houdt de statische variabele de openingstijd van de candle bij, zelfs wanneer je terugkeert van de OnTick() functie. In tegenstelling tot een normale lokale variabele onthoudt het zijn gegevens en geeft het deze niet vrij wanneer je de functie verlaat. Dit is de sleutel tot het detecteren van een verandering in de openingstijd van de huidige candle.

Het is ook belangrijk om op te merken dat wanneer de EA voor het eerst op een grafiek wordt geplaatst, de bovenstaande code reageert alsof de candle net is geopend. Deze situatie vereist speciale behandeling als het anders moet worden afgehandeld.

Vergeet niet dat al mijn publicaties op CodeBase nu ook beschikbaar zijn onder het tabblad "Public Projects" in MetaEditor onder de naam "FMIC".

Gerelateerde berichten

Reactie (0)