OnTimer() has a very large delay. How to solve it? - page 6

 
Alain Verleyen #:
Nicolai. The tests show delays when using a timer in an EA without using any indicator.
MT4 or MT5?
 
Nikolai Semko #:

The timer in the indicators is very unreliable, and highly dependent on events. The EA's timer is reliable. If you are using indicators in an EA, then this may be the reason.

It is also worth noting that OnChartEvent() is very unreliable in MT4, the operation of which is blocked for several tens of milliseconds if a certain threshold of calculations from it is exceeded (by about 10 milliseconds). In this case, calculations from OnChartEvent() must be transferred to the timer.

I did not test the issue with indicator, only EA right now. Thanks for your attention.

 

I have kept running Time.ex4 for 10 hours, here are the logs. The elapsed time is 32199 seconds while the count of OnTimer() is 32045, the difference is 154. That means 154 calls were missed.

Journal logs:

2023.07.31 22:16:02.325 '1900082876': ping to current access point DC_Vir_L19 is 7.44 ms

2023.07.31 22:15:23.294 MQL5.chats: activated for 'gchen2101'

2023.07.31 22:15:23.169 MQL5.community: activated for 'gchen2101', balance: 139.86 (frozen: 125.00)

2023.07.31 22:15:21.078 '1900082876': previous successful authorization performed from 152.32.151.198

2023.07.31 22:15:20.512 '1900082876': login datacenter on ICMarketsSC-Live19 through DC_Vir_L19 (ping: 7.14 ms)

2023.07.31 22:15:20.059 '1900082876': login on ICMarketsSC-Live19 through DC_Vir_L19 (ping: 7.14 ms)

2023.07.31 22:15:15.419 Expert Timer USDJPY,H1: loaded successfully

2023.07.31 22:15:03.481 Data Folder: C:\Users\Administrator\Desktop\Work\MT4\MT4.8

2023.07.31 22:15:03.481 Windows Server 2016 Datacenter x64, IE 11, RDP, UAC, 4 x Common KVM processor, Memory: 5760 / 8191 Mb, Disk: 11 / 39 Gb, GMT+8

2023.07.31 22:15:03.481 Doo Prime MT4 Terminal build 1382 started (Doo Prime Limited)

Experts Logs:

2023.08.01 07:11:57.990 Timer USDJPY,H1: Timer interval (Max=2.938 Min=0.188) seconds, count=32045 elapsed 32198.860 seconds

2023.08.01 07:10:10.693 Timer USDJPY,H1: Timer interval (Max=2.938 Min=0.391) seconds, count=31938 elapsed 32091.563 seconds

2023.08.01 00:49:36.443 Timer USDJPY,H1: Timer interval (Max=1.641 Min=0.391) seconds, count=9213 elapsed 9257.313 seconds

2023.08.01 00:49:36.053 Timer USDJPY,H1: Timer interval (Max=1.641 Min=0.484) seconds, count=9212 elapsed 9256.922 seconds

2023.08.01 00:10:45.209 Timer USDJPY,H1: Timer interval (Max=1.516 Min=0.484) seconds, count=6893 elapsed 6926.078 seconds

2023.08.01 00:10:44.725 Timer USDJPY,H1: Timer interval (Max=1.516 Min=0.531) seconds, count=6892 elapsed 6925.594 seconds

2023.08.01 00:01:46.131 Timer USDJPY,H1: Timer interval (Max=1.469 Min=0.531) seconds, count=6357 elapsed 6387.000 seconds

2023.07.31 23:55:11.131 Timer USDJPY,H1: Timer interval (Max=1.469 Min=0.562) seconds, count=5964 elapsed 5992.000 seconds

2023.07.31 23:55:10.568 Timer USDJPY,H1: Timer interval (Max=1.469 Min=0.578) seconds, count=5963 elapsed 5991.438 seconds

2023.07.31 23:45:26.709 Timer USDJPY,H1: Timer interval (Max=1.468 Min=0.578) seconds, count=5375 elapsed 5400.828 seconds

2023.07.31 23:10:34.051 Timer USDJPY,H1: Timer interval (Max=1.422 Min=0.578) seconds, count=3294 elapsed 3309.078 seconds

2023.07.31 23:10:33.469 Timer USDJPY,H1: Timer interval (Max=1.422 Min=0.594) seconds, count=3293 elapsed 3308.500 seconds

2023.07.31 23:07:36.342 Timer USDJPY,H1: Timer interval (Max=1.421 Min=0.594) seconds, count=3117 elapsed 3131.375 seconds

2023.07.31 23:07:35.748 Timer USDJPY,H1: Timer interval (Max=1.421 Min=0.657) seconds, count=3116 elapsed 3130.781 seconds

2023.07.31 23:07:32.326 Timer USDJPY,H1: Timer interval (Max=1.375 Min=0.657) seconds, count=3113 elapsed 3127.360 seconds

2023.07.31 23:07:31.670 Timer USDJPY,H1: Timer interval (Max=1.375 Min=0.687) seconds, count=3112 elapsed 3126.703 seconds

2023.07.31 22:35:45.623 Timer USDJPY,H1: Timer interval (Max=1.297 Min=0.687) seconds, count=1215 elapsed 1220.688 seconds

2023.07.31 22:22:36.986 Timer USDJPY,H1: Timer interval (Max=1.266 Min=0.687) seconds, count=430 elapsed 432.047 seconds

2023.07.31 22:22:36.292 Timer USDJPY,H1: Timer interval (Max=1.266 Min=0.750) seconds, count=429 elapsed 431.360 seconds

2023.07.31 22:22:19.964 Timer USDJPY,H1: Timer interval (Max=1.250 Min=0.750) seconds, count=413 elapsed 415.031 seconds

2023.07.31 22:22:19.214 Timer USDJPY,H1: Timer interval (Max=1.250 Min=0.797) seconds, count=412 elapsed 414.281 seconds

2023.07.31 22:18:58.948 Timer USDJPY,H1: Timer interval (Max=1.203 Min=0.797) seconds, count=213 elapsed 214.016 seconds

2023.07.31 22:18:58.152 Timer USDJPY,H1: Timer interval (Max=1.203 Min=0.859) seconds, count=212 elapsed 213.219 seconds

2023.07.31 22:16:40.344 Timer USDJPY,H1: Timer interval (Max=1.141 Min=0.859) seconds, count=75 elapsed 75.406 seconds

2023.07.31 22:16:39.481 Timer USDJPY,H1: Timer interval (Max=1.141 Min=0.968) seconds, count=74 elapsed 74.547 seconds

2023.07.31 22:16:25.262 Timer USDJPY,H1: Timer interval (Max=1.046 Min=0.968) seconds, count=60 elapsed 60.328 seconds

2023.07.31 22:16:10.184 Timer USDJPY,H1: Timer interval (Max=1.046 Min=0.969) seconds, count=45 elapsed 45.250 seconds

2023.07.31 22:16:09.216 Timer USDJPY,H1: Timer interval (Max=1.046 Min=1.000) seconds, count=44 elapsed 44.281 seconds

2023.07.31 22:15:29.950 Timer USDJPY,H1: Timer interval (Max=1.016 Min=1.000) seconds, count=5 elapsed 5.016 seconds

2023.07.31 22:15:25.938 Timer USDJPY,H1: Timer interval (Max=1.000 Min=1.000) seconds, count=1 elapsed 1.000 seconds

2023.07.31 22:15:23.950 Timer USDJPY,H1: initialized

2023.07.31 22:15:23.950 Timer USDJPY,H1: Monitoring timer delay...

2023.07.31 22:15:15.419 Expert Timer USDJPY,H1: loaded successfully


 

Timer.ex5 for MT5 was started at the same time. The results is much better. Codes are attached

Journal logs:

2023.07.31 22:15:15.201 Terminal Doo Group MetaTrader 5 Terminal x64 build 3815 started for Doo Holding Group Limited

2023.07.31 22:15:15.201 Terminal Windows Server 2016 build 14393 on KVM, 4 x Common KVM processor, 5 / 7 Gb memory, 11 / 39 Gb disk, RDP, UAC, admin, GMT+8

2023.07.31 22:15:15.201 Terminal C:\Users\Administrator\Desktop\Work\MT5\MT5.3

2023.07.31 22:15:22.881 Network '5330425': authorized on ICMarketsSC-MT5 through Access Server - VIR (ping: 7.48 ms, build 3802)

2023.07.31 22:15:22.881 Network '5330425': previous successful authorization performed from 152.32.151.198 on 2023.07.31 15:09:40

2023.07.31 22:15:23.083 Experts expert Timer (NZDCAD,H4) loaded successfully

2023.07.31 22:15:23.756 Network '5330425': terminal synchronized with Raw Trading Ltd: 0 positions, 0 orders, 2194 symbols, 0 spreads

2023.07.31 22:15:23.756 Network '5330425': trading has been enabled - hedging mode

2023.08.01 01:49:11.788 Network '5330425': scanning network for access points

2023.08.01 01:49:30.379 Network '5330425': scanning network finished

Experts logs:

2023.07.31 22:15:23.926 Timer (NZDCAD,H4) Monitoring timer delay...

2023.07.31 22:15:25.939 Timer (NZDCAD,H4) Timer interval (Max=1.000 Min=1.000) seconds, count=1 elapsed 1.000 seconds

2023.07.31 22:15:40.932 Timer (NZDCAD,H4) Timer interval (Max=1.000 Min=0.985) seconds, count=16 elapsed 15.985 seconds

2023.07.31 22:15:43.936 Timer (NZDCAD,H4) Timer interval (Max=1.015 Min=0.985) seconds, count=19 elapsed 19.000 seconds

2023.07.31 22:15:54.951 Timer (NZDCAD,H4) Timer interval (Max=1.016 Min=0.985) seconds, count=30 elapsed 30.016 seconds

2023.07.31 22:15:55.935 Timer (NZDCAD,H4) Timer interval (Max=1.016 Min=0.984) seconds, count=31 elapsed 31.000 seconds

2023.07.31 22:17:37.982 Timer (NZDCAD,H4) Timer interval (Max=1.047 Min=0.984) seconds, count=133 elapsed 133.047 seconds

2023.07.31 22:17:38.935 Timer (NZDCAD,H4) Timer interval (Max=1.047 Min=0.953) seconds, count=134 elapsed 134.000 seconds

2023.07.31 22:28:34.008 Timer (NZDCAD,H4) Timer interval (Max=1.063 Min=0.953) seconds, count=789 elapsed 789.063 seconds

2023.07.31 22:28:34.936 Timer (NZDCAD,H4) Timer interval (Max=1.063 Min=0.937) seconds, count=790 elapsed 790.000 seconds


Files:
Timer.mq4  1 kb
Timer.mq5  1 kb
Timer.mqh  5 kb
 
Как создать функцию обработки каждой миллисекунды?
Как создать функцию обработки каждой миллисекунды?
  • 2018.09.14
  • www.mql5.com
Здравствуйте! Как известно, в MQL4 существуют встроенные функции обработки событий...
 
If you're getting delay seeing on chart, then you need to add a function call to do ChartRedraw();