Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Twitter!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Expert Advisors

Detecting the start of a new bar or candle - Experte für den MetaTrader 4

Ansichten:
8483
Rating:
(31)
Veröffentlicht:
2022.04.24 00:46
Aktualisiert:
2022.04.25 09:58
NewBar.mq4 (2.8 KB) ansehen
MQL5 Freelance Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

For an Expert Advisor (EA), when a new tick quote arrives, the MetaTrader terminal calls the default OnTick() event handling function. However, there is no default event handling function for when a new bar (candle) starts or opens.

To detect this, one needs to monitor the opening time of the currently most recent bar. Once it changes, it signifies the start of a new bar, and one can react to it and handle the event. The following sample code, compatible with both MQL4 and MQL5, shows one such method on how this can be achieved:

// Default tick event handler
   void OnTick()
   {
      // Check for new bar (compatible with both MQL4 and MQL5).
         static datetime dtBarCurrent  = WRONG_VALUE;
                datetime dtBarPrevious = dtBarCurrent;
                         dtBarCurrent  = iTime( _Symbol, _Period, 0 );
                bool     bNewBarEvent  = ( dtBarCurrent != dtBarPrevious );

      // React to a new bar event and handle it.
         if( bNewBarEvent )
         {
            // Detect if this is the first tick received and handle it.
               /* For example, when it is first attached to a chart and
                  the bar is somewhere in the middle of its progress and
                  it's not actually the start of a new bar. */
               if( dtBarPrevious == WRONG_VALUE )
               {
                  // Do something on first tick or middle of bar ...
               }
               else
               {
                  // Do something when a normal bar starts ...
               };

            // Do something irrespective of the above condition ...
         }
         else
         {
            // Do something else ...
         };

      // Do other things ...
   };

In the above code, the static variable keeps track of the bar's opening time, even when returning from the OnTick() function. Unlike a normal local variable, it memorizes its data content and does not release it when leaving the function. This is the key to detecting a change in the opening time of the current bar.

It's also important to note, that when the EA is first placed on a chart, the above code reacts as if the bar has just opened. This condition requires special handling if the situation needs to be handled differently.

Please note, that all my CodeBase publications' source code are now also available in "Public Projects" tab of MetaEditor under the name "FMIC".
Listing all MT4 Signals' properties to a CSV file Listing all MT4 Signals' properties to a CSV file

This simple quick & dirty script code will output a CSV file of all the Signals' properties as reported by the MQL4 Trade Signals functionality.

How to Disable/Enable Auto/Algo-Trading in both MT5 and MT4. How to Disable/Enable Auto/Algo-Trading in both MT5 and MT4.

Just simple codes to Disable/Enable Auto/Algo-Trading in both MT5 and MT4. Of course, DLLs must be allowed, This cannot be done without DLLs

SmoothStep SmoothStep

SmoothStep (metatrader 4 version)

SmoothStep (generalized) SmoothStep (generalized)

SmoothStep (generalized) - metatrader 4 version