Clock Diagnostic: Identifying Time Current() Freezes and Step Backwards

Clock Diagnostic: Identifying Time Current() Freezes and Step Backwards
Download ALL MT5 scripts (408)
YouTube Video Thumbnail



Similar MetaTrader Tools

Clock Diagnostic: Identifying Time Current() Freezes and Step Backwards

Info

The Clock Diagnostic: Identifying Time Current() Freezes and Step Backwards is a Script for MetaTrader 5 that clock diagnostic reads timecurrent() and timelocal() every few seconds for a fixed observation window and reports the two failure modes of the server clock: it freezes when no tick arrives, and it can step backwards after a symbol switch, a reconnection or a tick from another instrument. Inputs: InpSeconds = 60 (observation length), InpStep = 2 (interval between readings, seconds).

Usage

This tool is typically used for enhancing chart analysis and decision making.

Platform

This Script works exclusively on MetaTrader 5 (both build 600+ and newer versions).

Setup

Place the downloaded file in MQL5/Scripts folder via File ? Open Data Folder in MetaTrader 5.


How to Install and Use Clock Diagnostic: Identifying Time Current() Freezes and Step Backwards

1. Installation: Move your script file into the MQL/Scripts directory and restart the platform.

2. Execution: Drag the script onto a chart; it will perform a one-time action, such as closing all open orders or clearing chart objects.

3. Editing: Use MetaEditor (F4) to modify code, click "Compile," and verify no errors appear in the terminal before running.

4. Removing: Scripts stop automatically, but you can remove them manually by right-clicking the chart and choosing "Remove Script."

Frequently Asked Questions

Q: How are scripts different from EAs? A: Scripts execute a single action and then stop; EAs monitor the market and trade continuously.

Q: Can I assign a hotkey to a script? A: Yes, right-click the script in the Navigator, select "Set Hotkey," and define your preferred keyboard shortcut.

Q: Why did my script stop? A: Scripts are designed to stop immediately after finishing their programmed command; this is normal behavior.

What this tool does

Clock Diagnostic reads TimeCurrent() and TimeLocal() every few seconds for a fixed observation window and reports the two failure modes of the server clock: it freezes when no tick arrives, and it can step backwards after a symbol switch, a reconnection or a tick from another instrument.

Typical Use Case

This Script excels in automated trading and technical analysis on MetaTrader 5.

Compatible Platform & Setup

This Script works on MetaTrader 5. Place the file in the MQL5/Scripts folder and restart the terminal.

Description & Settings

Related: Server Clock Synchronization for MetaTrader - another powerful script for MetaTrader 5 traders.

Clock Diagnostic reads TimeCurrent() and TimeLocal() every few seconds for a fixed observation window and reports the two failure modes of the server clock: it freezes when no tick arrives, and it can step backwards after a symbol switch, a reconnection or a tick from another instrument.

Also recommended: Time Variable Conversion Utility - similar script with strong performance on MetaTrader 5.


Inputs: InpSeconds = 60 (observation length), InpStep = 2 (interval between readings, seconds).

The script prints both clocks and their initial difference in seconds and hours, a STEP BACK line each time TimeCurrent() goes back, and a summary: readings taken, seconds advanced by each clock, the longest freeze observed and the number of step-backs, followed by a verdict for the window.

Rule it documents: TimeLocal() for timestamps, dates, day changes and expiry; TimeCurrent() for session hours and comparison with market data.

Limit: it measures only the window it runs in. With the market open and ticks arriving, a 60-second run may show no anomaly; run it with the market closed to see the freeze.

You may also like: candle signature - excellent alternative for script users on MetaTrader 5.

Source Code

#property copyright "RobotFX"
#property link "https://robotfx.org"
#property version   "1.00"
#property script_show_inputs
input int InpSeconds = 60;
input int InpStep    = 2;
void OnStart()
  {
   datetime serverBefore = TimeCurrent();
   datetime localBefore  = TimeLocal();

.......

Leave your opinion, ask a question, share some knowledge

⚠ Limitations & Risk Warning

  • This tool is provided for educational and testing purposes only.
  • Past performance does not guarantee future results.
  • Trading involves substantial risk of loss. Use on a demo account first.
  • Results may vary depending on market conditions, broker, and settings.
  • We recommend thorough backtesting and forward testing before using with real funds.
© ROBOTFX Free educational tools by RobotFX. Use entirely at your own risk; we are not liable for any financial losses incurred.