计时器

 

实际上,问题是,为什么计时器是以秒为单位的?

说实话,当我听说会有一个原生计时器时,我不知道时间的原子单位会是一秒而不是一毫秒......

我最近在想使用它时,有了一个不是很愉快(对我来说)的发现。


前提非常简单 -- 计时器通常用于同步(等待数据计算)或观察(一个定时的EA,我认为会更充分)。在这两种情况下,一秒钟都有点多,但我们真的希望在计时器中看到毫秒。

同样,它是指数中睡眠功能的一个很好的替代品,一秒钟的时间太长了。

我希望开发商能考虑这一请求。如果有必要,我将在服务台提出请求

我已经开放了这个话题供讨论。你怎么看?

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
TheXpert:

实际上,问题是,为什么计时器是以秒为单位的?

说实话,当我听说会有一个原生计时器时,我不知道时间的原子单位会是一秒而不是一毫秒......

我最近在想使用它时,有了一个不是很愉快(对我来说)的发现。


前提非常简单 -- 计时器通常用于同步(等待数据计算)或观察(一个定时的EA,我认为会更充分)。在这两种情况下,一秒钟都有点多,但我们真的希望在计时器中看到毫秒。

同样,它是指数中睡眠功能的一个很好的替代品,同样,第二个也是太多了。

我希望,开发者不会忽视这个要求。如果有必要,我将在服务台提出请求

该主题可供讨论。你怎么看?

你可以相信我,目前交易终端的实现和在MQ秒内与线程一起工作的算法是一个很好的解决方案。

更重要的是,测试器中的时间是在分钟图的基础上生成的(据我所知),因此较小的时间尺度将无法工作。

PS

当然,开发人员可以给出更详细的答案,但只需了解目前在Expert Advisor和终端中使用线程工作的算法,时间间隔短于一秒是根本不可能的,或者根本会导致EA的操作不一致。

为了想象这种解决方案的后果,你需要了解如果每500毫秒调用一次专家顾问的定时器,而定时器的处理,例如,需要一分钟....,专家顾问会发生什么?

 

Interesting:

特别是由于测试器中的时间是根据分钟图生成的(据我所知),因此较小的时间尺度是不行的。

测试员与此有什么关系?

...如果时间间隔短于一秒,要么根本不可能,要么就会造成专家顾问工作的不一致。

在什么方面?为什么不可能呢?

为了想象这种解决方案的后果,你需要了解如果专家顾问的定时器每500毫秒被调用一次,而处理定时器,例如,需要一分钟....,专家顾问会发生什么?

那会发生什么呢?而如果定时器是1秒,那又有多可怕呢?

你在写评论的时候,到底有没带脑子?
 
TheXpert:

实际上,问题是,为什么计时器是以秒为单位的?

说实话,当我听说会有一个原生计时器时,我不知道时间的原子单位会是一秒而不是一毫秒......

我最近在想使用它时,有了一个不是很愉快(对我来说)的发现。


前提非常简单 -- 计时器通常用于同步(等待数据计算)或观察(一个定时的EA,我认为会更充分)。在这两种情况下,一秒钟都有点多,但我们真的希望在计时器中看到毫秒。

而且,它又是指数中睡眠功能的一个很好的替代品,一秒钟都嫌多。

我希望开发商不会让这个要求被忽视。如果有必要,我将在服务台提出请求

这个话题是可以讨论的。你怎么看?

以秒为单位的计时器是我们有意识的决定。计时器主要是为了让专家顾问系统在没有刻度的情况下工作。

如果你想同步,在不同的工具上使用几个专家顾问,互相发送自定义信息。

或者写一种wotchdog,例如在50毫秒的滑点上循环,当预期的事件发生时向你的主智能顾问发送消息。消息将被保证送达(当然,除非你溢出队列)。

 
stringo:

以秒为单位的计时器是我们有意识的决定。计时器主要是为了让专家在没有蜱虫的情况下工作。

这可以在没有定时器的情况下完成,顺便说一下,甚至不需要向自己发送事件的麻烦。那么,为什么不扩展其功能呢?

如果你想同步,在不同的工具上使用几个EA,互相发送自定义信息。

同步可以是与数据同步。例如 -- 一个内置的指标。如何解决指标中的这种同步性?我不是在问专家顾问,那里的一切都解决了,没有任何问题。但在一个指标中,"睡眠"是整个线程的停顿,它意味着指标的其他部分。而这意味着在同步方面存在着很多麻烦。

你也可以写一种看门狗循环,50毫秒的滑动,当预期的事件发生时,向你的主专家顾问发送消息。消息将被保证送达(当然,除非你溢出队列)。

将不得不这样做,如果没有变化的话......。
 
TheXpert:

这与测试员有什么关系?

在什么方面?为什么不可能呢?

那会发生什么?而如果定时器是1秒,那又有多可怕呢?

你在写评论的时候用脑子吗?

我认为,如果你知道原子时间单位,你可能知道操作系统和其他软件中的进程和线程是如何组织的。

但只是为了提醒你(以防有的人不知道)基本情况--系统中发生的一切都被划分为进程和线程,每个进程可以有一个到几个线程。粗略地说,系统中运行的每个可执行文件都是一个进程。每个进程都有一个优先级,而一个进程中的每个线程都有一个优先级。

基于这些优先级,系统将处理器时间分配给每个进程(或某个进程的线程)。

所以,客户终端的架构是这样的:每个图表上只能启动一个专家顾问和几个指标(如你所知)。专家顾问有一个单线程,但每个指标都有自己的线程(完全独立于专家顾问)。

这将是很好的,但专家顾问或指标本身只能在其线程中运行,即任何代码行都要占用整个线程,在该线程中不可能有其他动作(当然,关于点子的处理有疑问,但很可能,它们符合一般模式)。

在这种情况下,对于每个图表,都会形成一个单独的事件线程,由系统按顺序处理。

因此,在前一个定时器处理完成之前,不能调用定时器处理。或者,简单地说,OnTimer()将不被允许执行,直到应该处理定时器的线程繁忙。

为了说明第二个线程不可能开始处理定时器,你可以使用这个例子(很傻但很清楚)。

int OnInit()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
EventSetTimer(1);
//----------------------------------------------------------------------------//
return(0);
//----------------------------------------------------------------------------//
}

void OnTimer()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
Print(TimeLocal());
Sleep(2000);
//----------------------------------------------------------------------------//
}

PS

关于战略测试员--你打算如何在那里形成时间?

 

Interesting:

客户端的架构是这样的,每个图表上只能启动一个专家顾问和几个指标(如你所知)。专家顾问有一个单线程,但每个指标都有自己的线程(完全独立于专家顾问)。

从什么时候开始?我认为脚本和专家顾问根本没有任何问题,因为它们在自己的线程中工作。

如你所知,所有的指标都在一个线程中工作,这使得在任何指标中组织定时器的任务变得复杂。有时我也会非常喜欢它。

下面的例子显示了定时器如何不能被第二个线程启动(直言不讳,但可以说明问题)。

下面是一个工作实例。直言不讳地清楚表明了你的思维水平,尤其是在前一个帖子的背景下也是如此。

请你以后不要再回复我的帖子,否则我将无法克制自己,会骂你的坏话而被禁言。

然而,如果你愿意,请随时来信,我很乐意在任何与编程有关的话题上取笑你,让禁令见鬼去吧。

至于策略测试员,你建议如何在那里形成时间?
我不是,到目前为止我对它很满意。
 
TheXpert:

从什么时候开始?我完全不认为脚本和EA有什么问题,因为它们都在自己的线程中工作。

而且,所有的指标都在一个线程中工作,让人知道,这使得在任何指标中组织计时器的任务变得复杂。而有时你真的想这样做。


我想不回答,但我无法控制自己。

我对脚本不感兴趣,而我不确定我在哪里说过专家顾问不在独立的线程中运行(每个线程都是独立的)。在这里,给我指出我说的相反的地方 ....

我不确定指标的情况,因为我不经常使用它们(当然这个问题在论坛上讨论过,如果发生了什么,开发者会纠正它)。我知道,对于每个指标,都可以规定其计时器(不取决于专家),我已经使用了这种可能性。

我完全知道我应该对指数说些什么。

TheXpert

这个例子是有效的。直言不讳地清楚表明了你的思维水平,尤其是在前一个帖子的背景下也是如此。

谁会怀疑它的工作,但定时器(真是个婊子)是每2秒运行一次,而不是我在初始化块中指出的1。

特别是为了你,我把它放在专家顾问中,尽管无论如何,定时器调用的问题是显而易见的(让我们假设,为了清晰,他们说在图片中一切都更方便,更容易理解)...

现在我只需要找出,如果OnTime需要1秒(在例子中分别为1秒和2秒),OnTimer将如何每500毫秒被调用?

TheXpert

请你以后不要再回复我的帖子,否则我将无法克制自己,会骂你的坏话而被禁言。

然而,如果你愿意,请随时来信,我很乐意在任何与编程有关的话题上发帖,该死的,禁令。

是的,请问,我不需要回答...
 
只有在争论中才能知道真相,在两个争论者都充分的情况下,一个人将坚持他的观点(正确),第二个人将改变他的观点(错误)为第一个人的观点。

因此,不要告诉对方他或她错了什么,或者只写:"你错了,在谷歌上查查"。

据我了解,论坛--是一个互利的对话,如果你有问题只能向开发者提出,请到servicedesk。

对有趣的

我对MQL5的性能做了一些实验。 让我告诉你:大多数专家顾问执行OnTick功能的时间不到0.1秒。


致TheXpert

你为什么这么着急呢?
但我不认为计时器不到一秒有什么意义。当两个电子碰撞时,我们是否在计算?
如果是,就继续进行循环和Sleep()。

 

mrProF:

对有趣的

我一直在做一些关于MQL5性能的实验,让我告诉你:大多数EA执行OnTick功能的时间不到0.1秒。

这取决于在那里放什么以及处理多少数据,但MQL5是相当快的,我对此没有异议...
 

另一个...你们难道不是兄弟吗?

mrProF:

但我不认为小于一秒的计时器有什么意义。

这并不意味着没有。每个人的任务都是不同的。

如果是,就继续进行循环和Sleep()。

在这里,我们开始...我们能读吗?告诉我如何为火鸡做这件事。
原因: