mql5语言的特点、微妙之处以及技巧 - 页 90

 
阿列克谢-纳沃伊科夫

这里有一个使用高分辨率winapi计时器的变体,给出了5.6e-13秒的精度。

你在说什么呢?事实证明,这个频率是1786GHz。而这是红外辐射的频率。:))
你只是把频率和计数器搞混了。
实际上是3.8e-07秒。这大约是三分之一微秒的时间。与MQL没有显著差异


 
尼古拉-森科

你在说什么呢?事实证明,该频率为1786GHz。而这就是红外辐射的频率。:))
你只是把频率和计数器搞混了。
实际上是3.8e-07秒。这大约是三分之一微秒的时间。与MQL没有太大区别。

是的,没错,我搞错了。

 
阿列克谢-纳沃伊科夫

是的,没错,混在一起)

这倒是一个真正的解决方案。
检查了一下--他们的计数器对当地时间变化没有反应。
因此,如果我需要微秒并长期使用它们 - 请使用Kernel32.dll
谢谢你!

所以这毕竟是一个错误,对于MQ来说,这很容易解决。
 

我们需要向服务台发送集体请求。因为否则就没有用了。 他们甚至已经停止了对编译器错误的回应。有很多要求,但都无济于事......

同样,我一直要求他们创建毫秒级的TimeLocal和TimeCurrent(尤其是第二个,因为自己实现它是有问题的)。

 
Konstantin:

有一个用途,你可以用它来卸载GUI,例如这里。

整个图表的画布类对象,绘制表格中的数据,集群数据,水平等,如果OnTimer调到最大,GUI放在那里(我总是这样做),那么没有时间滞后,一个图表加载我的VPS大约45-60%,如果我做一个250的延迟,那么一切都正常化到最小,图形对按钮反应清晰,系统不被加载。

这里讨论的GetMicrosecondCount()和OnTimer()之间有什么联系?
 
阿列克谢-纳沃伊科夫

这里有一个使用高分辨率winapi计时器的变体,给出了3.8e-07 秒的精度。

这就是我们计算微秒的方法
 
Renat Fatkhullin:
这就是我们计算微秒的方法

Renat,你能修复与本地时间 GetMicrosecondCount()的绑定吗?
因为对于不了解这一特点的人来说,后果可能是非常难以预料的。




int OnInit()
  {
   EventSetMillisecondTimer(1000);
   return(INIT_SUCCEEDED);
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   return(rates_total);
  }
void OnTimer()
  {
    Comment("Программа уже работает: "+(string)(round(double(GetMicrosecondCount())/1000000.0))+" сек");
  }
 
不,它是一个用于准确测量时间间隔的相对计时器,而不是天文时间。
 
雷纳特-法特库林
不,它是一个相对的计时器,用于精确的时间间隔,而不是天文时间。

谢谢你,我会知道的。
我被这个提法误导了。

 
Renat Fatkhullin:
这就是我们计算微秒的方法

我们为什么不以同样的方式计算GetTickCount 呢? 那么15ms分辨率的问题就会消失,并引起一些问题。