文章 "是睡,还是不睡?"

 

新文章 是睡,还是不睡?已发布:

本文提出了 Sleep() 函数的替代用法,在 EA 的操作之间实现暂停。 所讨论的这种方法可以巧妙利用机器时间。

在运行时,Expert Advisor 有时会出现在运行中间必须暂停的情形。 产生这种情况的原因可能是为了符合向交易服务器重复请求必须保持一定间隔的要求(在出现执行错误时)以及等待特定的事件(例如,重新连接服务器或自由的交易环境等)。

用 Sleep(),还是不用 Sleep()?

为了实现暂停,MQL4 有一个名为 Sleep() 的函数,它将以毫秒数表示的时间间隔值作为参数。 Sleep() 函数停止执行程序代码,只有在超过给定的时间间隔后才允许继续执行。

在我看来,该函数的使用有两个缺点。 第一,机器时间的利用不够实际:在一种类型的操作暂停时,程序可以执行跟上一个类型无关的其他类型的操作(例如,在交易暂停时,程序可以进行一些计算、监 视即将产生的价格变动等)。 第二,也是更关键的一点,Sleep() 函数无法从自定义指标调用(请查看文档)。 但是,编程必然需要一种编程语言。

我们来探讨如何在一个 MQL4 程序中实现十秒钟的暂停。 下面给出了一个使用 Sleep() 函数的示例:

if ( /* condition that requires to hold a pause */ )
   Sleep(10000); // sleep for 10 seconds

// program block to be executed upon the expiry of the pause
// ...

作者:Sergey Gridnev

原因: