- 显示:
- 1544
- 等级:
- 已发布:
- 2018.03.16 14:26
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
MetaTrader 4/5 标准计时器 是基于系统计时器调用,所以可能工作得不够精确。我们可以通过运行下面的简单 EA 交易来验证:
input int Timer = 1000; // 计时器被触发的毫秒数 #define TOSTRING(A) #A + " = " + (string)(A) + " ms.\n" const bool Init = EventSetMillisecondTimer(Timer); // 在图表上以注释的形式显示当前时间误差和它的平均值 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++; }
在图表注释 (左上角)中,它显示了计时器延迟是如何增长的:
屏幕截图显示,才一分钟,秒级计时器就造成了超过一秒的延迟。随着时间发展,延迟还会继续增长!
这个开发库可以为任何EA交易/指标提高标准计时器的精确度,为此,应该在代码的开始加入下面的代码行:
#include <AccurateTimer.mqh> // 提高标准计时器的精确度
随后,显示出下面的注释:
在运行10分钟之后,与理想(理论)计时器的平均偏差大约是1毫秒,并且误差不会增长。
有更精确的计时器总是好的,而对于一些任务来说是必须的。例如,秒级计时器与 交易服务器时间 同步。
这个跨平台开发库与所有的使用标准计时器r (OnTimer)的EA交易/指标都兼容,它不会影响到在策略测试器重的执行速度,
只需要一行代码就可以提高您已有或者新程序的精确度!
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/19859