来自一个 "傻瓜 "的问题 - 页 213

 
lazarev-d-m:

最简单的方法之一是插入

你想检查代码是否有效,或检查一个条件是否为真(即,如果所有条件都为真,必须采取一个行动)。

例如,我在每个复杂的函数中插入 不同文本的Alert,以检查函数是否被执行,以及EA是否达到了它。

也许你使用了一些条件,但它们总是假的。

谢谢你。
EA只是停止工作,没有任何错误,重启终端后又开始工作。
我需要知道如何以编程方式检查它是否有效。虽然它是绿色的,而且日志中没有错误。
在这个检查功能之后,我将把警报或打印或评论。
 
G001: 你能告诉我如何检查专家顾问是否在工作吗?

问题是,日志中没有错误,但EA有时会停止工作,只有在重启终端后才会恢复。

我不太清楚你如何定义 "专家顾问有时停止工作"。也许,它只是开始了一个无尽的循环。它的日志是空的,专家顾问在不停地工作。或者,也许它有一些其他的特殊功能。

 

我需要对这个帖子中的问题做出回答:https://www.mql5.com/ru/forum/3775/page215#comment_379520

有谁知道答案吗?

 
tol64: 我需要这个帖子中问题的答案:https://www.mql5.com/ru/forum/3775/page215#comment_379520 有谁知道答案吗?

似乎没有直接的答案,所以我们只能猜测。

因此,使用Mql5InfoInteger(MQL5_LICENSE_TYPE) 可以查出许可证的类型。也就是说,在ENUM_LICENSE_TYPE 枚举的所有可能的值中,有一个将被返回。进一步--通过例外方法:操作时间限制(LICENSE_TIME)不能与指定枚举的前三个值一起返回。特别是,LICENSE_TIME不能与LICENSE_DEMO 同时返回。

根据这一推理,我将对 "是否暗示市场的付费程序在演示测试中可以有时间限制?"这一问题给予否定的回答。因为市场上的付费产品的演示有自己的标识符 -LICENSE_DEMO

 
Yedelkin:

似乎没有直接的答案,所以我们只能猜测。

因此,使用Mql5InfoInteger(MQL5_LICENSE_TYPE) 可以查出许可证的类型。也就是说,在ENUM_LICENSE_TYPE 枚举的所有可能的值中,有一个将被返回。进一步--通过例外方法:操作时间限制(LICENSE_TIME)不能与指定枚举的前三个值一起返回。特别是,LICENSE_TIME不能与LICENSE_DEMO 同时返回。

根据这一推理,我将对 "是否暗示市场的付费程序在演示测试中可以有时间限制?"这一问题给予否定的回答。因为市场上的付费产品的演示有自己的标识符 -LICENSE_DEMO

我认为LICENSE_TIME可以 同时 包含 LICENSE_DEMO和 LICENSE_TIME。一个明显的例子是MQL5_VISUAL_MODE 和MQL5_TESTING这样的标识符。也就是说,他们都让我们知道,我们是在一个测试者。))

因此,我想知道开发者在这个标识符中究竟放了什么?而一般来说,如果没有可能限制一些付费程序在演示模式下的时间,那么有这样的可能性就好了。因为可能有一些选项,即使不买也能为自己的程序带来很大的利润。)))

 
tol64: 而且我认为LICENSE_DEMO和 LICENSE_TIME 都可以同时嵌入LICENSE_TIME 中。

我同意,我完全忽略了参考资料的术语特殊性,由于这种原因,排除法可能会导致不正确的结果......好吧,至少,关于这个问题的误解被表达出来了,只有这个清单的作者可以回答。

 
tol64: 而一般来说,如果一些付费节目在演示模式下没有时间限制,有这样的选项也是不错的。因为可以有一些选项,即使不买也可以为自己的程序带来很大的利润。)))
而你直接向服务台提出这个建议。在同一时间,发现事情的真实情况 :)
 
Yedelkin:

我不太清楚你如何确定 "EA有时会停止工作"。也许,它只是开始了一个无尽的循环。日志是空的,但专家顾问却在不停地工作。也可能是其他一些特殊性被触发了。

没有循环。它经常开仓,一天10-20次,当我在图表上看到指标信号,但EA没有开仓,这意味着它没有工作。我重新启动终端,它又工作了。
 
G001 当我在图表上看到指标信号,但专家顾问没有开仓,这意味着它没有工作。

这就越来越接近主题了。因此,结果是你的EA停止对指标信号做出反应?但这并不意味着该EA "不起作用"。也许,它仍然有效,但不是以作者意图的方式。

试着设置一个定时器,比如说,10分钟。并打印出 所有对你的专家顾问有意义的指数。看看这些数字是否随时间变化。如果在这种情况下日志也是空的,你肯定应该带着代码的副本去找服务台。

增加。或者这里有另一个想法。你的代码中有一个地方有条件,如if,在触发后必须发送交易请求。试着打印这个条件的触发/不触发的情况,比如说。

if ()
  {
   ... 
   Print("Сработало условие такое-то, время такое-то");
  }
else
  {
   ...
   Print("Не сработало условие такое-то, время такое-то");
  }
 
谢谢你。问题不太可能出在EA上,否则重启终端的规则就不会一直有效。另外,在MT4中,一些经纪商也存在这个问题。我只需要在它停止工作时以编程方式检查,以便在下一个信号之前重新启动。添加了印刷品和评论。