Expert Advisors • Indicators • Scripts • Libraries

MQL.RobotFX.org is the biggest collection of MetaTrader expert advisors (MT5 & MT4), indicators, scripts and libraries that can be used to improve trading results, minimize risks or simply automate trading tasks

MetaTrader 5 Libraries | AccurateTimer

The MetaTrader 4/5 standard timer is based on the system timer call and can therefore work inaccurately. We can check this by running the following simple Expert Advisor:

input int Timer = 1000; // The number of milliseconds for the timer to trigger    #define TOSTRING(A) #A + " = " + (string)(A) + " ms.\n"    const bool Init = EventSetMillisecondTimer(Timer);    // Shows the current timer error and its average value as a comment on a chart  void OnTimer()  {    static ulong StartTime = 0;    static int Count = 0;    static int Sum = 0;      if (StartTime)    {      const int RunTime = (int)(GetMicrosecondCount() - StartTime) / 1000;      const int Error = RunTime - Timer * Count;        Sum += Error;        Comment(TOSTRING(Timer) + TimeToString(RunTime / 1000, TIME_SECONDS) + "\n" +              TOSTRING(Error) + TOSTRING((double)Sum / Count));    }    else      StartTime = GetMicrosecondCount();      Count++;  }  

In the chart comment (the upper left corner) it shows how the timer lag grows:

MetaTrader Experts, Indicators, Scripts and Libraries

The screenshot shows that in just a minute, the second timer creates a lag of more than a second. Moreover this lag grows over time!

This library allows increasing the accuracy of the standard timer for any Expert Advisor/indicator. For this purpose, the following line should be added at the beginning of the code:

#include <AccurateTimer.mqh> // Increasing the accuracy of the standard timer

After that the following comment will be shown:

MetaTrader Experts, Indicators, Scripts and Libraries

After ten minutes of operation, the average deviation from the ideal (theoretical) timer is ~1 ms, and the error will not grow.

It is always good to have an accurate timer. But for some tasks it is a must. For example, a second timer synchronized with the trade server time.

This cross-platform library is compatible with all Expert Advisors/indicators, which use the standard timer (OnTimer). It does not affect the execution speed in the strategy tester.

Increase the accuracy of your existing and new programs in just one line!

19859

Best MetaTrader Indicators + Profitable Expert Advisors